在下初学汇编,遇到一问题不明原因,请各位指教:
......
MESSAGE DB 'THIS IS A MESSAGE!$'
......
MOV DX,OFFSET MESSAGE
MOV AH,09H
INT 21H
......
可为什么输出结果却先是:一串乱码+"THIS IS A MESSAGE!"
在下初学汇编,遇到一问题不明原因,请各位指教:
......
MESSAGE DB 'THIS IS A MESSAGE!$'
......
MOV DX,OFFSET MESSAGE
MOV AH,09H
INT 21H
......
可为什么输出结果却先是:一串乱码+"THIS IS A MESSAGE!"
还是有乱码,
下面是我写的程序,可以帮我看看吗?
DATA SEGMENT
message DB 'this is a message!$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
mov dx,0
MOV DX,OFFSET message
mov ah,09h
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
谢谢公子的解答,我把昨天的程序加了两句就行了,MOV AX,DATA MOV DS,AX.但我不知道为什么应该加上这两句,不是ASSUME已经给DS分配了吗?
程序尾不加 MOV AH,7
INT 21H
在命令提示符下也能看到的,不会一下就没了。
DATA SEGMENT
MESSAGE DB 0ah,0dh,'this is a message!$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESSAGE
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
如果不写把DATA的段地址赋给DS,也就是说如果不写
MOV AX,DATA
MOV DS,AX
的话,编译器会从什么地方找DATA段和CODE段?
我刚开始出现乱码的程序输出中有乱码,但最后还是包含了正确的那个字符串。
这是不是说明如果不这样写,编译器也能“估计”出该在什么地方找相应的段?
问题太多了,哈哈,各位大侠,能继续指教吗?