2个汇编问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 11:22:18
1 比较数组array中的三个16位补码数,并根据比较结果在终端上显示如下信息
(1)如果三个数不相等显示0
(2)如果三个数有两个相等则显示1
(3)如果三个数都相等显示2

2设有10个学生成绩分别是76,69,84,90,73,88,99,63,100,80。试编制一个子程序统计60-69,70-79,80-89,90-99和100分的人数并分别存放到s6,s7,s8,s9,s10单元中

谢谢大家 回答正确,在加100分

1。采用CX做为计数器,来记录比较过程中两数相等 的次数~~~
最多能有两次``假设三个数为ABC,分区放在ARRAY的[0],[1],[2]中
CODE SEGMENT
MAIN PROC
ASSUME CS:CODE,
mov cx,0 ;CX清0
mov ax,array ;把A放到AX中
cmp ax,array[1] ;比较A和B
jz count ;如果相等,CX增加1
cmp ax,array[2] ;如果A不等於B,比较A和C
jz count ;如果AC相等,CX增加1
mov ax,array[1] ;如果AC不等,再比较BC
cmp ax,array[2]
jz count
CALL CHECK
CHECK PROC NEAR
PUSH AX
PUSH DX
cmp cx,1 ;把CX 和1比较
jg allequ ;如果比1 大,(说明是2~~),说明都相等
jl allno ;如果比1小,(说明是0~~) ,说明都不等
mov dl,31h ;31,是1 的ASCII值,下面类似
mov ah,2
int 21h
allequ:
mov dl,32h
mov ah,2
int 21h
allno:
mov dl,30h
mov ah,2
int 21h
POP DX
POP AX
RET
CHECK ENDP
count : ;CX记录相等次数~~
inc cx

2。
data segment
s db 76,69,84,90,73,88,99,63,100,80
s6 db 10,0,10 dup (?)
s7 db 10,0,1