Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: i8080/8085/KP580
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
SeREGaGLaZ
1 / 1 / 2
Регистрация: 18.10.2013
Сообщений: 38
1

Умножение 2 восьмиразярдных чисел, младшими разрядами вперед

21.03.2017, 18:58. Просмотров 622. Ответов 5

Добрый день, мне необходимо реализовать программу: умножить два восьмиразрядных числа младшими разрядами вперед.

Программу написал, она работает, но только в тех случаях когда значение произведения умещается в один регистр 201, например (13 на 11), там регистр 200 пустой, а регистр 201 содержит значения произведения.

Если же умножать скажем 31 на 33 то регистр 200 остается пустым, а регистр 201 содержит вообще непонятно что.

Уважаемые форумчане, подскажите пожалуйста где тут может быть ошибка? Заранее огромное спасибо!


Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
SUB A
LXI B
B2
B3
MVI D 
B2
MVI E
B2       // ввели 2 множителя
 
MVI H
B2      // ввели счетчик
 
STC
CMC   // установка флага С = 0
 
MOV A, D
RAR
MOV D, A // сдвиг множимого 
 
JNC
B2
B3  // условный переход по С
 
MOV A, B
ADD E
MOV B, A
MOV A, B    // суммирование регистров суммы и А
 
STC
CMC
 
RAR
MOV B, A
MOV A, C
RAR
MOV C, A  // сдвиг
 
DCR H    // уменьшаем счетчик
 
JNZ
B2
B3   // условный переход по Z
 
MOV A, B // сохраняем регистр суммы по адресам 200 и 201
STA
B2
B3
MOV A, C
STA
B2
B3
HLT
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2017, 18:58
Ответы с готовыми решениями:

В массиве определить количество чисел с установленными старшими младшими разрядами
здравствуйте! вот задача: в массиве целых 32х разрядных чисел определить кол-во чисел с...

Подсчёт чисел с K разрядами, установленными в "0". Объяснить условие
Определить количество чисел, состоящих из n десятичных разрядов ( n - натуральное число, <=10), у...

Работа с разрядами
Ребят, помогите, пожалуйста, не могу найти через какой оператор работать с разрядами, дана такая...

Умножение чисел
Здравствуйте! Есть программа, которая берет введенное в консоль число и множит его на 2. .686 ...

умножение чисел
помогите пожалуйста обьясните как через debug можно умножить 4 раза число fe тоесть fe*fe=fc04...

5
pyzhman
791 / 485 / 66
Регистрация: 15.05.2012
Сообщений: 2,749
21.03.2017, 21:28 2
Assembler
1
2
3
4
5
6
MVI D 
B2
...
JNC
B2
B3
Разрисуйте в строку, невозможно прочесть. И с указанием меток. Куда отсылается по адресу - совершенно не понятно. И с какого адреса программа начинается?

Добавлено через 1 минуту
Assembler
1
2
3
4
5
6
7
8
MOV A, B // сохраняем регистр суммы по адресам 200 и 201
STA
B2
B3
MOV A, C
STA
B2
B3
Здесь вы в одну и ту же ячейку сохраняете.

Добавлено через 45 секунд
Assembler
1
2
3
JNZ
B2
B3   // условный переход по Z
Мама дорогая! Вы на нее ещё и прыгаете.

Добавлено через 1 минуту
Сдаётся мне программа нерабочая в корне. Приведите задание препода полностью как оно есть.

Добавлено через 30 секунд
Всё, спать.
0
SeREGaGLaZ
1 / 1 / 2
Регистрация: 18.10.2013
Сообщений: 38
25.03.2017, 22:01  [ТС] 3
Мне необходимо реализовать умножение двух восьмеричных чисел, младшими разрядами вперед. Задание звучит именно так, и данная программа справляется, но с небольшими значениями, с большими уже - нет. Хотел как раз спросить почему, сижу и никак не могу разобраться.
0
pyzhman
791 / 485 / 66
Регистрация: 15.05.2012
Сообщений: 2,749
26.03.2017, 20:16 4
Цитата Сообщение от SeREGaGLaZ Посмотреть сообщение
данная программа справляется
Объясните мне, пожалуйста, как это работает: ?
Assembler
1
2
3
4
5
6
7
8
STC
CMC   // установка флага С = 0 (здесь, кстати, флаг сбрасывается)
 
...
 
JNC
B2
B3
с учетом того, что перед этим выполняется
Assembler
1
2
3
LXI B
B2
B3
0
SeREGaGLaZ
1 / 1 / 2
Регистрация: 18.10.2013
Сообщений: 38
29.03.2017, 03:59  [ТС] 5
Вероятно я был некорректен.
Вот, я оформил в виде таблицы с кодом команд.
(здесь определены В2 и В3)
все команды в восьмеричном коде (именно так на наших процессорах их нужно забивать)
0
Миниатюры
Умножение 2 восьмиразярдных чисел, младшими разрядами вперед  
pyzhman
791 / 485 / 66
Регистрация: 15.05.2012
Сообщений: 2,749
29.03.2017, 10:03 6
Цитата Сообщение от SeREGaGLaZ Посмотреть сообщение
(13 на 11), там регистр 200 пустой, а регистр 201 содержит значения произведения
Да, только регистр 201 содержит совсем не произведение (проверено в VASM).

Добавлено через 4 минуты
Рекомендую прочесть Фрунзе Микроконтроллеры? Это же просто! том 3 со страницы 30 "Умножение двоичных чисел."
1
29.03.2017, 10:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2017, 10:03

Умножение чисел
Умножать 33*29*25*21...n и так до заданного с клавиатуры числа.

Умножение чисел
Доброго времени суток! Помогите в таком вопросе, кому не сложно: Привести программу умножения...

Умножение чисел
Получаю числа c формы: <p><label for="name" id="result"></label></p> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru