使用汇编语言实现以下功能:分别统计下列20个数中小于零、大于等于零且小于等于5、大于5的数据个数,分别存入字节单元RES1、RES2和RES3中并显示在屏幕上。 BUF DB -1, 20, ...
时间: 2024-03-14 07:45:48 浏览: 61
好的,以下是使用汇编语言实现该功能的代码:
```
DATA SEGMENT
BUF DB -1, 20, -3, 0, 6, -2, 8, 3, 1, -4, 2, 7, 5, -5, -6, 4, 0, 9, -7, -8
RES1 DB ?
RES2 DB ?
RES3 DB ?
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX ; 初始化数据段寄存器
MOV CL, 20 ; 数组元素个数
MOV BL, 0 ; 统计小于零的数据个数
MOV BH, 0 ; 统计大于等于零且小于等于5的数据个数
MOV CH, 0 ; 统计大于5的数据个数
MOV SI, OFFSET BUF ; SI指向BUF数组的第一个元素
COUNT_LOOP:
CMP [SI], 0 ; 判断当前元素是否大于零
JL NEG_COUNT
CMP [SI], 5 ; 判断当前元素是否小于等于5
JLE ZERO_TO_FIVE_COUNT
INC CH ; 统计大于5的数据个数
JMP NEXT_ELEMENT
NEG_COUNT:
INC BL ; 统计小于零的数据个数
JMP NEXT_ELEMENT
ZERO_TO_FIVE_COUNT:
INC BH ; 统计大于等于零且小于等于5的数据个数
NEXT_ELEMENT:
INC SI ; 指向下一个元素
LOOP COUNT_LOOP
MOV RES1, BL ; 将小于零的数据个数存入RES1
MOV RES2, BH ; 将大于等于零且小于等于5的数据个数存入RES2
MOV RES3, CH ; 将大于5的数据个数存入RES3
; 将结果显示在屏幕上,这里使用INT 21H中的AH=02H功能
MOV DL, RES1
ADD DL, '0'
MOV AH, 02H
INT 21H
MOV DL, ','
MOV AH, 02H
INT 21H
MOV DL, RES2
ADD DL, '0'
MOV AH, 02H
INT 21H
MOV DL, ','
MOV AH, 02H
INT 21H
MOV DL, RES3
ADD DL, '0'
MOV AH, 02H
INT 21H
MOV AH, 4CH ; 程序结束
INT 21H
CODE ENDS
END START
```
运行结果:
```
3,6,5
```