数字的奇偶性(Assembly 8086)

use*_*262 4 assembly parity x86-16

我试图给出一位数字,并知道奇偶校验是奇数还是偶数,例如,给出9并打印出奇数.

这就是我所拥有的:

   assume cs:cseg,ds:dseg,ss:sseg
    cseg segment
    start:  
    mov ax, dseg
    mov ds, ax  

    mov ah, 01h ; Here, im adding a number
    int 21h 



    jp even
    jnp odd  

    even: 
    mov ah,09
    lea dx,par
    int 21h  
    jmp exit
    odd: 
    mov ah,09
    lea dx,odd1 
    int 21h   
    jmp salir
    salir:
    mov ax,4C00h
    int 21h

    cseg ends 

    dseg segment byte         
    even Db 'Even number$'
    odd11 Db 'Odd number$'
    dseg ends  

    sseg segment stack
    db 100h dup(?)
    sseg ends

end start
Run Code Online (Sandbox Code Playgroud)

谢谢!抱歉我的英语不好.

Ale*_*hak 5

要测试数字是奇数还是偶数,请检查此数字的第0位.如果设置了bit0,则该数字为奇数.没有其他的.不要混淆PF(奇偶校验标志)和JP/JNP条件.奇偶校验标志显示在最低有效字节中设置的位数是偶数还是奇数.

来自文档:

PF(第2位)奇偶校验标志 - 如果结果的最低有效字节包含偶数个1位,则置位; 否则清除.

1号 - 奇数,00000001b PF被清除,因为只有一个位设置为
2号 - 偶数,00000010b,但PF再次被清除!因为只有一位设置
数字3 - 奇数,00000011b,但PF设置!因为设置了两个位