Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение pyzhman »

Мама дорогая! Это еще не кончилось! :shock:
Docendo discimus
Аватара пользователя
Lina_Inverse
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт апр 12, 2012 20:01:26
Откуда: Муром

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение Lina_Inverse »

и не кончится, наверно) мне еще на 51 и 48 надо решить :))
-А есть аудиокниги по схемотехнике?
- Нет, наверно. Но ты попроси какую-нибудь девушку прочитать..так, эротичным голосом.
petrenko
Друг Кота
Сообщения: 5321
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий
Контактная информация:

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение petrenko »

Для 8048 перведите с мовы=http://radiokot.ru/forum/viewtopic.php?p=1235815#p1235815 :)
на ассемблер 48-го (при этом не забудьте что там регистры по другому обзываются и пересылать в два регистра надо двумя командами, их можно логически для наглядности в одну МАКРО )
Для 8051 будет проще - он работает с отдельными битами и в его системе комманд есть MUL и DIV . Но напомню, что умножать например на 4 лучше сдвигом (а тем паче на 2 ).
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15547
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение BOB51 »

библиотека в городе есть? :shock:

Токхейм Р.
Основы цифровой электроники:
Пер. с англ.-М.: Мир,1988.

Токхайм Р.
Микропроцессоры: Курс и упражнения
Пер. с англ., под ред. В.Н. Грасевича.
М.: Энергоатомиздат, 1988.

Дао Л.
Программирование микропроцессора 8088:
Пер. с англ.-М.:Мир, 1988

СверхБИС универсальных однокристалльных микро-ЭВМ
А.В.Кобылинский, Г.П.Липовецкий, Н.Г.Сабадаш и др.
-К.:Технiка,1987.

Сташин В.В. и др.
Проектирование цифровых устройств на однокристальных микроконтроллерах.
/В.В. Сташин, А.В. Урусов, О.Ф. Мологонцева. -М.:Энергоатомиздат, 1990.

Тищенко В.Г., Тищенко Г.В.
МикроЭВМ - своими руками.
-К.: Рад.шк.,1989.

после прочтения обращайтесь :beer:
petrenko
Друг Кота
Сообщения: 5321
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий
Контактная информация:

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение petrenko »

Это мы долго будем ждать, пока обратится, даже после пролистывания.
Вот постом ниже обращается, стало быть все книги хотя бы просмотрены. Молодчина !
Приобретайте знания, они могут и пригодиться (иногда бывает) .
Последний раз редактировалось petrenko Чт апр 26, 2012 22:23:31, всего редактировалось 1 раз.
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Аватара пользователя
Lina_Inverse
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт апр 12, 2012 20:01:26
Откуда: Муром

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение Lina_Inverse »

я нашла программу перевода с маской, только там однобайтовое число...а как её сделать под двухбайтное?
Только вот не могу её вывесить здесь... а так взята в книге Левенталь Л.Программирование на языке ассемблера для микропроцессоров 8080 и 8085.1987 стр. 142-143
-А есть аудиокниги по схемотехнике?
- Нет, наверно. Но ты попроси какую-нибудь девушку прочитать..так, эротичным голосом.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15547
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение BOB51 »

ну и студент пошел... :cry:
сколько раз нужно одно и то же повторять, чтоб дошло наконец?
есть два пути преобразования:
более сложный деление исходных данных на 10 -
но здесь операция деления и потребность десятичной коррекции результата

