Ich habe einige Nummern in AH, AL, BL und BH Register. Ich muss prüfen, ob es mindestens ein 0 Bit in jeder der Register in hohen Nibble der Nummer gibt. Wenn ja, dann setze in die Variable überprüfen 10, sonst -10.Nach dem ersten Null-Bit suchen (Assembly)?
Hier ist, was ich versucht:
org 100h
check dw 0
mov ah, 11011111b
mov al, 11011111b
mov bl, 11011111b
mov bh, 11011111b
mov check, 10
and ax, 0F0F0h
cmp ax, 0F0F0h
je no_all_zeros
and bx, 0F0F0h
cmp bx, 0F0F0h
jne has_zeros
no_all_zeros:
mov check, -10
has_zeros:
ret
Bei 8086 ist 16 Bit, und er will die linke Hälfte (oben knabbern, nehme ich an), so würde er auf 'und' mit 0xFF00 nicht brauchen, nicht (?) 0xFF? –
Zuerst möchte ich nicht die Werte in den Registern ersetzen, also nehme ich an, es sollte TEST sein. Ein anderer Punkt ist, dass dies Unterregister sind. In 8086 sind sie 8 Bit. Also sollte es 0xF0 nein sein (in Anbetracht dessen, dass ich nur die linke Hälfte der Zahlen scannen muss - linke 4 Bits)? –