当前位置:编程学习 > 汇编语言 >>

用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单元中的数据块按降序排列。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,