более простой - вычитание из исходных данных
числа 10(двоичный эквивалент 0х000A) и подсчет числа вычитаний
но тут также требуется десятичная коррекция промежуточных данных результата
модификацией этого метода является исходник, который я выложил
download/file.php?id=103990
суть заключается в "ступенчатом" вычитании из исходных данных сначала
десятков тысяч (10000d=0x2710) c подсчетом их количества в регистре
результата х10000,
затем тысяч (1000d=0x03E8) c подсчетом их количества в регистре
результата х1000,
затем сотен (100d=0x0064) c подсчетом их количества в регистре
результата х100,
затем сотен (10d=0x000A) c подсчетом их количества в регистре
результата х10,
и в остатке у нас единицы
- их поместим в регистр результата х1
преимущество - простые операции (только двухбайтовое вычитание/сложение)
с количеством проходов в каждой ступени не более 10,
отсутствие десятичной коррекции результата
(иногда мерещатся "маски" - но это есть константы)
обратное преобразование:
разбиваем исходное упакованное двоично-десятичное на тетрады и
размещаем соответственно в регистрах задатчика
65536 ---> х10000 = 0х06
х1000 = 0х05
х100 = 0х05
х10 = 0х03
а 0х0006 сразу помещаем в накопитель результата
затем
прибавить к накопителю 10d=0x000A количество раз, указанное в х10
прибавить к накопителю 100d=0x0064 количество раз, указанное в х100
прибавить к накопителю 1000d=0x03E8 количество раз, указанное в х1000
прибавить к накопителю 10000d=0x2710 количество раз, указанное в х10000
ну и вариаций с размещением данных также немерянно - и в регистрах и в ячейках ОЗУ и в стеке...
о других способах пока умолчимм... ибо деление/умонжение
это дополнительно вращение и сдвиги о которых у студента понятие ...
(весной мозги не туда ушли) :facepalm:
Аватара пользователя
Lina_Inverse
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт апр 12, 2012 20:01:26
Откуда: Муром

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение Lina_Inverse »

