Асамблер! Сдвинуть трибайтне число, расположенное по адресу [100h] влево до первого единичного бита
первого единичного бита
Ну это вообще сказка
Вкусне сочне пяни?
Теперь по делу:в чём,собственно,проблема?Команду сдвига знаешь?Адресацию и хранение данных знаешь?Не вижу проблемы
Код:
@@1:
test [byte Digit],10000000b ;Проверяем старший разряд
jnz ShiftOk ;Единица обнаружена, сдвиг окончен
clc ;Если ноль, то сбрасываем признак переноса,
;что-бы не портить младший бит
rcl [byte Digit+2],1 ;и двигаем число, начиная со старшего байта влево через перенос
rcl [byte Digit+1],1
rcl [byte Digit+0],1
jmp @@1
ShiftOk:
test [byte Digit],10000000b ;Проверяем старший разряд
jnz ShiftOk ;Единица обнаружена, сдвиг окончен
clc ;Если ноль, то сбрасываем признак переноса,
;что-бы не портить младший бит
rcl [byte Digit+2],1 ;и двигаем число, начиная со старшего байта влево через перенос
rcl [byte Digit+1],1
rcl [byte Digit+0],1
jmp @@1
ShiftOk:
Код:
dataseg
Digit db 024h ;Это собственно 3-х байтовое число
db 05fh
db 0abh
Digit db 024h ;Это собственно 3-х байтовое число
db 05fh
db 0abh
А зачем проверять битовыми операциями?JC же есть для проверки флага,который устанавливает операция циклического сдвига