NASM汇编字节边界对齐

时间:2013-02-24 04:36:31

标签: assembly nasm

大家,

我是学习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) = ', '$'

1 个答案:

答案 0 :(得分:2)

在DOS中,字符串以美元符号终止 - $而不是NULL。 13是返回的ASCII码,10是ASCII码新行。