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,'$'。我只是想知道为什么会发生这种情况?我试图更改变量的名称,但它不起作用。
代码太长而无法粘贴。
答案 0 :(得分:1)
如果没有看到更多代码,我最好的猜测就是您正在执行数据。所有似乎执行得很好,直到模拟器找到一个字符,其ASCII码与8086 cpu上定义的任何操作码不对应。
org 200h
这个ORG看起来很奇怪。通常要生成.COM可执行文件,我们编写ORG 100h
并明确地跳转到代码开始的位置(或在代码部分中落实)。你似乎陷入了数据部分
如果你试图制作一个.EXE可执行文件,那么ORG指令是没有意义的。