用emulate8086汇编出现的问题:unterminated string: 128 dup(")
data segment
num1 dw 1234h
num2 dw 5678h
ans dw ?
data ends
stack segment
buffer db 128 dup(?);这句编译出错,提示: unterminated string: 128 dup("),为
;什么?但是,用masm5.0编译完全没有问题。
top equ size buffer ;top是buffer的大小,编译过后是个立即数吗?
stack ends
code segment
assume cs:code,ds:data,ss:stack
main: ;初始化段寄存器
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,offset top ;如果top是个立即数,怎么能用offset操作符呢?但是,把这句
;改成mov sp,top,编译通不过,提示:wrong parameters:
;MOV sp,size buffer ,为什么?
mov ax,num1
add ax,num2
mov ans,ax
mov ah,4ch
int 21h
code ends
end main
追问:那emulate8086支持定义多个数据段,多个代码段,comon,public,之类的吗?
我试过了换成这样:
mov ax,top
mov sp,ax
还是不行,莫非这个top编译过后不是个立即数?
教材上是这样写的:
top equ length buffer
mov sp,offset top
offset只有标号和变量才可以用的吧,迷糊了...把数据段改成这样:
data segment common
num1 db 12h
num2 db 56h
ans db 0
data ends
data segment common
space db 100 dup(0)
data ends
编译照样通不过,提示:duplicate declaration of: DATA,它说重复声明数据段我还是用masm5算了,只不过那个debug太难用了
答案:1.emu8086不可以使用dup(?)来分配未初始化的单元……
换成buffer db 128 dup(0)即可
2.这个我感觉应该是emu8086编译器的bug……确实解释不通,估计是emu8086不支持SZIE伪指令,top纯粹做标号用了,如此offset buffer=offset top=0
上一个:汇编语言中$符号的意思是什么?
下一个:试编写汇编语言子程序,使内存RAM的20H~4FH单元中的数据块按降序排列。