4.1. NORTON -:
.286
TITLE XLATE (COM) ASCII EBCDIC
CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H; PSP
BEGIN: JMP MAIN;
;-------------------------------------------------------
ASCNO DB '-31.5 ';
EBCNO DB 6 DUP(' ')
XLTAB DB 45 DUP(40H)
DB 60H,2DH
DB 5CH
DB 0F0H,0F1H,0F2H,0F3H,0F4H
DB 0F5H,0F6H,0F7H,0F8H,0F9H
DB 199 DUP(40H)
;--------------------------------------------------------
MAIN PROC NEAR
LEA SI,ASCNO; ASCNO
LEA DI,EBCNO; EBCNO
MOV CX,06;
LEA BX,XLTAB;
A20: MOV AL,[SI]; ASCII-
XLAT;
MOV [DI],AL; EBCNO
INC DI
INC SI
LOOP A20; 6
RET
MAIN ENDP
CODESG ENDS
END BEGIN
XLAT , ASCNO AL.
XLAT AL , .. AL. ASCNO ASCII- 45(2DH). XLTAB+45. 60( EBCDIC). 60 XLAT AL.
ASCNO ASCII- 3 - 51(33). XLTAB+51. 0F3H( 3 EBCDIC). 0F3H XLAT AL .
. ASCNO -31.5 , 2D33312E3520( ASCII). EBCNO 60F3F12DF540( EBCDIC).
4.2. . .
4.3. DEBUG . . . . . D
5. : ASCII-.
5.1. NORTON -:
.286
TITLE ASCHEX (COM) . ASCII .
CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H; PSP
BEGIN: JMP MAIN;
;-------------------------------------------------------
DISPROW DB 20 DUP(' '),13;4
HEXSTR DB 00
XLATAB DB 30H,31H,32H,33H,34H
DB 35H,36H,37H,38H,39H
DB 41H,42H,43H,44H,45H,46H
;--------------------------------------------------------
MAIN PROC NEAR;
CALL Q10CLR;
LEA SI,DISPROW
A20: CALL C10HEX;
CALL D10DISP;
CMP HEXSTR,0FFH; .?
|
|
JE A50; -
INC HEXSTR; -
JMP A20;
A50: RET
MAIN ENDP
; .
; ---------------------
C10HEX PROC NEAR
MOV AH,00
MOV AL,HEXSTR; .
MOV CL,04;.
SHR AX,CL; .
LEA BX,XLATAB;.
XLAT; .
MOV [SI],AL;
MOV AL,HEXSTR
SHL AX,CL;
SHR AL,CL
XLAT; .
MOV [SI]+1,AL; .
RET
C10HEX ENDP
;
; --------------
D10DISP PROC NEAR
MOV AL,HEXSTR
MOV [SI]+3,AL
CMP AL,1AH; E0F?
JE D20; -
CMP AL,07H;/ 07?
JB D30; -
CMP AL,10H;/ 0F?
JAE D30; -
D20: MOV BYTE PTR [SI]+3,20H
D30: ADD SI,05;.
LEA DI,DISPROW+80
CMP DI,SI
JNE D40
MOV AH,40H;-
MOV BX,01;
MOV CX,81;
LEA DX,DISPROW
INT 21H
LEA SI,DISPROW;
D40: RET
D10DISP ENDP
;
; --------------
Q10CLR PROC NEAR
MOV AX,0600H
MOV BH,03; (07 /)
MOV CX,0000
MOV DX,184FH
INT 10H
RET
Q10CLR ENDP
CODESG ENDS
END BEGIN
ASCII-, . , ASCII- 53 - S. 1616.
ASCII- . ASCII . ASCII 00, 01 .. 00 3030, 01 3031 ..
HEXSTR 00 1. C10HEX HEXSTR . , HEXSTR 4F. 4 XLATAB. AL 34. F 46. 3446,
4F.
DISPROW ASCII- . DISPROW , ASCII- , ASCII- .
07-10, 1, DOS .
5.2. . .
5.3. DEBUG . . C10HEX . D10DISP . 1 C10HEX CALL. 2
. .
5.4. INT 21H. G xxxx, - INT 21H. INT 21H. INT 21H G yyyy, yyyy - , INT 21H.
|
|
INT 21H 3 . .
5.5. NORTON. .
6. : .
6.1. NORTON -:
.286
TITLE NMSORT (EXE)
;----------------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
DW 32 DUP(?)
STACKSG ENDS
;-----------------------------------------------
DATASG SEGMENT PARA 'Data'
NAMEPAR LABEL BYTE; .
MAXNLEN DB 21;.
NAMELEN DB?; .
NAMEFLD DB 21 DUP(' ');
CRLF DB 13,10,'$'
ENDADDR DW?
MESSG1 DB 'Name?','$'
NAMECTR DB 00
NAMETAB DB 30 DUP(20 DUP(' '));
NAMESAV DB 20 DUP(?),13,10,'$'
SWAPPED DB 00
DATASG ENDS
;------------------------------------------------
CODESG SEGMENT PARA 'Code'
BEGIN PROC FAR;
ASSUME CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATASG
MOV DS,AX
MOV ES,AX
CLD
LEA DI,NAMETAB
CALL Q10CLR;
CALL Q20CURS; 20
A20: CALL B10READ;
CMP NAMELEN,00; ?
JZ A30; -
CMP NAMECTR,30; 30 ?
JE A30; -
CALL D10STOR;
JMP A20
A30: CALL Q10CLR; ,
CALL Q20CURS;
CMP NAMECTR,01; 2 ?
JBE A40; -
CALL G10SORT;
CALL K10DISP;
A40: RET;
BEGIN ENDP
;
; ----------------------
B10READ PROC
MOV AH,09
LEA DX,MESSG1;
INT 21H
MOV AH,0AH
LEA DX,NAMEPAR;
INT 21H
MOV AH,09
LEA DX,CRLF; CLRF
INT 21H
MOV BH,00;
MOV BL,NAMELEN;
MOV CX,21
SUB CX,BX;
B20: MOV NAMEFLD[BX],20H;
INC BX
LOOP B20
RET
B10READ ENDP
;
; ----------------------
D10STOR PROC
INC NAMECTR;
CLD
LEA SI,NAMEFLD
MOV CX,10
REP MOVSW;
RET
D10STOR ENDP
;
; -------------------------
G10SORT PROC
SUB DI,40;
MOV ENDADDR,DI
G20: MOV SWAPPED,00;
LEA SI,NAMETAB
G30: MOV CX,20;
MOV DI,SI
ADD DI,20;
MOV AX,DI
MOV BX,SI
REPE CMPSB;
JBE G40;
CALL H10XCHG;
G40: MOV SI,AX
CMP SI,ENDADDR; ?
JBE G30; -
CMP SWAPPED,00; .?
JNZ G20; -
RET; -
G10SORT ENDP
;
; ------------------------------
H10XCHG PROC
MOV CX,10
LEA DI,NAMESAV
MOV SI,BX
REP MOVSW;
MOV CX,10
MOV DI,BX
REP MOVSW;
MOV CX,10
LEA SI,NAMESAV
REP MOVSW;
MOV SWAPPED,01;
RET
H10XCHG ENDP
; .
; ----------------------------
K10DISP PROC
LEA SI,NAMETAB
K20: LEA DI,NAMESAV;
MOV CX,10
REP MOVSW
MOV AH,09
LEA DX,NAMESAV
INT 21H;
DEC NAMECTR; ?
JNZ K20; -
RET; -
K10DISP ENDP
;
; --------------
Q10CLR PROC
|
|
MOV AX,0600H
MOV BH,61H; (07 /)
SUB CX,CX
MOV DX,184FH
INT 10H
RET
Q10CLR ENDP
;
; -----------------
Q20CURS PROC
MOV AH,02
SUB BH,BH
SUB DX,DX; 0
INT 10H
RET
Q20CURS ENDP
CODESG ENDS
END BEGIN
30 , .
6.2. . .
6.3. NORTON. .
:
1. .
2. .
:
1. , 3 - JANV,FEVR,MART.
FEVR SI .
2. , 3 - 51,81,91.
, 81 SI .
3. , 3 - JANV,FEVR,MART.
FEVR SI .
4. ( 0 9) ASCII- XLAT .
:
1. MONTAB DB 'JANV','FEVR','MART'
LEA SI,MONTAB
MOV AL,32H
XOR AL,30H
DEC AL
MUL 04
ADD SI,AL
2. COSTAB DB 51,81,91
MOV CX,03
A20: MOV AX,81
LEA SI,COSTAB
CMP AX,[SI]
JE A30
ADD SI,02
LOOP A20
A30: RET
3. MONTAB DB 'JANV','FEVR','MART'
STOKIN DB 'FEVR'
LEA SI,MONTAB
A20: MOV CX,04
LEA DI,STOKIN
REPE CMPSB
JE A30
ADD SI,CX
JMP A20
A30: RET
4. ASCNO DB 8
EBCNO DB DUP(' ')
XLTAB DB 30H,31H,32H,33H,34H
DB 35H,36H,37H,38H,39H
LEA SI,ASCNO
LEA DI,EBCNO
MOV CX,01
LEA BX,XLTAB
MOV AL,[SI]
XLAT
MOV [DI],AL