DATAS SEGMENT
// 前面的DATAS只是一个标记,你喜欢的换可以换成别的字符,例如A_DATA
// SEGMENT用于表示段的定义,注意后面有ENDS
// 这里指数据段的定义,也就是PE文件中常见的.data
STRING DB 13,10,'Hello World!',13,10,'$'
// STRING 表示字符串,DB表示数据类型,一般字符串都是字节行
//13,10表示换行,也就是十六进制0Dh,0Ah
// $ 表示字符串的结束,一般字符串的结束位置会有一个0
DATAS ENDS
// ENDS表示这个段定义结束,
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
// ASSUME 用来将声明的段与寄存器联系起来,这样数据才能在内存中使用,
START:
//START 表示代码从这里开始执行,START可以换成别的字符,例如Begin,但是后面的要对应
MOV AX,DATAS
// 将数据段的地址传入AX寄存器中
MOV DS,AX
// 再将AX中数据段的地址,传入DS中[DS段,也就是常用的数据段的段寄存器]
//不能MOV DS,DATAS,如果不知道,说明自己还需要学习
LEA DX,STRING
//将刚才定义的字符串的地址传入DX寄存器中
// DOS功能号
MOV AH,9
INT 21H
// DOS功能号
MOV AH,4CH
INT 21H
CODES ENDS
END START
// 注意前面的代码开始处使用的是 START: 所以END START