下面提供了100名同学AS课成的成绩,请编程序统计其中90~100、60~89、60以下者各有多少人?并把结果连续存放到自RESUT开始的单元中。
assume cs:code,ds:data,ss:stack
data segment
buf db 85, 72, 79, 90, 79, 54, 63, 66, 83, 79, 71, 77, 77, 65, 89, 93
db 69, 96, 72, 98, 60, 78, 69, 68, 80, 65, 91, 64, 90, 90, 64, 90
db 99, 55, 84, 56, 80, 54, 55, 66, 53, 54, 83, 61, 52, 92, 66, 51
db 95, 81, 51, 100, 70, 65, 50, 74, 91, 57, 95, 66, 54, 50, 73, 59
db 78, 80, 92, 78, 89, 78, 99, 100, 82, 92, 59, 71, 74, 81, 93, 74
db 98, 57, 57, 96, 76, 79, 57, 67, 52, 84, 87, 54, 67, 72, 59, 75
db 64, 89, 77, 80
resut db 3 dup(0)
data ends
stack segment stack
db 100H dup(0)
stack ends
code segment
start:mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,100h
mov cx,offset resut-offset buf;得到数据个数
mov bx,0
mov si,0
s:mov al,[si];将第一个数据放入al
cmp al,90;然后将数据跟90比较
jae next;大于等于90则跳转到next
jmp c;比90小则跳到c
next:inc [resut];resut符号处第一个单元的数据加一
jmp z
c:cmp al,60 ;比90小在跟60比较
jae zero ;大于等于60则跳到zero
inc [resut+2] ;比60还小则在resut符号处第三个单元的数据加一
jmp z
zero:inc [resut+1] ;在resut符号处第二个单元的数据加一
z:inc si
loop s ;循环cx次
mov ax,4c00h
int 21h
code ends
end start