User Tag List

Показано с 1 по 10 из 88

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    403
    Спасибо Благодарностей отдано 
    50
    Спасибо Благодарностей получено 
    90
    Поблагодарили
    66 сообщений
    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 - переход к приглашению командной строки.

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

    zebest(28.08.2022), Zidane(26.10.2023)

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

  3. #2

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,307
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,469
    Поблагодарили
    957 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  4. #3

    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,381
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    385
    Поблагодарили
    347 сообщений
    Mentioned
    2 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 стоковый
    [свернуть]

  5. #4

    Регистрация
    23.10.2012
    Адрес
    г. Красноярск
    Сообщений
    206
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    63
    Поблагодарили
    29 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SegaBoy Посмотреть сообщение
    F809 это вывод одиночного символа из регистра C. Там не требуется никаких стоп-кодов.

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

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

    Этот РК - прямо как наркотик.. Один раз попробуешь, уже не слезешь так просто...
    Последний раз редактировалось Zidane; 26.10.2023 в 18:49.

  6. #5

    Регистрация
    11.04.2023
    Адрес
    г. Ташкент, Узбекистан
    Сообщений
    183
    Спасибо Благодарностей отдано 
    57
    Спасибо Благодарностей получено 
    89
    Поблагодарили
    41 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Zidane Посмотреть сообщение
    Смутило другое: в приведенном примере (не суть важно каком) вызов всех подпрограмм, в т.ч. из ПЗУ происходит командой JMP.
    Если программировать/отлаживать код в Visual Studio, те же CreateWindowEx, SelectObject и т.д. - те же CALL на локальную таблицу из кучи JMP'ов, а JMP'ы уже и ведут в недры Win-API. То есть, принципиально, всё то же самое как в РК, так и в Windows.

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

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

Эту тему просматривают: 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

Ваши права

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