我似乎无法在emu8086中运行我的代码。任何人都可以查看我的代码并找出错误的原因吗?
org 100h
variable1 db 9h
variable2 db 5
variable3 db 1342h
ret
mov ax, variable1
mov bl, variable2
mov cx, variable3
答案 0 :(得分:0)
您的代码中存在以下问题:
ret
ret
将从子程序返回,因此除非堆栈被篡改,否则程序将不会执行此指令。
缺少起始地址
你得到org 100h
但是在那里放置了变量......你的代码在它们之后开始,但你没有任何标签可以跳转到......
数据类型mish-mash
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:
行可能看起来有点不同。