16.06.2011, 14:33
общий
это ответ
Здравствуйте, Посетитель - 377712!
Полубайты нумеруем следующим образом:
первый - младшие 4 бита младшего байта,
вторый - старшие 4 бита младшего байта,
третий - младшие 4 бита старшего байта,
четвертый - старшие 4 бита старшего байта.
Двоичная строка задана в программе.
Результат смотрим в отладчике.
Будут вопросы - обращайтесь в мини-форум
[code h=207];Дана двухбайтовая двоичная строка.
;Проинвертировать первый полубайт строки, сложить по модулю 2 со вторым полубайтом
;и записать на место четвертого полубайта.
.model small
.stack 100h
.data
bstring dw 1011001111100010b ;наша строка
.code
.186 ;чтобы можно было использовать команду shl al,4
main proc
mov ax, @DATA
mov ds, ax ;настроим сегмент данных
mov bx, bstring ;исходная двоичная строка
mov al, bl ;первый полубайт (старший игнорируем)
not al ;инвертируем байт
shl al, 4 ;младший стал старшим, заместо младшего нули
mov ah, bl ;второй полубайт
and ah, 0f0h ;оставляем только старшую (вторую) тетраду
xor al, ah ;складываем по модулю 2 старшую тетраду, в младшей 0
and bh, 0fh ;оставляем только третью (младшую) тетраду
or bh, al ;заместо старшей (четвертой) заносим результат пред опер
mov bstring, bx ;сохраняем на место
mov ax,4c00h ;выход в ДОС
int 21h
main endp
end main
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен