例6.10 分类统计字数组data中正数、负数和零的个数,并分别存入内存字变量PositiveNegativeZero中,数组元素个数保存在其第一个字中。

解:
DATA1 SEGMENT
data DW 10
DW 2130, -43, 31, -321, -1234, 345, 0, 3213, 0, 5477
Positive DW 0
Negative DW 0
Zero DW 0
DATA1 ENDS
CODE1 SEGMENT
ASSUME CS:CODE1, DS:DATA1
START: MOV AX, DATA1
MOV DS, AX
XOR AX, AX ;用AX来对正数计数
XOR BX, BX ;用BX来对负数计数
XOR DX, DX ;用DX来对零计数
MOV CX, data ;用CX来进行循环计数
JCXZ save ;考虑数组的元素个数为0的情况
LEA SI, data+2 ;用指针SI来访问整个数组
again: CMP word ptr [SI], 0
JL lower
JE equal
INC AX
JMP loop1
lower: INC BX
JMP loop1
equal: INC DX
loop1: ADD SI, 2
LOOP again
save: MOV Positive, AX ;把各类的统计数保存到内存单元中
MOV Negative, BX
MOV Zero, DX
MOV AX, 4C00H
INT 21H
CODE1 ENDS
END

关 闭