8086 не может получить доступ к внешней памяти - PullRequest
0 голосов
/ 31 октября 2019

мы работаем над симуляцией протея, которая на самом деле имеет 8x (2 КБ) внешней памяти (6116), но, как мы уже пытались, не может получить доступ к внешней памяти. Вопрос сказал, что адрес внешней памяти должен начинаться с 0x14000, и мы разработали правильную логику декодера;и попробовал три способа получить доступ к такому адресу, как показано ниже: Цель: переместить значение из внутренних регистров во внешнюю память, начиная с 0x14000 1- используя инструкцию ORG & MOV вместе2- используя ORG $ PUSH-POP вместе3 - без использования инструкции ORG + перемещение 1400 в DS (DataSegmentRegister)но ни один из них не работал, любая помощь будет оценена

https://drive.google.com/open?id=1Eznyj0pQfS2ccj5eIesYnnle01v2ftId

1 Ответ

0 голосов
/ 31 октября 2019

ORG только сообщает компилятору, где ожидать, что код (и статические данные) будут в памяти. (поэтому mov ax, OFFSET my_label можно собрать по правильному числовому адресу). Это не то, что вам нужно для этого, если вы не загружаете свой код по этому высокому адресу и не располагаете рядом расположенными данными с метками.

Вместо этого вы можете установить DS (и / илиES) к числовому значению и использовать смещение относительно этого к адресной памяти.

mov  ax, 0x1400
mov  ds, ax
mov  byte ptr [0], cl

Хранит байт (от CL) до 1400:000, который в реальном режиме является линейным адресом 0x14000.

Если это не дает того, что вы хотите, значит, у вас также есть (виртуальная) аппаратная проблема, а не программная проблема . Возможно спросите об этой части на https://electronics.stackexchange.com/

...