注册 登录
编程论坛 汇编论坛

初学者求程序详细解释,8个字节数据转成十六进制数的ASCII码,然后数据用DOS系统功能2号调用

我是地心引力 发布于 2010-12-01 18:51, 885 次点击
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  



问题太多了,谁能分步解释下代码有什么作用
0 回复
1