Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: Ассемблер i8080, семисегментные индикаторы.

  1. #1
    Member
    Регистрация
    12.01.2014
    Адрес
    г. Краснодар
    Сообщений
    122
    Благодарностей: 44
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Ассемблер i8080, семисегментные индикаторы.

    Подскажите пожалуйста, как средствами ассемблера для
    i8080 преобразовывать шестнадцатеричный код в код
    семисегментного индикатора? Что бы без использования
    всяких дополнительных дешифраторов выводить на семиэлементных
    индикаторах символы от 0 до F и любые другие. Моих "познаний"
    в ассемблере никак не хватает, что бы понять, по какому принципу
    делать алгоритм преобразования HEX to 7-LED.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для Vladimir_S
    Регистрация
    12.12.2011
    Адрес
    г. Иркутск
    Сообщений
    2,368
    Благодарностей: 746
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Elvys, Множество способов, к примеру преобразовать число 2(в аккумуляторе).
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	xxxxxxxxx.jpg 
Просмотров:	300 
Размер:	14.2 Кб 
ID:	57322  

  4. Этот пользователь поблагодарил Vladimir_S за это полезное сообщение:
    Elvys (06.06.2016)

  5. #3
    Member
    Регистрация
    12.01.2014
    Адрес
    г. Краснодар
    Сообщений
    122
    Благодарностей: 44
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я может туплю, но в данном примере метка 7-LED: это всегда адрес первой ячейки из массива db ?
    И, подлежащее преобразованию число из аккумулятора, используется как смещение для вычисления
    адреса нужного байта данных из массива db ?
    Извините, если что. Я в ассемблере очень уж начинающий.

  6. #4
    Guru Аватар для Vladimir_S
    Регистрация
    12.12.2011
    Адрес
    г. Иркутск
    Сообщений
    2,368
    Благодарностей: 746
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Elvys, Да, какое число в аккумуляторе, настолько и сдвиг по массиву.

    - - - Добавлено - - -

    Тут в адресе массива есть один подводный камень - для примера адрес 11FE, сложение с аккумулятором может завести не туда.



    Зато сам ошибся.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	ccccc.jpg 
Просмотров:	60 
Размер:	7.3 Кб 
ID:	57323   Нажмите на изображение для увеличения. 

Название:	ssssssss.jpg 
Просмотров:	59 
Размер:	7.4 Кб 
ID:	57324  

  7. Этот пользователь поблагодарил Vladimir_S за это полезное сообщение:
    Elvys (06.06.2016)

  8. #5
    Member
    Регистрация
    12.01.2014
    Адрес
    г. Краснодар
    Сообщений
    122
    Благодарностей: 44
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    У меня получилась такая процедура:

    Скрытый текст

    Код:
    	
            mvi a, 0Fh ;Преобразуемое число
    ;Программа
    	lxi b, seg
    	add c
    	mov e, a
    	mov a, b
    	adc a
    	mov d, a
    	ldax d
    ;Вывод результата
    	out .....
    ;Таблица
    seg:	db 3Fh, 06h, 5Bh, 4Fh, 66h, 6Dh, 7Dh, 07h
    	db 7Fh, 6Fh, 77h, 7Ch, 39h, 5Eh, 79h, 71h
    [свернуть]


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

    На момент готовности своего варианта процедуры "перекодировки"
    я еще не видел других вложений с кодом.
    С ними так же буду пробовать разобраться.

    Update:
    Посмотрев другие вложения, составил новый код процедуры.
    Предыдущий код оказывал влияние на флаг переноса С,
    и пришлось делать извращение, что бы его учесть.
    Новый код никак не влияет на состояние флага С, и
    при этом корректно формирует адрес обращения к
    таблице "перекодировки".

    Скрытый текст

    Код:
    	mvi a, 0Fh ;Преобразуемое число
    ;Программа
    	lxi h, 0000h
    	add l
    	mov l, a
    	lxi d, seg
    	dad d
    	xchg
    	ldax d
    ;Вывод результата
    	out .....
    ;Таблица
    seg:	db 3Fh, 06h, 5Bh, 4Fh, 66h, 6Dh, 7Dh, 07h
    	db 7Fh, 6Fh, 77h, 7Ch, 39h, 5Eh, 79h, 71h
    [свернуть]

    В любом случае, не ручаюсь за корректность, т.к. сильно начинающий
    в программировании и оба этих примера родились исключительно благодаря
    помощи от уважаемого Vladimir_S
    И да, эти состряпанные мной процедуры никак не учитывают, что
    1. Выводится на индикаторы, обычно, результат каких-то действий,
    представляющий собой 8 бит в аккумуляторе, а это значит что вывод
    нужно делать на два индикатора - по полубайту на каждый.
    2. Для вывода я использовал OUT, имея ввиду что индикаторы это порты В/В.
    Однако, возможно использование STAX, и это даже сократило бы код.
    Последний раз редактировалось Elvys; 06.06.2016 в 21:11.

  9. #6
    Activist
    Регистрация
    19.11.2012
    Адрес
    г. Луганск
    Сообщений
    406
    Благодарностей: 392
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Elvys
    Извините а зачем вам это нужно?
    У вас некое устройство, процессор будет записывать число в порт. Намного легче поставить дешифратор.

  10. #7
    Activist
    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    330
    Благодарностей: 290
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Парни вы ппц.

  11. Этот пользователь поблагодарил krt17 за это полезное сообщение:
    Ewgeny7 (07.06.2016)

  12. #8
    Member
    Регистрация
    12.01.2014
    Адрес
    г. Краснодар
    Сообщений
    122
    Благодарностей: 44
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от PATHNK Посмотреть сообщение
    Намного легче поставить дешифратор
    Вот как раз от использования дешифратора и хочется уйти.
    Это имеет отношение к расширению возможностей индикации для "ЮТ-88".

  13. #9
    Activist
    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    330
    Благодарностей: 290
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Elvys Посмотреть сообщение
    По результатам насилия симулятора, промахов мимо таблицы не случалось,
    Откомпилируйте и запустите не в нулевых адресах, а немного повыше, а лучше подумайте а не копируйте и переделывайте чужое. Весь код в этой теме либо не рабочий, либо с жуткой избыточностью.

    Скрытый текст


    Код:
    ;
    	adi led&#ff
    	mov l,a
    	aci led/#100
    	sub l
    	mov h,a
    	mov a,m
    ;
    	lxi h,led
    	mvi b,0
    	mov c,a
    	dad b
    	mov a,m
    [свернуть]
    Последний раз редактировалось krt17; 07.06.2016 в 08:38.

  14. #10
    Member
    Регистрация
    12.01.2014
    Адрес
    г. Краснодар
    Сообщений
    122
    Благодарностей: 44
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если код работает при запуске хоть с одного какого-то адреса, его нельзя назвать нерабочим.
    В нем просто есть bug ... И вообще, я только учусь....
    Человек просто подкинул мне пару примеров. Я с ними помучился и имею представление,
    в каком направлении решать нужную мне задачу.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. PMI-80 - одноплатник на i8080
    от rw6hrm в разделе Разное
    Ответов: 67
    Последнее: 17.12.2016, 15:25
  2. Код эмуляции i8080 на С
    от medvdv в разделе Эмуляторы отечественных компьютеров
    Ответов: 15
    Последнее: 27.03.2015, 03:43
  3. Эмулятор i8080
    от Higgins в разделе Разное
    Ответов: 2
    Последнее: 20.05.2011, 09:43
  4. Забавные индикаторы
    от Orionsoft в разделе Unsorted
    Ответов: 11
    Последнее: 27.01.2007, 23:05

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •