User Tag List

Страница 2 из 8 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 78

Тема: Разбираюсь с ассемблером К1801ВМ1

  1. #11
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,852
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    171 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    000010-R3 будет меньше, если R3 больше восьми, т.е. для номеров функции 8 и меньше будет вызвана функция номер ноль (хотя в стеке будет передан первоначальный номер). Иначе вычитаем 8, кладём в стек байт из таблицы по адресу 004600, очищая при этом старший байт в стеке, чтобы не мешался (судя по тому, что полученное число добавляется потом к адресу возврата, это количество аргументов после команды TRAP). Далее сдвигаем номер функции влево, т.е. умножаем на 2, чтобы получить смещение в таблице адресов функций. После чего вызываем функцию по адресу из таблицы 004646. После вызова достаём из стека количество аргументов и добавляем к адресу возврата. Выкидываем из стека реальный номер функции и восстанавливаем регистры. Всё, возврат из прерывания.

  2. #12
    Activist
    Регистрация
    11.08.2009
    Адрес
    Минск
    Сообщений
    234
    Спасибо Благодарностей отдано 
    21
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от darkstar Посмотреть сообщение
    Добрался до TRAP-диспетчера.
    Написал несколько комментариев и запутался.
    Не пойму, какое число получается после очистки битов и сдвига
    И куда в конечном счёте происходит переход?
    Аргументы у TRAP-а видел такие:
    11, 12, 13
    20, 22, 23, 25, 27
    32, 33, 36,
    44
    50, 53, 55
    =
    Для TRAP 11 получится число 2 (11-10)x2
    для TRAP 12 получится число 4 (12-10)x2
    и т.д.
    С адреса 4650 расположена таблица переходов (адреса подпрограмм) для обработки соответсвуещего TRAP
    ... и значит сможете разбираться с каждой подпрограммой поотдельности.

  3. #13
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ал-р Посмотреть сообщение
    =
    ... Много лишних буковок для програмки из нескольких строк ... И прикалывает число #-63012 при том что слева оно в нормальном виде 114766
    не много, при роме 16к все полезно
    коды команд по умолчанию выключены, специально включили
    #-63012 одним нажатием клавиши превращается в 114766

    зато всё удобство IDA не сравнить с любимы редакторами

  4. #14
    Member
    Регистрация
    01.11.2013
    Адрес
    г. Красноярск
    Сообщений
    45
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо, немного отлучался...
    Для более полного понимания процессов решил воспользоваться логическим анализатором (который ещё нужно собрать).
    Нет ничего более вечного чем то, что обмотано синей изолентой

  5. #15
    Member
    Регистрация
    01.11.2013
    Адрес
    г. Красноярск
    Сообщений
    45
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так, разобрал работу диспетчера.
    Алгоритм прилагаю.
    При вызовах TRAP 0... TRAP 10 получим указание на адрес в таблице 004 646, т.е. переход на 037 366. при этом в стеке будет лежать число 200.
    команда - адрес в таблице -> адрес перехода - SP
    TRAP 11 - 004 650 -> 011 264 - 201
    TRAP 12 - 004 652 -> 011 100 - 202
    TRAP 13 - 004 654 -> 016 620 - 203

    TRAP 20 - 004 666 -> 005 064 - 210
    TRAP 22 - 004 672 -> 004 352 - 212
    TRAP 23 - 004 674 -> 004 362 - 213
    TRAP 25 - 004 700 -> 011 112 - 215
    TRAP 27 - 004 704 -> 007 576 - 217
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	01.jpg 
Просмотров:	197 
Размер:	24.1 Кб 
ID:	44604  
    Последний раз редактировалось darkstar; 19.12.2013 в 11:43.
    Нет ничего более вечного чем то, что обмотано синей изолентой

  6. #16
    Member
    Регистрация
    01.11.2013
    Адрес
    г. Красноярск
    Сообщений
    45
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Опять прошу помощи.
    Что за команда такая BPT ?
    В описании сказано "командное прерывание для отладки".
    Что за прерывание?
    По какому вектору оно сидит?

    Похоже, это прерывание по вектору 14:
    16 -> РСП
    14 -> СК

    Но дело в том, что в ПЗУ по этому адресу - нули...
    Куда перейдёт программа? На начало?
    Последний раз редактировалось darkstar; 20.12.2013 в 07:04.
    Нет ничего более вечного чем то, что обмотано синей изолентой

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

  8. #17
    R.I.P. Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    371
    Поблагодарили
    309 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от darkstar Посмотреть сообщение
    Что за команда такая BPT ?
    Это тупо по классике из описания

    BPT ПЕРЕЙТИ К ЛОВУШКЕ ТОЧКИ ПРЕРЫВАНИЯ .
    000003
    BPT
    КОДЫ УСЛОВИЙ ЗАГРУЖАЮТСЯ ИЗ ВТОРОГО СЛОВА ВЕКТОРА ЛОВУШКИ .
    ВЫПОЛНЯЕТ ПЕРЕХОД К ЛОВУШКЕ ПО ЯЧЕЙКАМ ПАМЯТИ 000014-000016 .
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  9. #18
    Activist
    Регистрация
    11.08.2009
    Адрес
    Минск
    Сообщений
    234
    Спасибо Благодарностей отдано 
    21
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от darkstar Посмотреть сообщение
    ... Считал ПЗУ-шку, дизассемблировал,
    ...
    ПЗУ-шка во вложении
    А дизасемблерный текст? (Для разбора полётов нужно видеть Старт и подпрограмму начальной инициализации с установкой векторов)
    Последний раз редактировалось Ал-р; 20.12.2013 в 09:19.

  10. #19
    Member
    Регистрация
    01.11.2013
    Адрес
    г. Красноярск
    Сообщений
    45
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    hobot, к сожалению, у меня нет такого подробного описания.
    Ал-р, весь код не дизассемблировал, т.к. большая его часть - это таблицы данных, и разобрать где данные, а где код нелегко.
    Сам код начинается с адреса 000 400, там определяется позиция стека.

    Таблица векторов вот такая:
    000 004 - подпрограмма обработки ошибки связи с внешним устройством.
    Если ЦП не получил сигнал /RPLY в ответ на /DIN, /DOUT в течении 64 тактов ("зависание"), то возникает это прерывание.
    Или же если была выполнена команда "HALT".
    (или если поступил сигнал IRQ1, но в нашем случае IRQ1 не используется).
    000 010 - подпрограмма обработки ошибки неверной команды.
    Если полученная команда не опознана, возникает это прерывание.
    000 034 - подпрограмма TRAP-менеджера.
    Возникает при программном выполнении команды TRAP.
    000 100 - подпрограмма обработки внешнего прерывания IRQ2.
    Сигнал "ГОТОВ" = 0 В вызывает это прерывание.
    Но чтобы сигнал сформировался, нужно записать 000 001 по адресу 060 340.
    000 270 - подпрограмма обработки внешнего прерывания IRQ3.
    Возникает, когда ИРПС принял очередной байт.
    000 340 - подпрограмма обработки прерывания от клавиатуры и валкодера.
    Как только нажимаем клавишу или поворачиваем валкодер, блок Б10-38 формирует сигнал "VIRQ кл" или "VIRQ кпн". Эти сигналы получает блок Б10-82, и сам формирует запрос на прерывание для ЦП (сигнал "VIRQ").
    Если прерывание разрешено, то ЦП отвечает сигналами "IAKO" и "DIN".
    При поступлении этих сигналов, блок Б10-82 выставляет адрес прерывания 000 340.

    Пока не ясно, откликается ли какое-либо устройство на шине при обращении к адресу 177 716...
    Последний раз редактировалось darkstar; 22.12.2013 в 17:34.
    Нет ничего более вечного чем то, что обмотано синей изолентой

  11. #20
    Activist
    Регистрация
    11.08.2009
    Адрес
    Минск
    Сообщений
    234
    Спасибо Благодарностей отдано 
    21
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А ПЗУ в каких адресах - с какого адреса начинается? Таблицу векторов, указатель стека и др. начальные установки выполняет подпрограмма сброса-пуска-инициализации при включении питания - нужно идти по цепочке которая после подсчёта контрольной суммы.
    - - -
    Посмотрел ссылку на первой странице http://www.radioscanner.ru/forum/topic46843.html
    Основная ошибка там - адрес начала ПЗУ на самом деле не равен 0. (BR 400 это в относительной адресации, на самом деле это может быть к примеру переход на адрес 100400 (BR 100400) если ПЗУ со 100000). С нуля начинается ОЗУ с векторами, стеком и рабочими ячейками программы, ПЗУ где-то вдали, например со ... нужно смотреть по схеме адрес начального пуска и вот эту часть описания (= блоки памяти с селектором адреса).
    Последний раз редактировалось Ал-р; 22.12.2013 в 21:18.

Страница 2 из 8 ПерваяПервая 123456 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. К1801ВМ1 vs К1801ВМ1Г, для БК0010/11
    от Alex_Vac в разделе БК-0010/0011
    Ответов: 24
    Последнее: 24.12.2014, 22:08
  2. Помогите новичку с ассемблером!
    от Ares в разделе Программирование
    Ответов: 139
    Последнее: 08.05.2014, 16:28
  3. {Украина} Куплю микросхемы к1801ВП1-037,К1801ВП1-014,К1801ВМ1
    от palsw в разделе Барахолка (архив)
    Ответов: 29
    Последнее: 05.06.2012, 14:23
  4. Ответов: 15
    Последнее: 22.12.2011, 12:01
  5. Помогите разобраться с ассемблером
    от casperzx в разделе Программирование
    Ответов: 7
    Последнее: 07.09.2010, 22:27

Ваши права

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