大家,
我是学习NASM汇编语言的新手。从我的教科书中,其中一个示例代码如下:
ORG 0100H
JMP start
value DW 0
csmsg DB 13,10, 'CS (in hex) = ', '$'
dsmsg DB 13,10, 'DS (in hex) = ', '$'
esmsg DB 13,10, 'ES (in hex) = ', '$'
ssmsg DB 13,10, 'SS (in hex) = ', '$'
spmsg DB 13,10, 'SP (in hex) = ', '$'
;
%include "../mymacro/showbyte.mac"
;
start:
MOV [value], CS
MOV DX, csmsg
CALL show
;
MOV [value], DS
MOV DX, dsmsg
CALL show
;
MOV [value], ES
MOV DX, esmsg
CALL show
;
MOV [value], SS
MOV DX, ssmsg
CALL show
;
MOV [value], SP
MOV DX, spmsg
CALL show
;
MOV AX, 4c00H
INT 21H
show:
MOV AH,09H
INT 21H
showbyte value+1;
showbyte value
RET
我的问题是我不知道代码的以下行是做什么的...... 为什么我们需要这样做:
csmsg DB 13,10, 'CS (in hex) = ', '$'
答案 0 :(得分:2)
在DOS中,字符串以美元符号终止 - $而不是NULL。 13是返回的ASCII码,10是ASCII码新行。