标签:提示 比较 offset 10个 star set 运行 segment 初始化
掌握分支结合循环程序设计的结构和设计方法。
编程:
根据成绩数组cj中保存的10个学生的成绩,统计相应学生的名次并填入名次数组mc中(提示:一个学生的名次等于成绩高于该学生的人数加1)。
测试用数据:学生成绩数组:46、68、88、87、76、89、99、65、100、80
结果应该为:10、……、1、?
data segment
cj db 46,68,88,87,76,89,99,65,100,80
mc db 10 dup(1) ;都初始化为第1名
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov bx,offset cj
mov si,offset mc
mov bp,bx ;用bp保存成绩首地址
mov cx,10
lop1:mov dx,cx ;外层循环,保护cx值 ;循环比较,成绩低于他人下降1名,否则不变
mov cx,10
mov ah,[bx]
lop2:mov di,10 ;内层循环,依次与10个人比较
sub di,cx
cmp ah,ds:[bp+di]
jl down
jmp next
down:add byte ptr [si],1
next:
loop lop2
inc bx ;一轮比较结束后,都指向下一个要比较的人
inc si
mov cx,dx ;外层循环,恢复cx值
loop lop1
mov ax,4c00h
int 21h
code ends
end start
程序运行前,前十个为学生成绩,后十个为他们的名次,先设为1
程序运行后,后十个存放对应名次,依次为第10、8、4、5、7、3、2、9、1、6名
标签:提示 比较 offset 10个 star set 运行 segment 初始化
原文地址:https://www.cnblogs.com/concentricCircle/p/14878453.html