在下初学汇编,遇到一问题不明原因,请各位指教:
......
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!"
2006-05-05 15:25
2006-05-05 15:37
还是有乱码,
下面是我写的程序,可以帮我看看吗?
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

2006-05-05 15:41
谢谢公子的解答,我把昨天的程序加了两句就行了,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

2006-05-06 11:00
2006-05-06 16:10
如果不写把DATA的段地址赋给DS,也就是说如果不写
MOV AX,DATA
MOV DS,AX
的话,编译器会从什么地方找DATA段和CODE段?
我刚开始出现乱码的程序输出中有乱码,但最后还是包含了正确的那个字符串。
这是不是说明如果不这样写,编译器也能“估计”出该在什么地方找相应的段?
问题太多了,哈哈,各位大侠,能继续指教吗?

2006-05-06 20:43
2006-05-07 09:53
2006-05-07 14:27