Как возвести 7,11,14,15 биты в 1, ассемблер (8086)?

В общем-то сижу и не получается правильно это сделать. Вот код:

stk segment 'stack'
Db 128 dup (?)
dan segment 'data'
maska1 dw 1100100010000000b
P dw ?
X dw -3
r db 1
dan ends
Cd segment 'code'
Assume cs:cd,ds:dan,ss:stk
start:
mov ax,dan
mov ds,ax
;---------
mov ax,x
cmp ax,-3
jg inv
cmp ax,-3
jl inv
;-----------
mov al,r
mov ah,3
imul ah ;ax=3r
mov bx,ax
mov al,1
mov ah,r
imul ah
add bx,ax
mov p,bx
jmp konec
;-----------вот дальше у меня заминка
inv:
mov cx,maska1
mov ax,x
cbw
 and ax,cx
mov x,ax 

;-----------
konec:
mov ah,4ch
int 21h
cd ends
end start
  • Вопрос задан
  • 2832 просмотра
Решения вопроса 1
egor_nullptr
@egor_nullptr
and на or замените. and оставляет отмеченные в маске биты неизменными, остальные обнуляет, or переводит отмеченные в 1 остальные оставляет неизменными.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы