Ошибка Operand types do not match - Assembler
Формулировка задачи:
Добрый вечер, помогите исрпавить ошибку в 23 строчке, суть программы заключается в том что я должен сформировать код в регистре CL следющим образом три старших бита я беру из разрядов 6-4 числа numb1, два младших бита делаю еденичными, далее биты 4-2 инвертированные биты 6-4 из числа numb2, остальные биты делаю нулевые
.386
dseg segment use16
numb1 db 165
numb2 dw 654
numb3 db ?
dseg ends
cseg segment use16
assume ds:dseg, cs:cseg
;Загрузка регистров-указателей сегментов ds
m1: mov cx, dseg
mov ds, cx
mov al, numb1 ;заносим первое число в al
mov bx, numb2 ;заносим второе число в bx
and al, 011100000b ; зануляем ненужные биты в numb1, кроме трех младших
rol al, 1 ;сдвиг влево на один
or al, 00000011b
xor bx, 0000000000111000b ;инвертируем биты 6-4
and bx, 0000000000111000b ;зануляем ненужные биты в numb2, кроме 6-4
ror bx, 2
mov cl, al;
or cl, bx; складываем bx c cl
mov ds:numb3, cl ;заносим число
mov ah, 4ch
int 21h
cseg ends
end m1Решение задачи: «Ошибка Operand types do not match»
textual
Листинг программы
or cx, bx