DOS彙編練習(9)——判斷16位資料奇偶性
阿新 • • 發佈:2021-01-05
技術標籤:微機原理
例:統計AX(9898H)中1的個數,若個數為偶數,則BL=1H,若個數為奇數則BL=0H。
1.統計個數:
ASSUME CS:CODE CODE SEGMENT START: MOV AX,9898H MOV CX,16 PROG: ROL AX,1 ;每次左移1位 TEST AX,1B ;最低位與1相與 JNZ NEXT ;若為1則計數+1 JMP REGO NEXT: INC BH REGO: LOOP PROG TOEND: MOV AH,4CH INT 21H CODE ENDS END START
2.判斷奇偶性:
ASSUME CS:CODE
CODE SEGMENT
START:
MOV AX,9898H
XOR AH,AL ;奇偶標誌位置0(奇)
JPO FUZHI ;PF=0則跳
MOV BL,01H
JMP TOEND
FUZHI:
MOV BL,00H
TOEND:
MOV AH,4CH
INT 21H
CODE ENDS
END START
綜合:
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AX,9898H
PUSH AX
MOV CX,16
XOR AH,AL ; 奇偶標誌位置0(奇)
JPO FUZHI ;PF=0則跳
MOV BL,01H
JMP LOAD
FUZHI:
MOV BL,00H
LOAD:
POP AX
PROG:
ROL AX,1
TEST AX,1B
JNZ NEXT
JMP REGO
NEXT:
INC BH
REGO:
LOOP PROG
TOEND:
MOV AH,4CH
INT 21H
CODE ENDS
END START
若將資料改為7000H(0111 0000 0000 0000B)
則1的個數有3個,BH=3,為奇數個,BL置0,BX=30.