emu8086错误:跳过未知操作码:65不是8086指令

时间:2015-03-28 03:28:40

标签: x86-16 instruction-set assemble

org 200h

data segment



;upper_case

sA      db 'Alpha', 20h, '$' 
sB      db 'Bravo', 20h, '$'
sC      db 'Charlie', 20h, '$'
sD      db 'Delta', 20h, '$'
sE      db 'Echo', 20h, '$'
sF      db 'Foxtrot', 20h, '$'
G       db 'Golf', 20h, '$'
H       db 'Hotel', 20h, '$'
I       db 'India', 20h, '$'
J       db 'Juliet', 20h, '$'
K       db 'Kilo', 20h, '$'
L       db 'Lima', 20h, '$'
M       db 'Mike', 20h, '$'


;lower_case



;digits:

zero    db 'zero', 20h, '$' 
one     db 'one', 20h, '$'
two     db 'two', 20h, '$'
three   db 'three', 20h, '$'



lower dw la, lb, lc, ld, le, lf, lg, lh, li, lj, lk, ll, lm, ln, lo, lp ,lq, lr, ls, lt, lu, lv, lw, lx, ly, lz

upper dw sA,sB,sC,sD,sE,sF,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z

num dw zero, one, two, three, four, five, six, seven, eight, nine

myname    db  0dh, 0ah, 'name: Meng Zhao', 0dh, 0ah, '$'
myid      db  0dh, 0ah, 'ID:1300062809', 0dh, 0ah, '$'

  data ends

;stack segment stack
    ;sta db 50 dup(0)
    ;top equ length sta
;stack ends

code segment
......
disp_upper:
      ......
code ends

它编译好了,但是当我运行它时,emu8086说:未知的操作码被跳过:65 不是8086指令 - 尚不支持。在sE db'Echo',20h,'$'。我只是想知道为什么会发生这种情况?我试图更改变量的名称,但它不起作用。

代码太长而无法粘贴。

1 个答案:

答案 0 :(得分:1)

如果没有看到更多代码,我最好的猜测就是您正在执行数据。所有似乎执行得很好,直到模拟器找到一个字符,其ASCII码与8086 cpu上定义的任何操作码不对应。

org 200h

这个ORG看起来很奇怪。通常要生成.COM可执行文件,我们编写ORG 100h并明确地跳转到代码开始的位置(或在代码部分中落实)。你似乎陷入了数据部分 如果你试图制作一个.EXE可执行文件,那么ORG指令是没有意义的。