02.02.2009, 00:34
общий
это ответ
Здравствуйте, Дерменжи Александр Георгиевич!
Вся суть задания в понимании BCD - двоично-кодированных десятичных чисел и операций с ними
Сначала надо уяснить, что такое 16-ричные числа и BCD
Как известно, что в один байт (8 бит) можно записать два 16-ричных числа (на каждый по 4 бита)
16-ричные числа обозначаются цифрами 0-9 и буквами A-F - всего 16 знаков.
Для BCD достаточно обычных 10 цифр 0-9, которые записываются в двух полубайтах.
BCD часто используют, потому что удобно сразу видеть цифры. Но BCD имеют недостаток:
их не так просто складывать, вычитать и т.д.
Например, пусть имеем BCD = 09h (буковка h означает 16-ричное число)
Если мы прибавим 1, что получим? Уже не BCD, а двоичное число 0ah!
К счастью, есть команда, которая позволяет скорректировать результат операции сложения BCD - DA,
в результате работы которой полученное двоичное число превращается в корректное BCD - 10h
Вернемся к заданию.
Пусть, для определенности, N=9, а M=6
MOV B,# N ; в В число 9
MOV A,# M ; в А число 6
ADD A, B ; в А двоичное число 0fh
DA A ; десятичная коррекция: прибавляется 06h, что дает 15h - упакованное двоично-кодированное десятичное число
Пусть N=95h, а M=61h
Тогда после сложения
ADD A, B ; получим в А двоичное число f6h
После коррекции
DA A ; получим: прибавляется 60h = 96, что дает 56h и бит переноса С = 1, т.к. фактически мы имеем десятичное число 156
Пусть N=95h, а M=69h
Тогда после сложения
ADD A, B ; получим в А двоичное число feh
После коррекции
DA A ; получим: прибавляется 66h = 102, что дает 64h и бит переноса С = 1, т.к. фактически мы имеем десятичное число 164
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен