汇编程序成绩排序的实现

汇编程序 成绩排序的实现

【任务】

  在数据区,给出了学生人数及汇编语言课程的成绩,请将成绩排序并保存在原数据区。

  下面给出部分代码,要求完成排序子程序。

  程序中给出的数据段,包括20位同学的成绩,每名同学的数据占1字节。

参考程序段:

assume cs:cseg, ds:dseg, ss:sseg

sseg segment stack

dw 100H dup (?)

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:[0]

mov ch, 0 ;cx中存储要排序数的个数

mov bx, 1 ;要排序数的起始偏移地址

call sort

mov ax, 4c00h

int 21h

;子程序名:sort

;功 能:对从(DS):(bx)开始的(cx)个字节排序

;入口参数:(DS):(BX)保存数据的起始地址

; (cx)中是要排序的数据个数

;出口参数:无

sort proc

;这儿写子程序

sort endp

cseg ends

end start

【参考解答】

assume cs:cseg, ds:dseg, ss:sseg

sseg segment stack

dw 100H dup (?)

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:[0]

mov ch, 0 ;cx中存储要排序数的个数

mov bx, 1 ;要排序数的起始偏移地址

call sort

mov ax, 4c00h

int 21h

sort proc

push si

push ax

dec cx ;外层循环次数为数据个数减1

c1: ;排序的外层循环

push cx

mov si, bx

c2: ;排序的内层循环

mov al, [si]

cmp al, [si+1]

jbe noswap

mov ah, [si+1]

mov [si+1], al

mov [si], ah

noswap: inc si

loop c2

pop cx

loop c1

pop ax

pop si

ret

sort endp

cseg ends

end start

以上是 汇编程序成绩排序的实现 的全部内容, 来源链接: utcz.com/z/346127.html

回到顶部