帮我看下这个基本的汇编,小弟刚学,待指教

来源:百度知道 编辑:UC知道 时间:2024/05/24 03:00:28
CODE SEGMENT
ASSUME CS:CODE
START: LEA BX,STRING
MOV CX,7
ONE: MOV DL,CS:[BX]
MOV AH,2
INT 21H
INC BX
LOOP ONE
MOV AX,4C00H
INT 21H
STRING DB "Hello !"
CODE ENDS
END START
这个是在教材上看到的HELLOWORLD程序,现在我想把里面的字串独立放到数据段去,所以试试改了下程序,改成这样
DATA SEGMENT
STRING DB "Hello !"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA
MOV AX,DATA
MOV DS,AX
START: LEA BX,STRING
MOV CX,7
ONE: MOV DL,DS:[BX]
MOV AH,2
INT 21H
INC BX
LOOP ONE
MOV AX,4C00H
INT 21H
CODE ENDS
END START
我觉得应该没问题啊,为什么还是出来乱码,求教
改完了以后,程序就报错了
说是SERVER ERROR数为1 这个是什么错误呀

你的START标号放的位置不正确,应该作为第一条指令的标号,否则数据段物理定位这两条指令就没有被执行,所以找不到数据段中的数据。程序修改为:
DATA SEGMENT
STRING DB "Hello !"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA BX,STRING
MOV CX,7
ONE: MOV DL,DS:[BX]
MOV AH,2
INT 21H
INC BX
LOOP ONE
MOV AX,4C00H
INT 21H
CODE ENDS
END START

楼上正解
但字符串结尾是不是要有个结束符0啊