奇偶校验(程序集8086) [英] Parity of a number (Assembly 8086)

查看:322
本文介绍了奇偶校验(程序集8086)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Im trying to give a one digit number, and know if the parity is odd or even, for example, give 9 and print that is an odd number.

这就是我所拥有的:

   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

谢谢!对不起,我的英语不好.

Thanks! And sorry for my bad english.

推荐答案

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

To test if a number is odd or even, you check bit 0 of this number. if bit0 is set, then the number is odd. nothing else. Don't confuse PF (parity flag) and JP/JNP conditions. Parity Flag shows if the number of bits set in the least significant byte is even or odd.

摘自文档:

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

PF (bit 2) Parity flag — Set if the least-significant byte of the result contains an even number of 1 bits; cleared otherwise.

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

Number 1 - odd number, 00000001b PF is cleared because there's only one bit set
Number 2 - even number, 00000010b, but PF is cleared again! because there's only one bit set
Number 3 - odd number, 00000011b, but PF set! because there're two bits set

这篇关于奇偶校验(程序集8086)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