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

User Tag List

Страница 4 из 8 ПерваяПервая 12345678 ПоследняяПоследняя
Показано с 31 по 40 из 79

Тема: Специалист: программирование на ассемблере

  1. #31
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,869
    Спасибо Благодарностей отдано 
    660
    Спасибо Благодарностей получено 
    1,862
    Поблагодарили
    1,062 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Есть некоторая ирония в том, что в данном случае камнем преткновения стали мнемоники z80 в сочетании с sjasm
    OutSymCrd: sub a,08h ;
    в sjasm компилируется в две команды, первая из которых всегда обнуляет А.

  2. Эти 3 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    CityAceE (11.01.2024), HardWareMan (11.01.2024), svofski (12.01.2024)

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

  4. #32
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,429
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    606
    Поблагодарили
    450 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ivagor, вот это было внезапно!

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

    Погоди, а разве не просто "SUB 08H" должно быть?
    Код:
    SUB  (HL)    96   1 NOP 1
    SUB  (IX*)   96DD 3 NOP 1
    SUB  (IY*)   96FD 3 NOP 1
    SUB  A       97   1 NOP 1
    SUB  B       90   1 NOP 1
    SUB  C       91   1 NOP 1
    SUB  D       92   1 NOP 1
    SUB  E       93   1 NOP 1
    SUB  H       94   1 NOP 1
    SUB  L       95   1 NOP 1
    SUB  *       D6   2 NOP 1
    - - - Добавлено - - -

    А иначе он делает похоже:
    Код:
    SUB A
    SUB 08H
    И первое действительно обнулит А (А-А=0). Медвежья услуга ассемблера.

  5. #33
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,578
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    407
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В общем, для перегона я воспользовался табличкой вот с таким синтаксисом:
    Код:
    SUB A,B
    SUB A,C
    SUB A,D
    SUB A,E
    SUB A,H
    SUB A,L
    SUB A,(HL)
    SUB A,A
    SUB A,d
    Это же касается и всего остального. Пофиксил и перезалил исходник. Сейчас всё работает как задумано!
    С уважением, Станислав.

  6. #34
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,869
    Спасибо Благодарностей отдано 
    660
    Спасибо Благодарностей получено 
    1,862
    Поблагодарили
    1,062 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот про преобразование мнемоник 8080->z80 мне было бы интересно посмотреть/послушать/почитать. Есть несколько конвертеров, но у каждого из них есть какие-то странности или ошибки, которые не позволяют мне нормально преобразовать большую программу. Собирался сделать подход к своему конвертеру, но так и не созрел.

  7. #35
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,578
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    407
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Вот про преобразование мнемоник 8080->z80 мне было бы интересно посмотреть/послушать/почитать.
    Я, к сожалению, ничего интересного рассказать не смогу. У меня это полуавтоматический процесс. Скрипт на Python "в лоб" меняет мнемоники, а потом ещё руками нужно проходится, так как скрипт самый элементарный без доли интеллекта.
    С уважением, Станислав.

  8. #36
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,869
    Спасибо Благодарностей отдано 
    660
    Спасибо Благодарностей получено 
    1,862
    Поблагодарили
    1,062 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Поделишься скриптом? Интересно было бы посмотреть.

  9. #37
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,578
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    407
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Поделишься скриптом?
    Да там делиться-то особо нечем. Всё делается деревянно, "в лоб". Заготовка просто, которая ни регистр не учитывает, ни количество пробелов. Словарь, естественно, полностью заполнить нужно.
    Код:
    filename = "BIOS.ASM"
    
    file = open(filename, 'r')
    
    conv_dict ={
        ".db": "db",
        ".include": "include",
        "push    h": "push    hl",
        "push    b": "push    bc",
        "lxi     h,": "ld      hl,",
        "dad     sp": "add     hl,sp",
        }
    
    text = ""
    
    for line in file:
    
        for key in conv_dict.keys():
            line = line.replace(key, str(conv_dict[key]))
        text += line
    
    with open(filename + ".txt", "w") as f:
        f.write(text)
    С уважением, Станислав.

  10. Этот пользователь поблагодарил CityAceE за это полезное сообщение:

    ivagor (12.01.2024)

  11. #38
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,429
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    606
    Поблагодарили
    450 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    CityAceE, ну вот, прикинь. А всё просто потому что у каждой мнемоники i8080 по сути есть автопроверка. Например, MOV это всегда 2 регистра, а MVI это регистр и число. Как когда-то в одном холиворном обсуждении этого на этом форуме кое-кто говорил: "это они сэкономили на программе ассемблера, заставляя программиста помнить!". Ну не знаю. Если программист говорит, что его надо заставлять, быть может это не его место в принципе? А автоконтроль лично мне позволял писать относительно большие программы в тетрадке, чтобы потом, дождавшись занятия на кружке, ввести её в комп и оно сразу заработало как надо, потому что читается программа вполне однозначно, в отличие от кучи одинаковых условных LD с разными операндами. Или вот, сквозь десятилетия, оно позволяет упростить скрипт преобразования условному CityAceE для конвертации на другой язык.

    PS Скрипт преобразования на самом деле прост по алгоритму: достаточно сделать минимальный разбор каждой строки на 4 составляющие: МЕТКА + КОМАНДА + ОПЕРАНД + КОММЕНТАРИЙ. Просто меняешь потом связку КОМАНДА + ОПЕРАНД, если такие присутствуют, и собираешь строку обратно. И этому правилу будут соответствовать все строки текста ассемблерного текста.
    Последний раз редактировалось HardWareMan; 12.01.2024 в 13:51.

  12. #39
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,869
    Спасибо Благодарностей отдано 
    660
    Спасибо Благодарностей получено 
    1,862
    Поблагодарили
    1,062 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    достаточно сделать минимальный разбор каждой строки на 4 составляющие: МЕТКА + КОМАНДА + ОПЕРАНД + КОММЕНТАРИЙ.
    Так лучше не надо, в строке может быть несколько команд.

  13. #40
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,429
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    606
    Поблагодарили
    450 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Так лучше не надо, в строке может быть несколько команд.
    В синтаксисе i8080 - нет.

Страница 4 из 8 ПерваяПервая 12345678 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Программирование на ассемблере
    от shuran33 в разделе Вектор
    Ответов: 311
    Последнее: 23.02.2024, 17:00
  2. Ответов: 22
    Последнее: 12.02.2023, 16:13
  3. Программирование на ассемблере
    от tnt23 в разделе Океан-240
    Ответов: 3
    Последнее: 24.01.2019, 00:12
  4. Ответов: 275
    Последнее: 16.12.2018, 23:01
  5. Продам книгу- AMIGA: программирование на ассемблере
    от Doctor Max в разделе Барахолка (архив)
    Ответов: 11
    Последнее: 01.03.2012, 00:35

Ваши права

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