Дело не в весне, а в одной простой вещи: информатика вообще не была прочитана преподом как курс, а ассемблер - простые задачи понятны, но более сложные - никак. да и объяснять никто не собирается (я про инст). Так что, баги не только с ассемблером, а в программировании вообще (сейчас еще и С++ проходим, так это тоже темный лес, пишем какую-то непонятную для нашей группы хрень :-( ). У меня вот душа вообще к этому не лежит, как говорится - не дано.
-А есть аудиокниги по схемотехнике?
- Нет, наверно. Но ты попроси какую-нибудь девушку прочитать..так, эротичным голосом.
Аватара пользователя
Lina_Inverse
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт апр 12, 2012 20:01:26
Откуда: Муром

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение Lina_Inverse »

Дяденьки, не ругайтесь, пожалуйста... это не весна, заверяю((
-А есть аудиокниги по схемотехнике?
- Нет, наверно. Но ты попроси какую-нибудь девушку прочитать..так, эротичным голосом.
Аватара пользователя
IM1
Грызет канифоль
Сообщения: 268
Зарегистрирован: Вт фев 16, 2010 12:10:38
Откуда: Воронеж, Россия

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение IM1 »

Lina_Inverse писал(а):нам препод объяснял про вычитание единички из чего-то там...объяснял себе под нос. да и не понятно. про вёдра даже говорил, типа из одного вычитаем имиеющиеся камушки и кадаем в другое :)) ток тоже что-то мутно... короч, он от нас убежал. ему по фиг, мы - студенты, должны сами всё изучать..а никак. объяснить некому.
Эх бедный "препод."
Правильно он говорил. Представьте, что в одном ведре лежит некое двухбайтное двоично-десятичное число камушков, например 1234 штук.
Самый простой способ решения:
это вычитать камушки из "десятичного ведра" по одному естественно, по правилам десятичной арифметики и кидать их в другое "двоичное ведро" суммируя уже по правилам двоичной (булевой) арифметики.
Единственная беда, что команда десятичной коррекции (da a), что в 80, что 51 серии работает только после команды сложения.
Поэтому поступим чуть по другому, зная, что полное десятичное ведро есть 10000, больше в 2 байта не помещается (0000 + с).
Будем заполнять ведро до упора (до 10000), а затем вычтем из 10000 содержимое "двоичного ведра" по двоичным правилам и получим двоичный эквивалент нашего исходного двоично-десятичного.
Пишу для 51 серии, т.к. не на чем проверить 80. Если только попозже...
Здесь команды самые простые и легко перейти на 80-ку или пусть более продвинутые "дяденьки" помогут.
Вроде все разжевал.

Код: Выделить всё

org 0
   jmp      start


start:
   mov    dptr, #1234h      ; помещаем 1234 в dptr временно, можно любое от 0 до 9999
   mov      r3, #0               ; обнуляем
   mov      r2, #0             ; аналогично чистим, чтобы "ведерко" было пустым
cykl:
; *** здесь мы добавляем единичку по правилам двоичной арифметики к 2х байтному числу r3 (старший байт) r2 ( камушки добавляем в 1 ведро)***
   mov    a, r2             ; мл. байт числа в аккумулятор
   add    a, #1            ; прибавляем единичку, перенос игнорируем
   mov    r2, a             ; отправляем обратно
   mov    a, r3             ; ст. байт числа в аккумулятор
   addc    a, #0            ; прибавляем перенос, если таковой имеется
   mov    r3, a             ; отправляем обратно
; *** здесь мы добавляем единичку по правилам двоичной-десятичной арифметики к 2х байтному числу dptr,
; пока "ведро" не станет полным, т.е. 10000, т.е. реально до 0000 плюс перенос (это у нас 2-е ведро)***
   mov    a, dpl             ; мл. байт числа в аккумулятор
   add    a, #1            ; прибавляем единичку, перенос игнорируем
   da      a               ; десятичная коррекция
   mov    dpl, a             ; отправляем обратно
   mov    a, dph             ; ст. байт числа в аккумулятор
   addc    a, #0            ; прибавляем перенос, если таковой имеется
   da      a               ; десятичная коррекция
   mov    dph, a             ; отправляем обратно
   jc      dalee            ; если появился перенос, значит мы достигли 10000 и надо переходить к другой части
   jmp      cykl           ; если нет, то продолжаем заполнять двоично-десятичное ведро
; *** другая часть ***
dalee:
; *** тут уже дело техники, мы знаем объем двоично-десятичного двухбайтового ведра: 10000, мы его заполнили под завязку,
; значит число исходное вычисляется (10000-(число камушков)), которые мы накидали в двоичное ведро (ведро 1 или r3,r2),
; но уже чисто в двоичном виде и поместим его обратно в dptr для наглядности ***
   mov    dptr, #10000      ; помещаем 10000 в dptr, будем из него вычитать содержимое 1 ведра (r3,r2)
   clr      c               ; обнуляем перенос
   mov    a, dpl             ; мл. байт числа в аккумулятор
   subb    a, r2            ; вычитаем младшие байты
   mov    dpl, a             ; отправляем обратно
   mov    a, dph             ; ст. байт числа в аккумулятор
   subb    a, r3            ; вычитаем старшие байты и заем
   mov    dph, a             ; отправляем обратно

; все, у нас в dptr двоичный код числа, для 1234, это будет  04d2h,
; кто не верит, может проверить на виндовс-калькуляторе.
   nop

end

Вопросы?
Аватара пользователя
Lina_Inverse
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт апр 12, 2012 20:01:26
Откуда: Муром

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение Lina_Inverse »

Спасибки)) и про ведра тоже, наконец-то полно объяснено))) проверим чуть позже.
А сегодня этот дяденька меня обидел. Я у него курсовой делаю (он дал схему частотомера с радиорадара, надо произвести выбор элементов, разжевать всё под ГОСТ 15150, чертежи, схемы и т.д.). Я всю ночь писала, оформляла всё как надо... Приношу показывать теорию (выбор элементов, анализ ТЗ, расчеты), правда, из чертежей были только эл схема и топология. А он - У Вас менее половины курсового сделано. У других вообще, как говорится, конь не валялся, они принесли только анализ поставленной задачи, и то бред какой-то, а он им 60 процентов поставил((( ничего другого они не представили. Эх... обидно. Делаешь-делаешь, а всё равно бяка получается( трясусь за все курсовые, докапываюсь, пытаюсь не просто написать, а еще и разобраться, думаю, что бы еще по делу добавить, а никто не ценит. Зато другим за красивые глазки ставят Отлично, а мне говорят, что я купила курсач((( им - оценки автоматом за короткие юбочки, а я сдаю.. но ниче, на 5 в той сессии защитила)
-А есть аудиокниги по схемотехнике?
- Нет, наверно. Но ты попроси какую-нибудь девушку прочитать..так, эротичным голосом.
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение SmarTrunk »

Ну короткие юбочки же не запрещены :oops: так же как и глубокое декольте :oops: :oops: но желание разобраться и все сделать самой - это очень хорошо. Мы тут очень ценим всех девушек, которые разбираются в схемотехнике и/или программировании, всех двух... или даже трех!
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение YS »

Зато другим за красивые глазки ставят


Ну так Вы их тоже покрасьте. :))) Можно даже нитроэмалью - более глубокий цвет будет. :)))
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение Alexeyslav »

