栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 汇编语言

汇编程序成绩排序的实现

汇编语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

汇编程序成绩排序的实现

汇编程序 成绩排序的实现

【任务】
  在数据区,给出了学生人数及汇编语言课程的成绩,请将成绩排序并保存在原数据区。
  下面给出部分代码,要求完成排序子程序。
  程序中给出的数据段,包括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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/168646.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号