题目:1. 已知有NUM个数存放在以BUFFER为首地址的字节存储区中,试统计其中负元素的个数,要求放到COUNT单元,编写完整程序
代码:
data segment
TABLE db 74,59,88,86,95,65,88,97,64,36,
;db 74,64,37,75,47,97,78,46,89,74,
;db 66,60,53,58,77,87,45,74,99,100 ;定义成绩
NUM DW $-TABLE ;统计成绩个数
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax ;设置DS
mov cx,NUM ;设置循环次数
mov bx,OFFSET TABLE ;把TABLE的偏移地址给bx
L: mov al,[bx] ;取bx地址的内容给al
cmp al,60 ;将al与60比较
jb D ;小于60则跳转到D
cmp al,70 ;若不小于60再和70比较
jb C ;小于70则跳转到C
cmp al,90 ;若不小于70再和90比较
jb B ;小于90则跳转到B
cmp al,100 ;若不小于90再和100比较
jbe A ;小于等于100跳转到A
D: mov [bx],44h ;字符D送原成绩地址
jmp next
C: mov [bx],43h ;字符C送原成绩地址
jmp next
B: mov [bx],42h ;字符B送原成绩地址
jmp next
A: mov [bx],41h ;字符A送原成绩地址
jmp next
next: inc bx ;地址加一
loop L ;根据cx的值判断是否继续循环
inc bx ;为后面用DOS输出字符串做准备
mov [bx],24h ;将'$'送入字符串末尾,保证输出顺利结束
mov dx,OFFSET TABLE ;为清晰显示,把转化成等级后的TABLE输出
mov ah,09h
int 21h
mov ax,4ch ;结束
int 21h
code ends
end start