Если простые задачки понятны, то более сложные берутся методом черного ящика

Причем,
Главные свойства приписываются новому, условному объекту - "чёрному ящику". Все иные свойства полностью исключаются из рассмотрения, и о самом их существовании требуется забыть (наиболее трудный момент).
petrenko
Друг Кота
Сообщения: 5321
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий
Контактная информация:

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение petrenko »

to : IM1 : А почему dptr ? Я бы взял R0 R1 тогда и на 8048 можно перенести ?
А вообще вот готовенькое есть, работает и на 8051 и на 8048 вроде:
org 0
BDB: CALL DIV16
SWAP A
ORL A,R1
SWAP A
JMP EXIT
;ПОДПРГРАММА ДЕЛЕНИЯ НИЖЕ
DIV16: MOV R1,#0
SUB16: ADD A,#84H
DA A
INC R1
JC SUB16
DEC R1
ADD A,#16H
DA A
RET
EXIT: NOP
Так сойдёт ?
p51.txt
(199 байт) 216 скачиваний
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Аватара пользователя
IM1
Грызет канифоль
Сообщения: 268
Зарегистрирован: Вт фев 16, 2010 12:10:38
Откуда: Воронеж, Россия

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение IM1 »

petrenko писал(а):to : IM1 : А почему dptr ? Я бы взял R0 R1 тогда и на 8048 можно перенести ?
Да. не вопрос! Хоть r6, r7.
Просто так нагляднее при отладке и некоторое приближение к 8080, где активно используются регистровые пары BC, DE и HL.
petrenko писал(а):А вообще вот готовенькое есть, работает и на 8051 и на 8048 вроде:
Если открыть Фрунзе, то много готовенького можно увидеть и на разные темы.
Топик-стартер просила, препод ее тоже, что программа должна быть без "изысков" типа подпрограмм, макросов. Желательно на уровне двух ведер с камушками, что я и сделал.
petrenko
Друг Кота
Сообщения: 5321
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий
Контактная информация:

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение petrenko »

Какие уж изыски, всё простенько. Комментарий убрать, чтоб преп. не понял, и порядок !
Главное подойдёт и для 8051 и для 8048 , только компилировать под каждый отдельно, ибо ассемблеры похожие по мнемоникам у них, но коды разные.
Пущай изпользует программку.
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Аватара пользователя
Lina_Inverse
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт апр 12, 2012 20:01:26
Откуда: Муром

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение Lina_Inverse »

Про нитроэмаль совет, конечно, ценный))) ток на один раз прокатит - потом ресницы выпадут, ахаха)))))) юбочки короткие не катят, я вообще не люблю всё это (пафос, гламур и прочее). Я, дура такая, всё пытаюсь сама делать, вот только в этот раз так плохо вышло, пришлось вас, дяденьки, загружать своей проблемой...
Спасибо, что помогли с другими процессорами. Большое-пребольшое спасибо!!! :) осталось только вбить в эмулятор и посмотреть что и как )
-А есть аудиокниги по схемотехнике?
- Нет, наверно. Но ты попроси какую-нибудь девушку прочитать..так, эротичным голосом.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение YS »

юбочки короткие не катят, я вообще не люблю всё это (пафос, гламур и прочее).


О-о-о, а, может, Вы еще и деловые брюки любите? И в очках ходите? И Вудхауза читали? :))) Тогда мы с Вами просто созданы друг для друга!

Да, я слышал, девушки любят всякие психологические тесты. :))) Есличо, вот чеклист, можете пройти тест на совместимость со мной. :))) :)))
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
IM1
Грызет канифоль
Сообщения: 268
Зарегистрирован: Вт фев 16, 2010 12:10:38
Откуда: Воронеж, Россия

Re: Помогите, пожалуйста!!! Перевод чисел в КР580ВМ80

Сообщение IM1 »

petrenko писал(а):Так сойдёт ?
К сожалению, только сейчас внимательно посмотрел на вашу программу. ИМХО бред какой-то.
Куда помещается входное двухбайтовое двочно-десятичное число?
Где находится выходное такое же, но двоичное?

П.С.
Сделайте, будьте добры, простую задачку своей программкой:
преобразуйте 1234 dec в bin, крайне интересно посмотреть.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»