法槌座 發表於 2020-2-9 15:42:36

汇编程序成绩排序的实现

<p>汇编程序 成绩排序的实现<br />
</p>
<p>【任务】 <br />
  在数据区,给出了学生人数及汇编语言课程的成绩,请将成绩排序并保存在原数据区。 <br />
  下面给出部分代码,要求完成排序子程序。 <br />
  程序中给出的数据段,包括20位同学的成绩,每名同学的数据占1字节。 <br />
</p>
<p>参考程序段:</p>
<div class="jb51code">
<pre class="brush:plain;">
assume cs:cseg, ds:dseg, ss:sseg
sseg segment stack
dw 100H dup (&#63;)
sseg ends
dseg segment
db 20
db 98,61,57,82,89,73,61,58,53,54
db 84,78,70,64,84,63,76,84,83,86
dseg ends
cseg segment
start: mov ax, dseg
   mov ds, ax
   mov cl, ds:
   mov ch, 0   ;cx中存储要排序数的个数
   mov bx, 1   ;要排序数的起始偏移地址
   call sort

   mov ax, 4c00h
   int21h
;子程序名:sort
;功能:对从(DS):(bx)开始的(cx)个字节排序
;入口参数:(DS):(BX)保存数据的起始地址
;    (cx)中是要排序的数据个数
;出口参数:无
sort proc
   ;这儿写子程序
sort endp

cseg ends
end start
</pre>
</div>
<p></p>
<p>【参考解答】</p>
<div class="jb51code">
<pre class="brush:plain;">
assume cs:cseg, ds:dseg, ss:sseg
sseg segment stack
dw 100H dup (&#63;)
sseg ends
dseg segment
db 20
db 98,61,57,82,89,73,61,58,53,54
db 84,78,70,64,84,63,76,84,83,86
dseg ends
cseg segment
start: mov ax, dseg
   mov ds, ax
   mov cl, ds:
   mov ch, 0   ;cx中存储要排序数的个数
   mov bx, 1   ;要排序数的起始偏移地址
   call sort

   mov ax, 4c00h
   int21h

sort proc
   push si
   push ax
   dec cx   ;外层循环次数为数据个数减1
c1:      ;排序的外层循环
   push cx   
   mov si, bx
c2:      ;排序的内层循环
   mov al,
   cmp al,
   jbe noswap
   mov ah,
   mov , al
   mov , ah
noswap: inc si
   loop c2
   pop cx
   loop c1

   pop ax
   pop si
   ret
sort endp

cseg ends
end start
</pre>
</div>
<p>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持琼殿技术社区。</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>汇编实现直接插入排序的方法示例</li><li>汇编实现简单选择排序的方法示例</li><li>汇编实现冒泡排序的方法示例</li><li>汇编语言 输入10个数排序并输出的实现</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: 汇编程序成绩排序的实现