Вопрос № 159359: Уважаемые эксперты у меня такой вопрос нужно определить содержимое аккумулятора после выполнения команд (два шестнадцатеричных символа) MOV B,# N MOV A,# M ADD A, B DA A С ассемблером я практически не знаком. Буду признателен за ...
Вопрос № 159.359
Уважаемые эксперты у меня такой вопрос нужно определить содержимое аккумулятора после выполнения команд (два шестнадцатеричных символа) MOV B,# N MOV A,# M ADD A, B DA A С ассемблером я практически не знаком. Буду признателен за любую помощь. В приложении описано как мне подсказали его делать но что то я не понимаю всей этой каши.
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Дерменжи Александр Георгиевич! Вся суть задания в понимании 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
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Профессионал) Украина, Кировоград ICQ: 234137952 ---- Ответ отправлен: 02.02.2009, 00:34
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 242690 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.