Родились сегодня:
goldssky@yandex.ru


Лидеры рейтинга

ID: 226425

Konstantin Shvetski

Модератор

768

Россия, Северодвинск


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

342

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Академик

278

Россия, Санкт-Петербург


ID: 325460

CradleA

Мастер-Эксперт

211

Беларусь, Минск


ID: 137394

Megaloman

Мастер-Эксперт

148

Беларусь, Гомель


ID: 400815

alexleonsm

6-й класс

130


ID: 400669

epimkin

Профессионал

120


8.8.15

09.05.2021

JS: 2.8.21
CSS: 4.5.5
jQuery: 3.6.0
DataForLocalStorage: 2021-05-14 03:16:12-standard


Создание программ на языке Assembler.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

Консультация онлайн # 159359

Раздел: Assembler
Автор вопроса: Дерменжи Александр Георгиевич
Дата: 01.02.2009, 20:09 Консультация закрыта
Поступило ответов: 1

Уважаемые эксперты у меня такой вопрос нужно определить содержимое аккумулятора после выполнения команд (два шестнадцатеричных символа)
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

Лысков Игорь Витальевич

Мастер-Эксперт
02.02.2009, 00:34
Мини-форум консультации # 159359

q_id

Лысков Игорь Витальевич

Мастер-Эксперт

ID: 7438

1

= общий =    02.02.2009, 00:37

В приложении ошибочка

Шестнадцатеричные числа идут так (подряд):
0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E ...

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

неизвестный

2

= общий =    02.02.2009, 11:49

То есть как я понял в результате получим содержимое аккумулятора равное 64H в десятично-двоичном виде или 164 в десятичном?

q_id

Лысков Игорь Витальевич

Мастер-Эксперт

ID: 7438

3

= общий =    02.02.2009, 13:39

Получим две младшие цифры. Сотня уже не помещается в байт. Она в бите С, как переполнение после операции da

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

неизвестный

4

= общий =    02.02.2009, 16:54

Хотел еще вопрос задать а если начальные данные будут равны
MOV B,# 27H
MOV A,# 48H
ADD A, B ; 27H+48H
DA A ;

Получится содержимое аккумулятора = 75H
Я правильно понял?

q_id

Лысков Игорь Витальевич

Мастер-Эксперт

ID: 7438

5

= общий =    02.02.2009, 17:02

Абсолютно правильно!

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

Коцюрбенко Алексей Владимирович

Старший модератор

Рейтинг: 74

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 74

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0

Evgen aka Chuma

6-й класс

Рейтинг: 0

cain52

3-й класс

Рейтинг: 0

Kdsfofwe21

2-й класс

Рейтинг: 0