设有100h个数,编程统计正数、负数和零的个数 用汇编语言

来源:百度知道 编辑:UC知道 时间:2024/05/08 21:40:30

DSEG SEGMENT
SAVE DB 3 DUP(?)
NUM DW 100 DUP(?)
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
MOV CX,100
XOR BX,BX
XOR DX,DX
LEA SI,NUM
SUB SI,2
NEXT1: ADD SI,2
CMP [SI],0
JNZ NZ
INC BL ;存放零的个数
JMP OK
NZ: TEST [SI],8000H
JNZ N
INC DH ;存放正数的个数
JMP OK
N: INC DL ;存放负数的个数
OK: LOOP NEXT1
MOV SAVE,DH ;将结果传送到内存保存
MOV SAVE+1,DL
MOV SAVE+2,BL
MOV AH,4CH
INT 21H
CSEG ENDS
END START

先计算数的总数
然后将所有数逐个与0异或,结果为0,计数0的个数
然后将书逐个减数0,查看借位,借位为1,计数负数个数
总数减去负数就是正数的个数