谁能帮我解释下以下微机原理源程序的意思?一句一句地

DATA SEGMENT
DATA1 DW 1234H
DATA2 DB 16 DUP (?)
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA
ASSUME CS:CODE
START:MOV AX,DATA
MOV DS,AX
LEA SI,DATA2
LEA DI,DATA1
MOV AX,0
MOV BX,0AH
MOV AX,[DI]
ADD SI,4
L1:MOV DX,0
DIV BX
ADD DL,30H
MOV [SI],DL
DEC SI
CMP AX,0
JNZ L1

MOV AL,24H
MOV [SI+5],AL
MOV DX,OFFSET DATA2
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START

DATA SEGMENT ;定义数据段
DATA1 DW 1234H ;变量DATA1中装入1234H,DW定义字(两个字节),即DW中低字节为34H,高字节为12H
DATA2 DB 16 DUP (?) ;’?‘号重复16次,保留16个字节的存储单元空间,该存储单元从DATA2起始
DATA ENDS ;SEGMENT...ENDS是段定义的伪指令助记符,任何一个逻辑段必须以SEGMENT开始,以ENDS结束
CODE SEGMENT ;定义代码段
ASSUME DS:DATA CS:CODE ;(这样写就可以)ASSUME是段分配语句,指明段和段寄存器的关系,
START:MOV AX,DATA ;数据段送入AX
MOV DS,AX ;初始化DS,将AX送入DS
LEA SI,DATA2 ;LEA取有效地址指令,将DATA2的偏移地址送到SI中
LEA DI,DATA1 ;LEA取有效地址指令,将DATA1的偏移地址送到DI中
MOV AX,0 ;将0送到AX中
MOV BX,0AH ;给BX赋值0AH
MOV AX,[DI] ;将DI中的内容送到AX中
ADD SI,4 ;4与SI中的内容相加,结果送回SI中
L1:MOV DX,0 ;将0送到DX中
DIV BX ;AX/BX的商送到AL中,余数送到AH中
ADD DL,30H ;将30H和DL中的内容相加,结果送到DL中
MOV [SI],DL ;DL中的内容送到SI中
DEC SI ;SI自减,一次减1
CMP AX,0 ;AX中的内容与0比较,-0
JNZ L1 ;AX的内容不为0则转移到L1

MOV AL,24H ;将24H送到AL中
MOV [SI+5],AL ;将AL中的内容送到地址为SI+5的单元中
MOV DX,OFFSET DATA2 ;取DATA2的偏移地址送到DX中
MOV AH,9 ;9号功能调用,显示字符串,要求DS:DX指向串地址首址,并且字符串必须 以'$'字符为结束符
INT 21H ;和MOV AH,9 配合使用,共同完成上述任务
MOV AH,4CH ;将4CH送到AH中
INT 21H ;功能调用
CODE ENDS ;代码段结束
END START ;程序结束
温馨提示:答案为网友推荐,仅供参考
相似回答