6.1. NORTON exconv.asm COM-:
.286
TITLE EXCONV (COM) . ASCII . -
CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H; PSP
BEGIN: JMP SHORT MAIN;
;-------------------------------------------------------
ASCVAL1 DB '1234';
ASCVAL2 DB '0000'
BINVAL DW 0
ASCLEN DW 4
MULT10 DW 1
;--------------------------------------------------------
MAIN PROC NEAR;
CALL B10ASBI; ASCII
CALL C10BIAS;
RET
MAIN ENDP
; ASCII
; -------------------------------
B10ASBI PROC
MOV CX,10;
LEA SI,ASCVAL1-1; ASCVAL
MOV BX,ASCLEN; ASCVAL
B20: MOV AL,[SI+BX]; ASCII-
AND AX,000FH;
MUL MULT10; 10
ADD BINVAL,AX;
MOV AX,MULT10;
MUL CX;
MOV MULT10,AX
DEC BX;. ASCII-?
JNZ B20; -
RET
B10ASBI ENDP
; . . ASCII
; -------------------
C10BIAS PROC
MOV CX,0010;
LEA SI,ASCVAL2+3; ASCVAL
MOV AX,BINVAL; .
C20: CMP AX,0010; 10?
JB C30; -
XOR DX,DX;
DIV CX; 10
OR DL,30H; BCD2
MOV [SI],DL; ASCII-
DEC SI
JMP C20
C30: OR AL,30H; .
MOV [SI],AL; ASCII-
RET
C10BIAS ENDP
CODESG ENDS
END BEGIN
B10ASBI ASCII- 1234 . , ASCII- 4 ASCLEN. ASCII- ASCVAL1-1 SI, - . B20 ASCII- AL. ASCVAL1-1 -
(4), .. ASCVAL1+3 ( ASCVAL1). 1, . MULT10 10, 1, 10, 100 ..
C10BIAS 4D2H ( B10ASBI) ASCII- 1234.
6.2. . . DEBUG .
6.3. . B10ASBI . . .
:
1. , 9 ASCII-, - 7 ASCII-. :
) ADD AX,33H ) ADD AX,BX
AAA AAA
) SUB AX,BX ) SUB AX,0DH
|
|
AAS AAS
2. UNPAK 01040705 . , ASCII-, .. 31343735.
3. 46328 ASCII- ( ).
:
1. ) ADD 6, - 0102. ) ADD 70, - 0106. ) SUB 02, AAS . ) SUB 2, AAS - FF06.
2.
LEA SI,UNPAK;
MOV CX,04;
B20: OR [SI],30H; ASCII
INC SI;
LOOP B20; 4
3.
8 1 = 8 8
2 10 = 20 14
3 100 = 300 12
6 1000 = 6000 1770
4 10000 = 40000 940
- 4F8.