Консультация № 183641
16.06.2011, 12:23
53.02 руб.
0 1 1
Здравствуйте! Прошу помощи в следующем вопросе: Дана двухбайтовая двоичная строка. Проинвертировать первый полубайт строки, сложить по модулю 2 со вторым полубайтом и записать на место четвертого полубайта.Прошу как можно подробнее расписать комментарии к программе. Заранее благодарен.

Обсуждение

давно
Посетитель
7438
7205
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]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа