Приветствую всех. Привез тут у меня товарищ камень к Acorp 6zx85
вместо 1 Ггц (Coppermine), как я ему говорил, 1100А (Tualatin), ну и
встал вопрос о переделке. Дело в биосе. Добавил я в дамп
кусок, который лежит на сайте в разделе переделки, но адреса
переходов не совпадают. Ассемблер я подзабыл, а доки под рукой
нет, поэтому вопрос, кто помнит, как правильно расчитать адрес
перехода, т.е. пример (который в том самом дампе):
000003575: E888C9 call 00000FF00
Как видно вызов происходит на адрес FF00, а в коде другой адрес,
вот и вопрос по расчёту оного. Я также пробовал грузить дамп в
отладчик, но я не помню, с какого адреса пускается биос, и при
загрузке в разные адреса во всём коде адреса меняются тоже.
Вот такие дела. Извините, если коряво объяснил. Заранее спасибо
всем, кто поможет.
а что - CALLы бывают _только_ абсолютными?
ведь тут похоже на относительную адресацию... (сужу по куску кода)
по моему прямой CALL будет звучать как xxxxCD (если склероз мой меня не подводит) значит тут всеж относительный.. дело лишь за малым пересчитать смещение до нужного места и вставить в форме со знаком... тут похоже на положительное смещение (знаковый бит опущен)
мастеров ПэЦэ-шного асма прошу камнями не кидать - судил опираясь на остатки знаний по программированию PDP11 и зачатки знаний по Z80
Да, Vivat написал правильно, что нужно сделать, а если
можно, то чуть подробнее, с примером. Заранее спасибо.
Отправить комментарий