У меня есть некоторые цифры в AH, AL, BL и BH регистры. Мне нужно проверить, есть ли хотя бы один 0 бит в каждого регистра в высокий nibble из числа. Если есть, то введите в переменную check 10, в противном случае -10.Сканировать первый бит нуля (сборка)?
Вот что я пробовал:
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
Учитывая 8086 16 бит, и он хочет, чтобы левая половина (верхняя грызть, я предполагаю), что он не должен 'and' с 0xFF00, а не (?) 0xFF? –
Прежде всего, я не хочу заменять значения в регистрах, поэтому я предполагаю, что это должен быть ТЕСТ. Другое дело, что это субрегистры. В 8086 году они 8 бит. Так что это должно быть 0xF0 нет (учитывая, что мне нужно сканировать только левую половину чисел - левые 4 бита)? –