Ошибка 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5
Похожие ответы