Кто-нибудь может сказать мне, что не так с этим кодом в emu8086?
Я не могу запустить мой код в emu8086. Кто-нибудь может взглянуть на мой код и выяснить, что не так?
org 100h
variable1 db 9h
variable2 db 5
variable3 db 1342h
ret
mov ax, variable1
mov bl, variable2
mov cx, variable3
1 ответ
У вас есть эти проблемы в вашем коде:
ret
перед вашим кодомret
вернется из подпрограммы, поэтому программа не будет следовать после этой инструкции, если только стек не был изменен.отсутствует начальный адрес
ты получил
org 100h
но поместили туда переменные... ваш код начинается после них, но у вас нет метки для перехода к...типы данных миш-маш
db
означает 8-битное значение иdw
означает 16-битное значение. Некоторые компиляторы проверяют это, если используются 8-битным или 16-битным доступом... так что если вы используетеmov ax,variable1
который16 bit <- 8 bit
Компилятор выдает ошибку или предупреждение или что-то еще.нет справочной информации
поскольку мы не знаем, что вы хотите сделать, мы можем только догадываться. например
mov ax,variable1
означает, что вы хотите получить доступ к памяти в
variable1
лайкmov ax,[cs:variable1]
или просто получить смещение. Также мы не знаем синтаксис вашего компилятора...
Я бы изменил вашу программу на:
org 100h
mov ax, variable1
mov bl, variable2
mov cx, variable3
ret
variable1 dw 9h
variable2 db 5
variable3 dw 1342h
или же:
org 100h
variable1 dw 9h
variable2 db 5
variable3 dw 1342h
start:
mov ax, variable1
mov bl, variable2
mov cx, variable3
ret
первый используется call 100h
а второй call start
, Не уверен, как метки определены в синтаксисе вашего компилятора, так что start:
линия может выглядеть немного иначе.