谁能帮我把这个汇编语言程序每行都翻译一下啊,老谢啦急需啊!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/26 03:58:07
DATA SEGMENT
DBUFFER1 DB 20 DUP (' ')
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
DATE:MOV AH,2AH ;取日期
INT 21H ;
MOV AX,CX
MOV BX,100
DIV BL
MOV BL,AH
CALL BCDASC1 ;日期数值转换成相应的ASCII码字符
MOV AL,BL
CALL BCDASC1
INC SI
MOV AL,DH
CALL BCDASC1
INC SI
MOV AL,DL
CALL BCDASC1
MOV BP,OFFSET DBUFFER1
MOV CX,20
MOV AX,1301H
INT 10H
hlt
BCDASC1 PROC NEAR ;日期数值转换成ASCII码字符子程序
PUSH BX
CBW
MOV BL,10
DIV BL
ADD AL,'0'
MOV DBUFFER1[SI],AL
INC SI
ADD AH,'0'
MOV DBUFFER1[SI],AH
INC SI
POP BX
RET

DATA SEGMENT ;定义数据段
DBUFFER1 DB 20 DUP (' ') ;定义变量,保存转换成ASCII码的日期
DATA ENDS ;数据段定义结束
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,DS:DATA,ES:DATA ;段寄存器关联说明
START: ;代码段指令开始
DATE:MOV AH,2AH ;取日期 ;
INT 21H ;dos功能调用
MOV AX,CX ;年份CX→AX
MOV BX,100 ;除数
DIV BL ;年份值除以100,商AL=世纪值,余数AH=年代值
MOV BL,AH ;年代值AH→BL保存
lea si,DBUFFER1 ;日期字符串首地址(原程序没有这条指令,我给补上。)
CALL BCDASC1 ;日期数值转换成相应的ASCII码字符
MOV AL,BL ;取年代值BL→AL
CALL BCDASC1
INC SI ;SI增1,空一格
MOV AL,DH ;月份值DH→AL
CALL BCDASC1
INC SI ;SI增1,空一格
MOV AL,DL ;日值DL→AL
CALL BCDASC1
MOV BP,OFFSET DBUFFER1 ;字符串首地址→BP
MOV CX,20 ;字符串长度→CX
MOV AX,1301H ;视频中断(INT 10H)13H号功能:显示指定地址、指定长度的字符串
INT 10H ;视频中断
hlt ;程序暂停
BCDASC1 PROC NEAR ;定义段内调用子程序
;功能:日期数值转换成ASCII码字符子程序
PUSH BX ;入栈保存BX
CBW ;字节转换为字
MOV BL,10 ;除数
DIV BL ;除以10
ADD AL,'0' ;非压缩BCD码(商数)转换为ASCII码
MOV DBUFFER1[SI],AL ;送字符串变量保存
INC SI