__________
: ,
.
________________________________________________________________
,
o ( )
.
. c
,
, . ,
, ASCII
.
INT ().
(
) .
.
INT 10H,
BIOS.
INT 21H,
DOS. ,
,
Return. p DOS INT 21H
BIOS.
(-, BW),
. . 9 10
.
: INT
________________________________________________________________
INT , DOS
BIOS
.
.
INT
:
- 2
;
- TF IF;
- 2
CS ;
- 2
;
- ;
-
, INT.
.
.
: BIOS INT 10H
|
|
DOS INT 21H .
INT 10H
INT 21H.
________________________________________________________________
.
, , 25 ( 0 24) 80
( 0 79).
:
________________________________________________________
. .
______________ ______________
________________________________________________________
00 00 00 00
00 79 00 4F
12 39/40 00 27/28
24 00 18 00
24 79 18 4F
________________________________________________________
INT 10H
. 5-
12- :
MOV AH,02;
MOV BH,00; 0
MOV DH,05; 05
MOV DL,12; 12
INT 10H; BIOS
02 AH INT 10H
. DX,
( ) BH ( 0).
.
MOV c . :
MOV DX,050CH; 5, 12
________________________________________________________________
("")
. c ,
.
.
DX, 07 -
BH 0600H AX.
:
MOV AX,0600H;AH 06 ()
;AL 00 ( )
MOV BH,07; (/)
MOV CX,0000;
MOV DX,184FH;
INT 10H; BIOS
06 AH INT 10H
. ;
() .
, . 184F,
. -
,
.
: DOS
________________________________________________________________
|
|
,
. ,
DOS, p ,
DOS 2.0. DOS
, DOS
. DOS
, ,
.
: DOS
________________________________________________________________
DOS
, AH 09 (
DOS) DOS INT 21H.
o ($),
:
NAMPRMP DB ' ?','$'
.
.
MOV AH,09;
LEA DX,NAMPRMP; .
INT 21H; DOS
"$" c
( ), : ' ?$',
DB '$'. ,
"$". ,
,
, "$" .
LEA NAMPRMP DX
DOS . NAMPRMP, DX
LEA, o,
DOS DS DX (DS:DX).
: ASCII
________________________________________________________________
256 ASCII ,
. . 00 FF
, ASCII
. 20.
.8.1 COM-,
ASCII. ; B10CLR,
C10SET D10DISP. B10CLR , C10SET
00,00. D10DISP
CTR, 00
y 1 ,
. FF.
__________
page 60,132
TITLE ALLASC (COM) ASCII- 00-FF
CODESC SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:NOTHING
ORG 100H
BEGIN: JMP SHORT MAIN
CTR DB 00,'S'
; :
; ------------------
MAIN PROC NEAR
CALL B10CDR;
CALL C10SET;
CALL D10DISP;
RET
MAIN ENDP
; :
; --------------
B10CLR PROC
MOV AX,0600H
MOV BH,07
MOV CX,0000;
MOV DX,184FH;
INT 10H
RET
B10CLR ENDP
; 00,00:
; -------------------------
C10SET PROC
MOV AN,02
MOV BN,00
MOV DX,0000
INT 10H
RET
C10SET ENDP
; ASCII :
; -----------------------------
D10DISP PROC
MOV CX,256;256
LEA DX,CTR;
D20
MOV AH,09;
INT 21H
INC CTR;
LOOP D20; CX,
; ,
RET;
D10DISP ENDP
CODESG ENDS
END BEGIN
__________
.8.1. ASCII
|
|
.08 .0D c,
. :
(.8.1), ,
COM-. , ,
:ASCII.COM.
(.00),
" " (.01 02) (.03,
04 05). 07 . 06
"", .08 0D
. 0D " "
(). .0E - .
.7F .
.
,
.08 0D. , o , ,
.08 ( ) 0D ( ):
CMP CTR,08H; 08?
JB D30; -
CMP CTR,0DH; / 0D?
JBE D40; -
D30:
MOV AH,40H; < 08
...; > 0D
INT 21H
D40:
INC CTR
: DOS
________________________________________________________________
, .
, DOS, c
, ,
INT. -,
. ,
; ,
. -,
,
.
,
. LABEL BYTE.
.
, - .FF 255.
DOS
. ,
.
NAMEPAR LABEL BYTE; :
MAXLEN DB 20;
ACTLEN DB?;
NAMEFLD DB 20 DUP (' ');
LABEL ,
NAMEPAR MAXLEN a .
MASM
STRUC. , ,
, , ,
c .24 " ".
AH -
10 (. 0AH), (NAMEPAR
) DX INT 21H:
MOV AH,0AH;
LEA DX,NAMEPAR;
INT 21H; DOS
INT ,
, c
, (20
). Return.
|
|
(. 0D) (NAMEFLD
). , , BROWN (Return), c
:
.: |20| 5| | R| O| W| N| #| | | | |...
.: |14|05|42|52|4F|57|4E|0D|20|20|20|20|...
(ACTLEN )
- 05. Return
NAMEFLD +5. # ,
. 0D . 20
.0D,
19 .
:
________________________________________________________________
EXE-, . 8.2, ,
.
,
Return . ,
TED SMITH:
1. 09 2 4,
2. 40, 36
SHR E10CENT 09 o ,
2. 00001001
00000100. NEG +4 -4. ADD
40, DL - 36.
12 36
:
12: TED SMITH
| |
: 36 40
E10CODE , c
(07) :
MOV NAMEFLD[BX],07
BX ,
MOV , BX NAMEFLD,
07. , 05 07
NAMEFLD+05 ( Return).
E10CODE "$" 07.
, F10CENT , p
.
__________
page 60,132
TITLE CTRNAME (EXE)
;--------------------------------------------------------
STSCKSG SEGMENT PARA STACK 'Stack'
DW 32 DUP(?)
STACKSG ENDS
;--------------------------------------------------------
DATASG SEGMENT PARA 'Data'
NAMEPAR LABEL BYTE; :
MAXNLEN DB 20; .
NAMELEN DB?;
NAMEFLD DB 20 DUP(' '),'$';
PRIMPT DB 'Name? ', '$'
DATASG ENDS
;--------------------------------------------------------
CODESG SEGMENT PARA 'Code"
BEGIN PROC FAR
ASSUME CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASC
PUSH DS
SUB AX,AX
PUCH AX
MOV AX,DATASC
MOV DS,AX
MOV ES,AX
CALL Q10CLR;
A20LOOP:
MOV DX,0000; 00,00
CALL Q20CURS
CALL B10PRMP;
CALL D10INPT;
CALL Q10CLR;
CMP NAMELEN,00; ?
JE A30; -
CALL E10CODE;
; '$'
CALL F10CENT;
JMP A20LOOP
A30:
RET; DOS
BEGIN ENDP
; :
; --------------------
B10PRMP PROC NEAR
MUV AN,09;
LEA DX,PROMPT
INT 21H
RET
B10PRMP ENDP
; :
; -----------------------
D10INPT PROC NEAR
MOV AN,0AN;
LEA DX,NAMEPAR
INT 21H
RET
D10INPT ENDP
; '$':
; ------------------------------------
E10CODE PROC NEAR
MOV BN,00; Return (0D)
MOV BL,NAMELEN; . (07)
MOV NAMEFLD[BX],07
MOV NAMEFLD[BX+1],'$';
RET
E10CODE ENDP
; :
; ------------------------------------
F10CENT PROC NEAR
MOV DL,NAMELEN; :
SHR DL,1; 2,
NEG DL; ,
ADD DL,40; 40
MOV DH,12;
CALL Q20CURS;
MOV AN,09
LEA DX,NAMEFLD;
INT 21H
RET
F10CENT ENDP
; :
; --------------
Q10CLR PROC NEAR
MOV AX,0600H;
MOV BH,30; (07 /)
MOV CX,0000; 00,00
MOV DX,184FH; 24,79
|
|
INT 10H; BIOS
RET
Q10CLR
; (/):
; ----------------------------------
Q20CURS PROC NEAR;DX
MOV AH,02;
MOV BH,00; #0
INT 10H; BIOS
RET
Q20CURS ENDP
CODESG ENDS
END BEGIN
__________
.8.2. .
Return
-----------------------------------
, ,
, o
Return. ,
Return, y
:
(.): |14|00|0D|...
Return . p
.
Return
-----------------------
,
: , , .
, , Return (.0D)
NAMEFLD (.20). NAMELEN
c 0D. , ,
NAMELEN 05, 0D NAMEFLD+5.
BX NAMEFLD:
MOV BH,00; BX
MOV BL,NAMELEN; 0005
MOV NAMEFLD[BX],20H; 0D
MOV (.20) ,
o : NAMEFLD
BX, .. NAMEFLD+5.
-----------------------
, .
:
NAMEPAR (.)
1. BROWN |14|05|42|52|4F|57|4E|0D|20|20|20|... |20|
2. HAMILTON |14|08|48|41|4D|49|4C|54|4F|4E|0D|... |20|
3. ADAMS |14|05|41|44|41|4D|53|0D|4F|4E|0D|... |20|
HAMILTON BROWN. , ADAMS
HAMILTON, HAMIL. Return
T. - ON o ADAMS.
NAMEFLD :
MOV CX,20; 20
MOV SI,0000;
B30:
MOV NAMEFLD[si],20H;
INC SI;
LOOP B30;20
SI DI BX.
, ,
. , NAMEFLD
DB (),
, WORD, a
PTR (), :
MOV CX,10; 10
LEA SI,NAMEFLD;
B30:
MOV WORD PTR[SI],2020H;
INC SI;
INC SI;
LOOP B30;10
MOV B30
, SI. p
LEA SI
MOV 30, , ,
:
MOV WORD PTR[NAMEFLD],2020H;
,
. c
,
.
: DOS
________________________________________________________________
, DOS 2.0
( UNIX).
DOS,
. (file handle),
y BX,
/. :
0 ( ) CON
1 ( ) CON
2 ( ) CON
3 / AUX
4 LPT1 PRN
DOS / - INT 21H,
AH: .3F - , .40 - .
CX /, DX -
/.
/
(CF) AX
, . o
CF, ( 6) AX.
AX , ,
- CF,
- .
o ,
o / .
-
, p.
: DOS
________________________________________________________________
DOS:
DISAREA DB 20 DUP(' ');
...
MOV AH,40H;
MOV BX,01;
MOV CX,20;
LEA DX,DISAREA;
INT 21H; DOS
LEA DX DISAREA DOS
, .
( ), AX
.
, y .
CF ( 6) AX.
AX , ,
- CF.
:
----------------------------
DEBUG
. DEBUG A
100 ( ) p 100.
, DEBUG ,
:
100 MOV AH,40
102 MOV BX,01
105 MOV CX, ( )
108 MOV DX,10E
10B INT 21
10D RET
10E DB ' '
AH
. 10F DX - DB,
.
, Return.
U (U 100,10D) .
R T .
INT 21H BIOS,
10B GO (G 10D) RET.
. Q DOS.
: DOS
________________________________________________________________
,
DOS:
INAREA DB 20 DUP (' ');
MOV AH,3FH;
MOV BX,00;
MOV CX,20;
LEA DX,INAREA;
INT 21H; DOS
LEA INAREA DX.
INT , c ,
CX (20 ). Return ( .
0D) . , "PC Users
Group" INAREA :
PC Users Group, .0D, .0A
(.0D), , (.0A),
.
p
. c ,
.
CF (
) AX ,
. 14 2
, .. 16.
.
YES NO,
p , , , .
,
. CF AX
(6 ). AX
, ,
- CF.
, ,
y CX, .
, CX 08, "PC
Exchange". "PC Excha"
. AX
08. INT
, ,
. ,
"ng", , AX
05.
CF .
INT: PC Excha AX = 08
INT: ng,0D,0A AX = 05
, )
AX , CX )
AX CX , - 0D
0A.
DOS 0AH
.
.
:
-------------------------
c
DEBUG.
12 , .
DEBUG A 100
, c 100. , DEBUG
, .
100 MOV AH,3F
102 MOV BX,00
105 MOV CX,0C
108 MOV DX,10F
10B INT 21
10D JMP 100
10F DB ' '
AH BX c
, CX
DX 10F - DB .
.
, Return.
U 100,108 .
R T MOV.
10B, G 10D INT
( BIOS ). ,
Return. AX,
CF D 10F, .
Q.
,
________________________________________________________________
-
,
:
ASCII
CR 13 0DH
LF 10 0AH
TAB 09 09H
-
, DOS. :
MESSAGE DB 09,'PC Users Group Annual Report',13,10
MOV AH,40H;
MOV BX,01;
MOV CX,31;
LEA DX,MESSAGE;
INT 21H; DOS
EQU
:
CR EQU 13; EQU 0DH
LF EQU 10; EQU 0AH
TAB EQU 09; EQU 09H
MESSAGE DB TAB, 'PC Users Group Annual' DB 'Report', CR, LF
________________________________________________________________
- INT 10 BIOS
. INT 21H DOS
-.
- ,
INT 21 INT 21H - .
- A, BX, CX
DX -.
- INT 21H DOS
- ($) .
- -.
.
- DOS
. INT 21H ,
,
.
- DOS
A 40, BX -
01.
- DOS
3FH, BX -
00.
. ,
.
________________________________________________________________
8.1.
2540?
8.2. :
12, 8.
8.3. , 0- 12-
79- 22- .
8.4.
' (//)'.
. : ) DOS, )
DOS .
8.5.
8.4. : )
DOS, ) DOS .
8.6. ,
.
8.7. .8.2
, , : )
12 15; )
0 15.
8.8. .8.2
DOS. , .
9 II:
__________
: ,
, , ,
- .
________________________________________________________________
.8
.
,
- , , .
( BIOS 10) ,
, .
c-
.
---------------------
4,
. B0000 ( ).
:
- 2 (25 80 );
- 2 -, ,
, .
/
-----------------------------
16
( ), .B8000.
( ASCII-)
, - (BW) .
p , 0 3
80 c 0 7 40 .
- 0.
.
________________________________________________________________
, ,
( )
. - 8 :
: BL R G B I R G B
: 7 6 5 4 3 2 1 0
RGB , (red),
(green) (blue) . 7 (BL)
, 3 (I) - .
,
- (BW).
o:
RGB RGB
( ) 000 000
( ) 000 001
( ) 000 111
( ) 111 000
;
. ,
, , :
.
0000 0000 00 ( )
0000 0111 07 ()
1000 0111 87 ()
0000 1111 0F ()
0111 0000 70 ()
1111 0000 F0 (. )
, ,
. ,
. INT
10H. BL -,
AH : 06 ( ), 07 (
), 08 ( ), 09 ( ).
p , ,
.
.00, .
BIOS INT 10H
________________________________________________________________
INT 10H .
AH , . c
BX, CX, DX, SI BP.
.
AH=00: .
. p
c INT 10H.
. AL
:
00 40 25 -
01 40 25 i6-
02 80 25 -
03 80 25 16-
04 320 200 4-
05 320 200 -
06 640 200 -
07 80 25 -
08 - 0A PCjr
0D 320 200 16- (EGA)
0E 640 200 16- (EGA)
0F 640 350 - (EGA)
10 640 350 64- (EGA)
EGA (Enhanced Graphics Adapter) -
.
16- :
MOV AH,00;
MOV AL,03; 80 25
INT 10H; BIOS
, ,
BIOS INT 11H. AX ,
5 4 :
01 40 25 -
10 80 25 -
11 80 25 - -
, , p
AX INT 11H .
AH=01: .
ASCII-.
. INT
. p .
INT 10H, : 4-0
CH , 4-0 CL -
. p : 0 13
EGA p 0 7 .
:
MOV AH,01;
MOV CH,00;
MOV CL,13;
INT 10H; BIOS
.
, , 04/08, 03/10 ..
, . 12/13 (
) 6/7 ( ) .
AH=02: . c
c .
0, 0 3 80
.
AH 02, BH DX
:
MOV AH,02;
MOV BH,00; 0
MOV DH,;
MOV DL,;
INT 10H; BIOS
AH=03: .
( ), p ,
:
MOV AH,03;
MOV BH,00; 0
INT 10H; BIOS
DH , DL
- . CH c,
CL - .
AH=04: . e
p.
AH=05: .
0 3. 40 25
8 ( 0 7), 80 25 - 4
( 0 3).
MOV AH,05;
MOV AL,;
INT 10H; BIOS
AH=06: .
,
. p
, ,
. .
06 .
AL 00
, .
AL .
, .
:
MOV AX,0601H;
MOV BH,07;: , -
MOV CX,0000; 00,00
MOV DX,184FH; 24,79 ( )
INT 10H; BIOS
AL. BH
, ,
.. CX DX
. :
1. ROW () 0
.
2. .
3. , (CMP
ROW,22).
4. , ROW (INC ROW) .
5. , , ROW
.
AH=07: .
.
AH 07, p
06 .
AH=08: / .
, ,
:
MOV AH,08; ./.
MOV BH,00; 0 ( .)
INT 10H; BIOS
AL , AH -
. .00
ASCII-. c,
.
AH=09: / .
,
.. :
MOV AH,09;
MOV AL,;
MOV BH,; (..)
MOV BL,;
MOV CX,;
INT 10H; BIOS
AL .
CX .
.
.
"" :
MOV AH,09;
MOV AL,03H; ( )
MOV BH,00; 0 (. )
MOV BL,0F0H;,
MOV CX,05;
INT 10H; BIOS
( )
.
,
CX 01 AL
. CX
, LOOP. ,
( 02).
BL
. 7 0, ,
7 1, XOR.
AH=0A: .
0A 09 , 0A
:
MOV AH,0AH;
MOV AL,;
MOV BH,; ( )
MOV CX,;
INT 10H; BIOS
DOS INT 21H
.
AH=0E: .
, .
AH . 0E, p AL
, ( )
BL - BH.
( 07H), (08H), (0AH)
(0DH) , .
,
c,
.
AH=0F: .
AL (. AH=00), p AH -
(20, 40 80), BH - .
AH=13: ( AT).
AT
:
MOV AH,13H;
MOV AL,;0, 1, 2 3
MOV BH,;
LEA BP,; ES:BP
MOV CX,;
MOV DX,;
INT 10H; BIOS
:
0 - ;
1 - ;
2 - , ;
3 - , .
: ,
________________________________________________________________
, . 9.1,
. ,
,
40 :
Name? Francis Bacon Francis Bacon []
| |
0 40
ROW ( ) COL (
). INT 10H .
, 20- .
.
__________
page 60,132
TITLE NMSCROLL (EXE) , ,
; -------------------------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
DW 32 DUP(?)
STACKSG SEGMENT PARA STACK 'Stack'
DW 32 DUP(?)
STACKG ENDS
; -------------------------------------------------------
DATASG SEGMENT PARA 'Data'
NAMEPAR LABEL BYTE; :
MAXNLEN DB 20; .
ACTNLEN DB?;
NAMEFLD DB 20 DUP(' ');
COL DB 00
COUNT DB?
PROMPT DB 'Name? '
ROW 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 DS
MOV AX,DATASG
MOV ES,AX
MOV AX,0600H
CALL Q10CLR;
A20LOOP:
MOV COL,00; 0
CALL Q20CURS
CALL B10PRMP;
CALL D10INPT;
CMP ACTNLEN,00; ? (.. )
JNE A30
MOV AX,0600H
CALL Q10CLR; , ,
RET;
A30:
CALL E10NAME;
JMP A20LOOP
BEGIN ENDP
; :
; --------------------
B10PRMP PROC NEAR
LEA SI,PROMPT;
MOV COUNT,05
B20:
MOV BL,70H;
CALL F10DISP;
INC SI;
INC COL;
CALL Q20CURS
DEC COUNT;
JNZ B20; n
RET
B10PRMP ENDP
; :
; ----------------------
D10INPT PROC NEAR
MOV AN,0AH
LEA DX,NAMEPAR
INT 21H
RET
D10INPT ENDP
; :
; ----------------------------------
E10NAME PROC NEAR
LEA SI,NAMEFLD;
MOV COL,40;
E20:
CALL Q20CURS;
MOV BL,0FOH;
CALL F10DISP;
INS SI;
INS COL;
DES ACTNLEN;
JNZ E20; n
CMP ROW,20; ?
JAE E30;
INC ROW
RET
E30: MOV AX,0601H; --
CALL Q10CLR;
RET
E10NAME ENDP
; :
; ----------------------
F10DISP PROC NEAR;BL ()
MOV AN,09;
MOV AL,[SI];
MOV BH,00;
MOV CX,01;
INT 10H; BIOS
RET
F10DISP ENDP
; :
; --------------
Q10CLR PROC NEAR;AX
MOV BH,07; /
MOV CX 0000
MOV DX,184FH
INT 10H; BIOS
RET
Q10CLR ENDP
; (/):
; ----------------------------------
Q20CURS PROC NEAR
MOV AN,02
MOV BH,00
MOV DH,ROW
MOV DL,COL
INT 10H
RET
Q20CURS ENDP
CODESG ENDS
END BEGIN
__________
.9.1. , .
D10INPT DOS INT 21H.
BIOS INT 10H :
1.
.
2. INT 10H ( 08) 08 AH 00 BH.
AL.
3. AL RETURN
,
.
4. AL .
5. AL RETURN, .
6. .
7.