User Tag List

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

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

  1. #31

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,366
    Поблагодарили
    1,316 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    CityAceE(11.01.2024), svofski(12.01.2024)

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

  3. #32
    HardWareMan
    Гость

    По умолчанию

    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). Медвежья услуга ассемблера.

  4. #33

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,641
    Поблагодарили
    572 сообщений
    Mentioned
    50 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
    Это же касается и всего остального. Пофиксил и перезалил исходник. Сейчас всё работает как задумано!
    С уважением, Станислав.

  5. #34

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,366
    Поблагодарили
    1,316 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  6. #35

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,641
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  7. #36

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,366
    Поблагодарили
    1,316 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  8. #37

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,641
    Поблагодарили
    572 сообщений
    Mentioned
    50 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)
    С уважением, Станислав.

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

    ivagor(12.01.2024)

  9. #38
    HardWareMan
    Гость

    По умолчанию

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

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

  10. #39

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,366
    Поблагодарили
    1,316 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  11. #40
    HardWareMan
    Гость

    По умолчанию

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

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

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

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

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

Похожие темы

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

Ваши права

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