Мне также пришлось запрограммировать этот бит в обратном порядке для университета (для 8 бит). Вот как я это сделал:
MOV AL, 10001011B ;set the value to test
MOV CL, 7
MOV DH, 1
MOV DL, 0
loop1: PUSH AX
AND AL, DH
PUSH CX
MOV CL, DL
SHR AL, CL
POP CX
MOV BH, AL
SHL BH,CL
OR CH,BH
DEC CL
INC DL
SHL DH, 1
POP AX
CMP DL, 8
JE END
JMP LOOP1
END:
Я не прокомментировал это, вот как это работает:
DH - это 1
, который перемещается в байте, как в первый раз: 00000001
; второй раз 00000010
и так далее. Когда вы делаете AND
с AL, вы получаете 0
или что-то вроде 100
или 10000
, вам нужно сдвинуть его вправо, чтобы получить 0
или 1
.
Затем поместите его в ЧД и переместите в нужную позицию, которая равна 7
для байта 0
, 6
для байта 1
и так далее. Затем OR
до нашего окончательного результата и INC
и DEC
, что необходимо. Не забудьте условные переходы и выведите AX
для следующего цикла:)
Результат будет в канале.