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

User Tag List

Страница 1 из 9 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 88

Тема: Программирование в машинных кодах

  1. #1
    Member
    Регистрация
    23.10.2012
    Адрес
    г. Красноярск
    Сообщений
    165
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    21 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Программирование в машинных кодах

    Доброго дня. Тыкаю эмулятор Радио-86РК (Emu80) на предмет подготовки к стриму... Но вот как-то работает он интересно. Точнее печально. Код 0Е 21 CD 09 F8 C9 делает черти что... Запуск по G0000 (собственно там и располагается программа). Что примечательно, на "Специалисте" аналогичная программа работает как надо. А вот на Радио-86РК беда просто. Есть что-то, чего я не учел? А вот при попытке напрямую поместить значение байта в ячейки (ну просто для примера) 37С2 и 37С3 тоже начинается абсолютно непонятная канитель.

    Вообще машина не то чтобы сильно меня интересует - я больше по Специалисту тащусь ). Но чтобы выдать адекватную информацию, нужно самому на этом компьютере научиться работать.

    Я вот всегда думал, что на Радио-86 кодить будет проще из-за текстового режима работы, по факту оказалось все с точностью наоборот. Монитор Специалиста, зашитый в эмулятор, работает ощутимо приятнее и понятнее чем РК.

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

  3. #2
    Veteran Аватар для zebest
    Регистрация
    11.01.2008
    Адрес
    Ладошкино
    Сообщений
    1,668
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    221
    Поблагодарили
    174 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Zidane Посмотреть сообщение
    Код 0Е 21 CD 09 F8 C9 делает черти что...
    нормально этот код работает. Как и должОн.
    Это особенности программированийя ВГ75, управляющие коды etc... Все просто.
    в д.с. 0Eh тут контроллер сбивает. Запиши втуда что-нить попроще, нУ 55h. например.
    Последний раз редактировалось zebest; 28.08.2022 в 16:01.
    Profi v3.2 -=- Speccy2010,r2

  4. #3
    Activist Аватар для SegaBoy
    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    390
    Спасибо Благодарностей отдано 
    36
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    59 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zebest Посмотреть сообщение
    нормально этот код работает. Как и должОн.
    Это особенности программированийя ВГ75, управляющие коды etc... Все просто.
    в д.с. 0Eh тут контроллер сбивает. Запиши втуда что-нить попроще, нУ 55h. например.
    В примере 0E 21 это команда mvi c, ‘!’ и она никак не должна влиять на контроллер

  5. #4
    Veteran Аватар для zebest
    Регистрация
    11.01.2008
    Адрес
    Ладошкино
    Сообщений
    1,668
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    221
    Поблагодарили
    174 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в примере - F809h - вывод символа на экран. Думаешь оно ограничилось одним символом и вернулось из п\п? Ну да , ну да. Пока стоп-кода нет - будет выводить все, что встретит, весь мусор, в т.ч. и управляющие коды. Что и наблюдаем
    Profi v3.2 -=- Speccy2010,r2

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

    По умолчанию

    Цитата Сообщение от Zidane Посмотреть сообщение
    Код 0Е 21 CD 09 F8 C9 делает черти что... Запуск по G0000 (собственно там и располагается программа).
    Не надо завершать запускаемую по G программу RETом, если только она сама не запишет в стек какой-нибудь корректный адрес возврата.

    Цитата Сообщение от Zidane Посмотреть сообщение
    Что примечательно, на "Специалисте" аналогичная программа работает как надо.
    Вероятно только на SP580, у стандартного специалиста по адресу F809 нет пзу. Хотя попробовал - на SP580 тоже работает не очень, опять же не надо завершать RETом.

  7. #6
    Activist Аватар для SegaBoy
    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    390
    Спасибо Благодарностей отдано 
    36
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    59 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zebest Посмотреть сообщение
    в примере - F809h - вывод символа на экран. Думаешь оно ограничилось одним символом и вернулось из п\п? Ну да , ну да. Пока стоп-кода нет - будет выводить все, что встретит, весь мусор, в т.ч. и управляющие коды. Что и наблюдаем
    F809 это вывод одиночного символа из регистра C. Там не требуется никаких стоп-кодов.

    0E это не управляющий код - это символ стрелка вправо. Можно заменить 0E 21, на 0E 0E и убедиться в этом.
    В эмуляторе вывод портится из-за последней команды C9 - ret. После неё стек налазит на экран, но программа переходит на адрес 0000 и выполняет новый цикл. С каждым разом всё дальше наезжая стеком на экран. Если в эмуляторе нажать ресет, то программа будет исполняться как и на реале - выведет один символ ‘!’ На экран и повиснет - улетит куда-то в неизвестность.

    Непонятно что хотел топикпастер. Если вывести символ ‘!’ в бесконечном цикле на экран, то последняя команда должна быть не C9 (ret), а C3 0000 (jmp 0000). Если же вывести один раз символ и вернутся в монитор, то C3 F86C - переход к приглашению командной строки.

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

    zebest (28.08.2022), Zidane (26.10.2023)

  9. #7
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,767
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    1,173
    Поблагодарили
    770 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SegaBoy Посмотреть сообщение
    Непонятно что хотел топикпастер
    он наверно думал что "G0000" это аналог Call, а не Jump
    ну и в руководствах для возврата в монитор упоминается RST6

  10. #8
    Member
    Регистрация
    23.10.2012
    Адрес
    г. Красноярск
    Сообщений
    165
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    21 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я думал что ассемблер на Радио-86РК работает также как и в Специалисте. К слову, если попытаться запустить программу директивой G без параметров, то все тоже печально. Кроме того, в описании к монитору 86РК сказано, что можно не указывать адрес останова программы. Это, на мой взгляд, как бы подразумевает, что стартовый адрес указывать обязательно. Касательно адреса вывода символа на экран - в эмуляторе Специалиста это $C037. И все работает как часы, при этом все понятно, что весьма немаловажно. В конечном итоге имелся ввиду общий алгоритм, а не программа целиком. Ну в любом случае неважно. От темы отказался. Этот компьютер слишком не для меня.

    Всем спасибо за попытку помочь нубу ).

  11. #9
    Veteran Аватар для Serg6845
    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,002
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    250
    Поблагодарили
    230 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    он наверно думал что "G0000" это аналог Call, а не Jump
    ну в мониторе Специалиста так и есть.

    Зверинецъ

    Специалист (был когда-то "совсем стандарт") - 1988-2023
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    БК0010-01 стоковый
    [свернуть]

  12. #10
    Member
    Регистрация
    01.06.2005
    Адрес
    Москва
    Сообщений
    191
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в Мониторе РК-шки также в стек кладется адрес теплого старта F86C, он же командный интерпретатор, так что возврат из программы командой RET является легальным способом завершения программы.
    Почему код не работает в эмуляторе -- надо спрашивать автора эмулятора.

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

    Хотя, директива G может и портит стек, надо бы проверить на реальном железе и эмулятор тут не причем.

Страница 1 из 9 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 18
    Последнее: 09.12.2018, 12:32
  2. Растактовка машинных циклов intel 8080
    от NEO SPECTRUMAN в разделе Эмуляторы отечественных компьютеров
    Ответов: 2
    Последнее: 06.04.2017, 17:09
  3. Ответов: 10
    Последнее: 06.03.2015, 12:59
  4. Ответов: 4
    Последнее: 26.07.2014, 16:52
  5. Клинит башню от машинных систем счисления
    от Watt в разделе Программирование
    Ответов: 17
    Последнее: 04.05.2005, 14:40

Ваши права

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