19行:“MOV AX,DATA ;程序从START开始”问题在于放入AX寄存器的不应是一个段,而应该是段的地址,所以在“DATE”前一改加上“offset”操作符才对,应改为:“MOV AX, offset DATA”
还有30行:“END START”这是个错误的语法,应去掉“ START”
所以整个程序改为:
TITLE ***HELLO,WORLD***
;定义数据段
DATA SEGMENT
MSG DB 'HELLO,WORLD!','$'
DATA ENDS
DISPSTR MACRO
MOV AH,09H ;9号功能调用:显示字符串
INT 21H ;完成输出显示
ENDM
;定义代码段
CODE SEGMENT
ASSUME CS:CODE ;规定CS的内容
ASSUME DS:DATA ;规定DS的内容
START:
MOV AX, offset DATA ;程序从START开始
MOV DS,AX ;DS置初值,DATA的段地址
LEA DX,MSG ;得到字符串"Hello World!"的偏移地址
DISPSTR
DISPSTR
DISPSTR
EXIT: MOV AH,4CH ;4C号功能调用:终止当前程序并返回调用程序
INT 21H ;返回DOS
CODE ENDS ;代码段结尾
END ;结束汇编
这样至少没有编译错误了!但是连接好像还是有错!你自己改了!