初学者求程序详细解释,8个字节数据转成十六进制数的ASCII码,然后数据用DOS系统功能2号调用
DAT SEGMENT PARA 'DAT'A1 DB 12H,34H,56H,78H,9AH
DB 0BCH,0DEH,0F0H
B1=$-A1
B2=B1*2 定义个B2有什么作用
A2 DB B2 DUP(?) 这个是放A1定义的数据的吗
DAT ENDS
STA SEGMENT PARA STACK 'STA'
STA1 DW 50 DUP(?) 定义这个什么作用
STA ENDS
CODE SEGMENT PARA 'CODE'
ASSUME CS:CODE,DS:DAT,SS:STA,ES:DAT
START:PUSH DS
XOR AX,AX
PUSH AX 上面的两个DS AX放入堆栈是保护现场吗,可是AX已经清零了
MOV DS,AX
MOV ES,AX 为什么AX要传给DS ES
LEA SI,A1
LEA DI,A2
MOV CX,B1
G1: MOV BL,2 G1不懂要干什么
MOV AL,[SI]
MOV BH,AL
PUSH CX
MOV CL,4
ROR AL,CL
POP CX
G2: AND AL,0FH
DAA
ADD AL,0F0H
ADC AL,40H
MOV [DI],AL
INC DI
MOV AL,BH
DEC BL
JNZ G2
INC SI
LOOP G1
MOV SI,OFFSET A2
MOV CX,B2
CALL P1
MOV AH,4CH
INT 21H
P1 PROC
MOV BL,2
G: MOV DL,[SI]
MOV AH,2
INT 21H
INC SI
DEC BL
JNZ T
MOV DL,' '
MOV AH,2
INT 21H
MOV BL,2
T: LOOP G
RET
P1 ENDP
CODE ENDS
END START
问题太多了,谁能分步解释下代码有什么作用