求此段汇编程序的功能注释

2024-12-22 23:09:20
推荐回答(2个)
回答1:

DATE LABEL NEAR
PUSH BX;保护寄存器
PUSH BP
PUSH DI
XOR AX,AX;将AX和DX清0
XOR DX,DX
DATE1:
MOV DI,AX;将AX存入DI
LODSB;将ES:[0]的内容取到AL中
CMP AL,'0';判断AL与字符'0'的大小关系
JB DATE7;若AL小于字符'0',则转DATE7
CMP AL,'9';判断AL与字符'9'的大小关系
JA DATE6;若AL大于字符'9',则转DATE6
DATE2: ;AL在字符'0'~字符'9'之间
AND AX,0FH;将AL的低4位保留,其它位清0,即将字符'0'~字符'9'转换为数字0~9
SHL DI,1;将DI左移1位,最高位移到CF中
RCL DX,1;将DX左循环移1位,将CF原有值移入DX最低位,将DX最高位移入CF中
MOV BX,DI;将DI存入BX
MOV BP,DX;将DX存入BP
SHL DI,1;将DI左移1位,最高位移到CF中
RCL DX,1;将DX左循环移1位,将CF原有值移入DX最低位,将DX最高位移入CF中
SHL DI,1;将DI左移1位,最高位移到CF中
RCL DX,1;将DX左循环移1位,将CF原有值移入DX最低位,将DX最高位移入CF中
JCXZ DATE3;如果CX等于0,则转DATE3
SHL DI,1;将DI左移1位,最高位移到CF中
RCL DX,1;将DX左循环移1位,将CF原有值移入DX最低位,将DX最高位移入CF中
Jmp short DATE4;无条件转到DATE4
DATE3:
ADD DI,BX;将BX加到DI中
ADC DX,BP;将BP加到DX中
DATE4:
ADD AX,DI;将DI加到AX
ADC DX,0;将上一步的CF加到DX中
JMP DATE1;转DATE1
DATE5:
ADD AL,9;将AL加9
JMP DATE2;转DATE2
DATE6:
JCXZ DATE7;若CX等于0,则转DATE7
CMP AL,'A';判断AL与字符'A'的大小关系
JB DATE7;若AL小于字符'A',则转DATE7
CMP AL,'F';判断AL与字符'F'的大小关系
JBE DATE5;若AL小于等于字符'F',则转DATE5
CMP AL,'a';判断AL与字符'a'的大小关系
JB DATE7;若AL小于字符'a',则转DATE7
CMP AL,'f';判断AL与字符'f'的大小关系
JBE DATE5;若AL小于等于字符'f',则转DATE5
DATE7:;AL在字符'A'~字符'F'之间或在字符'a'~字符'f'之间
MOV AX,DI;将DI存入AX
DEC SI;SI减1
OR DI,DX; 将DX与DI相或后存入DI
POP DI;恢复寄存器的值
POP BP
POP BX
RET

回答2:

nan a