Я занимался кодированием на 8086 тренажере. По какой-то причине операции SHR,SHL,SAL,SAR,ROL,ROR
на нем не работают. если я напишу заявление типа
MOV AX,16
SHR AX,2
он застрянет в строке SHR AX,2
, как если бы была какая-то синтаксическая ошибка. аналогично случаю других операций сдвига и поворота.
единственный способ заставить его работать - использовать регистр CL .
когда я изменил код на
MOV AX,16
MOV CL,2
SHR AX,CL
оно выполнено, но значение AX
должно было быть 4
, вместо этого 5
.
также для этого кода
MOV AX,32
MOV CL,2
SHR AX,CL
Значение в AX
было 12
, но предполагалось, что оно будет 8
.
что здесь происходит? Я что-то не так делаю?
ПРИМЕЧАНИЕ : пожалуйста, не говорите мне использовать DIV & MUL вместо операции сдвига, потому что это становится очень сложным при использовании в больших программах.