ASSUME CS:CODE, DS:DATA
DATA SEGMENT
NUM DB 9, -1, -2, 8, 123, 17, -23, -78, -56 ;5個負數
LEN EQU $ - NUM
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
SUB BX, BX
LEA SI, NUM
MOV CX, LEN
LP:TEST BYTE PTR [SI], 80H ;讓[SI]中的數的符號位和1000 0000B相與,如果結果不是0,那麼代表是負數,反之,正數
JZ OVER ;結果為0,跳轉到OVER
INC BX ;不為0, BX加1, BX在這裡是記錄負數的個數的
OVER:INC SI
LOOP LP
MOV AX,4C00H
INT 21H
CODE ENDS
END START
效果圖
PS:若有不明白的地方, 可以追問
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
NUM DB 9, -1, -2, 8, 123, 17, -23, -78, -56 ;5個負數
LEN EQU $ - NUM
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
SUB BX, BX
LEA SI, NUM
MOV CX, LEN
LP:TEST BYTE PTR [SI], 80H ;讓[SI]中的數的符號位和1000 0000B相與,如果結果不是0,那麼代表是負數,反之,正數
JZ OVER ;結果為0,跳轉到OVER
INC BX ;不為0, BX加1, BX在這裡是記錄負數的個數的
OVER:INC SI
LOOP LP
MOV AX,4C00H
INT 21H
CODE ENDS
END START
效果圖
PS:若有不明白的地方, 可以追問