编写一个程序,统计DA WORD数据区中正数、0、负数的个数,并分别保存在NUM开始的三个单元中。 DA_WORD DW -5, -21, 0, -29, 25, 0, -26, 0, 37, -39 COUNT EQU $−DAWORD NUM DB 0 ; 正数的个数 DB 0 ; 0的个数 DB 0 ; 负数的个数
时间: 2024-01-17 22:03:33 浏览: 91
编程统计数据区中正数、零和负数的个数
5星 · 资源好评率100%
好的,这是一个简单的汇编语言程序,可以用来实现您的要求:
```
ORG 100h ; 程序入口地址
DA_WORD DW -5, -21, 0, -29, 25, 0, -26, 0, 37, -39
COUNT EQU $-DA_WORD
NUM DB 0 ; 正数的个数
DB 0 ; 0的个数
DB 0 ; 负数的个数
START:
MOV CX, COUNT ; 循环次数
MOV SI, 0 ; 数组下标清零
MOV BX, 0 ; 正数个数清零
MOV DX, 0 ; 负数个数清零
MOV AX, 0 ; 零的个数清零
LOOP:
CMP WORD [DA_WORD+SI], 0 ; 判断是否为零
JE IS_ZERO
CMP WORD [DA_WORD+SI], 0 ; 判断是否为负数
JL IS_NEGATIVE
INC BX ; 是正数,正数个数加1
JMP CONTINUE
IS_NEGATIVE:
INC DX ; 是负数,负数个数加1
JMP CONTINUE
IS_ZERO:
INC AX ; 是零,零的个数加1
CONTINUE:
ADD SI, 2 ; 数组下标加2
LOOP LOOP
MOV [NUM], BL ; 保存正数个数
MOV [NUM+1], AL ; 保存零的个数
MOV [NUM+2], DL ; 保存负数个数
MOV AH, 4CH ; 结束程序
INT 21H
```
这个程序使用了循环来遍历整个数组,使用了条件判断来判断每个数的类型,并且使用了计数器来记录每个类型的数量。最终,程序将结果保存在NUM开始的三个单元中,并且通过INT 21H中断来结束程序。
阅读全文