Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: i8080/8085/KP580
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/10: Рейтинг темы: голосов - 10, средняя оценка - 4.70
AlexSun
18 / 16 / 4
Регистрация: 03.11.2010
Сообщений: 169
#1

Деление двухбайтового числа на однобайтовое (i8080)

23.11.2010, 00:17. Просмотров 1776. Ответов 17
Метки нет (Все метки)

Деление двухбайтового числа 260 на однобайтовое - 2. Как?
Assembler
1
2
3
4
5
6
7
8
9
org 0800h
lxi h,260
mov a,h
rrc
mov h,a
mov a,l
rar
hlt
end
Не работает. Число 260 - 16 бит, а регистры 8 битные.
Я так понял нужно его занести в HL, потом по очереди H/2 и L/2 через A, но выходит A=-130 (баг?).
Мне нужно что бы в этом же HL потом был ответ 130. Help.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2010, 00:17
Ответы с готовыми решениями:

Возведение числа в степень, i8080
Нужно написать функции умножения и возведения числа в степень a на b....

i8080, кратность числа четырем
Здравствуйте! Нужно проверить, кратное ли число четырем. Спасибо.

Деление на 2 шестнадцатиричного числа со знаком
Дорого уважаемые программисты, возникла такая вот задачка, Необходимо...

Деление числа в ячейке ОЗУ $35D на 8
Ребят, помогите написать программу деления числа в ячейке ОЗУ $35D на 8 (сдвиг...

Умножение на микропроцессоре i8080
Всем привет. Мне нужно умножить два двоичных 64-ех разрядных числа. Подскажите,...

17
alexcoder
1558 / 703 / 146
Регистрация: 03.06.2009
Сообщений: 4,058
Завершенные тесты: 1
23.11.2010, 10:18 #2
У меня получилось так:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
org 0800h
lxi h,260
mov a,h
rrc
push psw
ani 7fh
mov b,a
pop psw
mov h,b
mov a,l
rar
mov l,a
hlt
end
1
Tronix
157 / 104 / 6
Регистрация: 22.08.2010
Сообщений: 215
23.11.2010, 15:18 #3
И все равно я никак не понимаю, как вы смогли в 8-битный регистр запихнуть число, больше чем 255?
0
AlexSun
18 / 16 / 4
Регистрация: 03.11.2010
Сообщений: 169
23.11.2010, 15:52  [ТС] #4
Цитата Сообщение от alexcoder Посмотреть сообщение
У меня получилось так:
У меня выходит A и L = -130.
Что за бред...
Цитата Сообщение от Tronix Посмотреть сообщение
И все равно я никак не понимаю, как вы смогли в 8-битный регистр запихнуть число, больше чем 255?
Наверное отладчик кривой. Посоветуйте какой-нибудь?
0
alexcoder
1558 / 703 / 146
Регистрация: 03.06.2009
Сообщений: 4,058
Завершенные тесты: 1
23.11.2010, 16:17 #5
2 Tronix.
для работы с 16-разрядными числами в 8080 8-разрядные регистры объединяются в пары BC, DE, HL
В данном случае запихнули в пару HL
2 AlexSun
Отладчик однозначно кривой, он не понимает пары регистров, да и к тому же интерпретирует все числа как знаковые.
Короче, не нашел как вставить картинку, во вложении видно, что в результате вычисления h=0 l=82
104h сдвинуть вправо на 1 бит будет 82h, а 82h = 130 dec. Это и есть правильный ответ.
А посоветовать ничего не могу. С 8080 не работаю.
0
Миниатюры
Деление двухбайтового числа на однобайтовое (i8080)  
AlexSun
18 / 16 / 4
Регистрация: 03.11.2010
Сообщений: 169
23.11.2010, 16:51  [ТС] #6
VASM?
Тоже его использую.

В регистре может быть максимум 127, а значит в регистровой паре HL может быть максимум 127*2=254.
Получается 260 туда занести нереально?
0
alexcoder
1558 / 703 / 146
Регистрация: 03.06.2009
Сообщений: 4,058
Завершенные тесты: 1
23.11.2010, 16:53 #7
НЕТ! В регистре может быть максимум 255, в регистровой паре 2^16-1=65535
0
AlexSun
18 / 16 / 4
Регистрация: 03.11.2010
Сообщений: 169
23.11.2010, 16:56  [ТС] #8
Вот что выходит.
0
Миниатюры
Деление двухбайтового числа на однобайтовое (i8080)  
alexcoder
1558 / 703 / 146
Регистрация: 03.06.2009
Сообщений: 4,058
Завершенные тесты: 1
23.11.2010, 16:58 #9
Ну, все правильно, смотрите пост №5.
0
AlexSun
18 / 16 / 4
Регистрация: 03.11.2010
Сообщений: 169
23.11.2010, 17:00  [ТС] #10
Обратите внимание на -126. 82h может быть 130 и может быть -126 (если отрицательное). Вот почему-то думает что число отрицательное.
0
alexcoder
1558 / 703 / 146
Регистрация: 03.06.2009
Сообщений: 4,058
Завершенные тесты: 1
23.11.2010, 17:02 #11
потому что корявый. Ничего не поделаешь.
0
AlexSun
18 / 16 / 4
Регистрация: 03.11.2010
Сообщений: 169
23.11.2010, 17:03  [ТС] #12
Ладно. Тогда какая разница в моем и вашем коде, кроме что у вас на 5 строчек больше?
Ответ такой же получается ведь.
0
alexcoder
1558 / 703 / 146
Регистрация: 03.06.2009
Сообщений: 4,058
Завершенные тесты: 1
23.11.2010, 17:07 #13
и в каком месте он правильный? У вас получается 8082h - это 32898
0
AlexSun
18 / 16 / 4
Регистрация: 03.11.2010
Сообщений: 169
23.11.2010, 17:20  [ТС] #14
Спасибо.

Добавлено через 11 минут
Все-таки мне кажется есть в чем-то подвох. При сдвиге образуется знак минус...
0
alexcoder
1558 / 703 / 146
Регистрация: 03.06.2009
Сообщений: 4,058
Завершенные тесты: 1
23.11.2010, 17:31 #15
минус образуется потому что старший числа бит единица.
0
AlexSun
18 / 16 / 4
Регистрация: 03.11.2010
Сообщений: 169
23.11.2010, 17:34  [ТС] #16
Ну. А нету команды которая изменит его или допишет перед ним 0?
0
alexcoder
1558 / 703 / 146
Регистрация: 03.06.2009
Сообщений: 4,058
Завершенные тесты: 1
23.11.2010, 17:36 #17
А в движок машины можно запилить дополнительный цилиндр?
0
AlexSun
18 / 16 / 4
Регистрация: 03.11.2010
Сообщений: 169
23.11.2010, 17:38  [ТС] #18
Смотря какой движок.
0
23.11.2010, 17:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2010, 17:38

Деление 8-разрядного двоичного числа на 4-разрядное двоичное число
Ребята помогите с разработкой программы деления 8-разрядного двоичного числа на...

Простой пример на эмуляторе i8080
всем добрый день! имеется небольшое арифметическое выражение 11-7*(1+9*b+15*c)...

Вычислить сумму массива i8080
Дан одномерный массив из 10 элементов x1, x2, x3..., который размещается в...


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

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

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