奇偶校验(程序集8086) [英] Parity of a number (Assembly 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屋!