.


:




:

































 

 

 

 


XLAT




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

 

 





:


: 2015-10-01; !; : 592 |


:

:

, .
==> ...

1545 - | 1314 -


© 2015-2024 lektsii.org - -

: 0.052 .