【发布时间】:2018-05-22 17:40:56
【问题描述】:
我正在学习汇编,我正在尝试制作一种可以在汇编中生成字符串的方法。 我开始尝试将一个字符串复制到另一个字符串并将副本存储在一个变量中以备将来使用。
我正在使用emu8086,我收到以下错误:
跳过未知操作码:64
不是 8086 指令 - 尚不支持。
org 100h
jmp start
msg: db "Hello, World!", 0
a: db 0
start:
mov si,msg
mov di, a
call _make_str
mov a, di
mov dx, a
mov ah, 09h
int 21h
mov ah, 0
int 16h
ret
_make_str:
pusha
_next:
mov al, [si]
mov [di], al
inc si
inc di
cmp al, 0
jne _next
popa
ret
这个错误是什么意思,我做错了什么?
【问题讨论】:
-
不熟悉emu8086和可用模式,但是pusha/popa直到80186/80188处理器才可用,所以如果你纯粹在8086/8088模式下也不可用。
-
@BrianKnoblauch
pusha/popa从 80186 开始工作,因此您指出正确,但pusha/popa是操作码 0x60/0x61。 0x64是FS段前缀,0x40+r(64)是INC,所以我猜错误中提到的64是FS前缀操作码,也是ASCII值'd'。这看起来与结尾World!以及覆盖后d的位置相关。看起来更像 emu8086 确实包含(至少一些)186 条指令。