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

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

23.11.2010, 00:17. Просмотров 1757. Ответов 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) (Assembler):

Возведение числа в степень, i8080
Нужно написать функции умножения и возведения числа в степень a на b. Умножение написал, помогите, пожалуйста, со степенью. lda 0x0027;...

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

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

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

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

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

17
alexcoder
1557 / 702 / 145
Регистрация: 03.06.2009
Сообщений: 4,029
Завершенные тесты: 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
1557 / 702 / 145
Регистрация: 03.06.2009
Сообщений: 4,029
Завершенные тесты: 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
1557 / 702 / 145
Регистрация: 03.06.2009
Сообщений: 4,029
Завершенные тесты: 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
1557 / 702 / 145
Регистрация: 03.06.2009
Сообщений: 4,029
Завершенные тесты: 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
1557 / 702 / 145
Регистрация: 03.06.2009
Сообщений: 4,029
Завершенные тесты: 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
1557 / 702 / 145
Регистрация: 03.06.2009
Сообщений: 4,029
Завершенные тесты: 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
1557 / 702 / 145
Регистрация: 03.06.2009
Сообщений: 4,029
Завершенные тесты: 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
1557 / 702 / 145
Регистрация: 03.06.2009
Сообщений: 4,029
Завершенные тесты: 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
Привет! Вот еще темы с решениями:

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

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

[i8080]Логическое выражение. не B и не D или не A.
Здравствуйте, помогите пожалуйста сделать простую задачу, если можно с комментарием: Написать программу для микропроцессора Intel 8080...

Вычисление арифметических выражений для i8080
Надо написать программу под эмулятор процессора K580ВМ80А (i8080 подобный). Выполнить вычисление арифм. выражения для чисел без знака и...


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

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

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