1. 程式人生 > 其它 >DOS彙編練習(9)——判斷16位資料奇偶性

DOS彙編練習(9)——判斷16位資料奇偶性

技術標籤:微機原理

例:統計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.