You are on page 1of 248

 .

IBM PC

IBM PC

IBM PC 2

-----------------------------------------------------------
1. IBM PC


ASCII




2.



:
:

:



3.






4.







IBM PC 3



5.



(DB)
(DW)
(DD)
"" (DQ)
(DT)

() EQU


6. COM-

EXE- COM-
COM-
COM-



7.

JMP
LOOP


(CALL)

:
: AND, OR, XOR, TEST, NOT
:




8. I:

: INT


: DOS
: DOS
IBM PC 4
: ASCII
: DOS
:
: DOS
: DOS
: DOS
CR, LF, TAB



9. II:


BIOS
: , ,
ASCII
/ DOS
BIOS INT 16H



10. III:

(-)


:


11.


REP:
MOVS:
LODS:
STOS:
CMPS:
SCAS:


()
:


12. I:

IBM PC 5

DX:AX


Intel 8087 80287


13. II: ASCII BCD

ASCII
- (BCD)
ASCII
ASCII

:


14.




() (XLAT)
: ASCII
:
TYPE, LENGTH SIZE


15. I:

(FAT)


16. II: DOS

: FCB
FCB
: FCB

: FCB

IBM PC 6
:

:
/

:


17. III: DOS

ASCIIZ


:
ASCII
DOS


18. IV: / BIOS

BIOS

: BIOS


19.


DOS
:
ASCII
DOS

BIOS INT 17H


20.


LOCAL

(&)
IBM PC 7
: REPT, IRP IRPC

EXITM
, IF IFNDEF
, IFIDN


21.


EXTRN PUBLIC
: EXTRN PUBLIC
: PUBLIC
:

- -
-
C -


22.

COMAND.COM

COM-
EXE-
EXE-

23. BIOS DOS


BIOS
DOS
DOS INT 21H


24.




25.

IBM PC 8

1. ASCII
2. -
3.
4.

IBM PC 9
-----------------------------------------------------------

60- c ().
1974 o Intel 8080.
1978 Intel - Intel 8086,
8088 c 80188, 8086 -
p
,
IBM PC 10

IBM PC
c - 64
. , ,
.
IBM PC.
, ,
, , .
PC-DOS MS-DOS,
.
C :
.
,
.
.

PC,

- y :
PC - MS-DOS Microsof

: , a

IBM PC 11

.
, :
- ;
-
;
-
, ;
-
, , ASCII
,
, /;
- ,
;
- ;
- .

- .

IBM PC 12


.. "
, , IBM
Framewor .
, .

IBM PC 1

 1. IBM PC ----------------------------- IBM PC


:
------------------------------------------------------------

.
,
------------------------------------------------------------

.
. ,
;
,
IBM PC 2

, . ,
, "", 01000001
0 7 ,

: 7 6 5 4 3 2 1 0
: 0 1 0 0 0 0 0 1
2 1024, .
PC 16- ,
: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
: 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1
ASCII ------------------------------------------------------------

a
------------------------------------------------------------

IBM PC 3

,
() .

: 128 64 32 16 8 4 2 1
: 1 1 1 1 1 1 1 1
1, - 2, - 4 ..
01000001 1 64, .. 65. 010000
-
, 01000001
65;
- (
), ,
, , , 01000001
"".

,
. 8088 16-

.
0
1
1
1

+
+
+
+

0
0
1
1

=
=
=
+

0
1
10
1 = 11

IBM PC 4

. ,

01000001 65
00101010 42
01101011 107
, 01101011 107. :

00111100 60
00110101 53
01110001 113

,
65: 01000001
: 10111110
1: 10111111 ( -65)

10111111, 65 .
: 10111111
: 01000000
1: 01000001 ( +65)
+65 -65 :
01000001 (+65)
10111111 (-65)
(1)00000000

IBM PC 5

. . ,
:
65 01000001
+(-42) 11010110
23 (i)00010111

23 .
, :
00000001
11111111
: (1)00000000

(1), , 11111111 -1
0 00000000
-(+1) -00000001
-1 11111111

c :
+3 00000011
+2 00000010
+i 00000001
0 00000000
-1 11111111
-2 11111110
-3 11111101

:

------------------------------------------------------------

IBM PC 6

, p (
: 0101 1001 0011 0101 1011 1001 1100 1110
: 5 9 3 5 11 9 12 14

, ,
59 35 B9 CE

"" 0 F, 16,
.
, .

6 5 F F 10 FF
4 8 1 F 10 1
A D 10 1E 20 100
----------------------------------------------------------- ---------------------------------------------------------- 1.1. ,
.

, .20 32, .100 - 256 .1


, , .4B,
IBM PC 7

"H", , 25H ( 37). .


2 p
------------------------------------------------------------

, - , ..
1. . ,
.


.
(CS) .
2. .
, ,
. (DS)
.

3. .
,

. (SS)
.

, (ES),
c.

IBM PC 8

, , . 045F
DS: 045F0
: 0032
: 04622

8086/8088 ?
80286 24 , FFFFF0 16
------------------------------------------------------------

8086/8088 14 , y
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

80286 80386 , 16-.


CS, DS, SS ES

64 ,

IBM PC 9

1. CS.
.
(IP) ,
.
CS. 2. DS.
. ,
,
. 3. SS.
. 4. ES.

. ES
DI.
ES,
.
: AX, BX, CX DX

" ".
MOV CX,00

MOV CH,00
MOV CL,00
1. AX. AX
-,

. , ,
AX.
,
AX.
AX: | AH | AL |
2. BX. BX .
,
""
. - .
BX: | BH | BL |

IBM PC 10
3. CX. CX .

. CX
.
CX: | CH | CL |
4. DX. DX .
/
,
DX AX.
DX: | DH | DL |

c 8-,
: SP BP

SP BP .
1. SP.
,
. SS
.
2. BP. :
.
: SI DI


1. SI.
.
SI DS.
2. DI.
.
DI ES.
: IP

IP , .

IBM PC 11

16

O ()
. D ()

(
). I ()
. T ( )
.
, DOS DEBUG
,


. S ()
(0 - ,
1 - ). Z ()

(0 - , 1 -
). A ( ) 3-
8- ,

. P ( )
8- (1 - 0 ). C () ,
,

.

O, S, Z, C
PC ------------------------------------------------------------

: c , ,
IBM PC 12

.
- (Intel); - (ROM 40); - (RAM 51

,
, o
"" ,
. 1.3 : o ()
: ,
. ,
,
IBM PC 13

. ,

. (
ROM :
, , RAM (Random Access Memory)
RAM ,
. 64 ,

IBM PC 14

RAM , ROM - .
RAM - .

. 00 -
|01|04|
| |
5612, 5613

,
------------------------------------------------------------ ,
.
. - ,
. - ASCII
: 0 1,
. -
. , 1111 2**3 + 2**2 + 2**1 +
2**0, 15.

IBM PC 15

- :

+1. -
. . 0-9 A-F
0000 1111. - :
,

.
. - , ,
. - ROM () RAM ()
. - ()
.
----------------------------------------------------------- 1.1.
. ( 1
): ) P, ) p, ) #, ) 5. 1.2.
5, ) 13, ) 21, ) 27. 1.3. C :
) 00010101 ) 00111110 ) 00011111

00001101 00101001 00000001


1.4.
: ) 00010011, ) 00111100, ) 00111001. 1.5.
: ) 11001000, ) 10111101, )
10000000. 1.6. . ) ASCII Q,
) ASCII 7, ) 01011101, )
01110111. 1.7. . :

) 23A6 ) 51FD ) 7779 ) EABE


0022 3 887 26C4
1.8. .
.
2. ,
. . )
19, ) 33, ) 89, ) 255, ) 4095, ) 63398. 1.9. ,
,
.

IBM PC 16
1.10. :
) , ) , )
, ) , )
, )
? 1.11.
?

IBM PC. 2 30

 2.  -----------------------------------------------------------
: , .
------------------------------------------------------------

DOS - DEBUG,
.
c .
------------------------------------------------------------

DOS A. ,
DOS ,
------------------------------------------------------------

DOS D
IBM PC. 2 31

, DEBUG .
1. .
.

, .
.413 414
DEBUG ,
:
400 - ,
40 ( )
13 - .
, :
D 40:13 ( Return)
, ,

,
.

. , .
.
.. . . . ()
8000 0080 128
0001 0100 256
8001 0180 384
0002 0200 512
8002 0280 640
2. . "" ROM
. FE000. ,
:
D FE00:0 ( Return)

.
3. ROM BIOS. ROM BIOS mm/dd/yy
. FFFF5.
D FFFF:05 ( Return)
()
.

IBM PC. 2 32

, , D (Display),
DOS Q (Quit).
: ---------------------------------------------

- ,

B82301 . 0123 AX.
052500 . 0025 AX.
8BD8 AX BX.
03D8 AX BX.
8BCB BX CX.
2BC8 AX AX ( AX).
90 .
CB DOS.

, : , .
.
,
E CS:100 B8 23 01 05 25 00 ( Return)

E Enter (). CS:100 ,


IBM PC. 2 33

DEBUG). E p
Enter:

E CS:106 8B D8 03 D8 8B CB (Return)
, CS:106 107, 108, 109, 10A 10B.

E CS:10C 2B C8 2B C0 90 CB (Return)
, CS:10C 10D, 10E, 10F, 110 111.
- . p. 2-1 ,
R .
AX=0000, BX=0000, ...

DOS
. 2.1 :
NV UP DI PL NZ NA PO NC
----------------------------------------------------------- ---------------------------------------------------------- . 2.1. .

: , , ,
R 0100 . CS
13C6:0100 B82301 MOV AX,0123

IBM PC. 2 34

CS=13C6 ,
13C6 13C60. 13C6:0100
100 (.) 13C6
CS. B82301 - , CS:100. MOV AX,0123 -
.
,

.
.

AX.

MOV . T (
AX: |01|23|

IP:0103 :

13C6:0103 052500 ADD AX,0025


T. 25 (AL)
T. AX
T .

IBM PC. 2 35

T NOP RET, .
D CS:100

16 .
00 CS:100 CS:10F.
IP
.2.2 D CS:100.
----------------------------------------------------------- ----------------------------------------------------------. 2.2. .

DEBUG Q (Quit - ).
: --------------------------------------------------

,
, c :
DS ..
0000 2301 0 1
IBM PC. 2 36
0002 2500 2 3
0004 0000 4 5
0006 2A2A2A 6, 7 8
, . , o, , 23
, :

A10000 ( ), DS 0000, AX.


03060200 ( ), DS 0002,
A30400 AX , DS 0004.
CB DOS.

, MOV p : A1 A3.
DEBUG .
E (Enter) :
E DS:00 23 01 25 00 00 00 ( Return)
E DS:06 2A 2A 2A ( Return)

( ) , DS:00.
(***) ,
, CS:100:
E CS:100 A1 00 00 03 06 02 00
E CS:107 A3 04 00 CB

IBM PC. 2 37

CS:100 CS:10A.
: D DS:000 (Return)
: D CS:100 (Return)

, . 2.3.
R
13C6:0100 A10000 MOV AX,[0000]

, CS 13C6, CS:100 A10000.


----------------------------------------------------------- ----------------------------------------------------------. 2.3.
,

MOV AX,0000
o AX 0000.
T. MOV AX,[0000] c ,
ADD , T.
MOV [0004],AX T.
: 23 01 25 00 48 01 2A 2A 2A
: 00 01 02 03 04 05 06 07 08

IBM PC. 2 38

0148, AX 04 05,
D DS:100 , . 2.3.
------------------------------------------------------------

CS
CS: 04AF0
IP: 0023
: 04B13
, , 04B13 :

A11200 MOV AX,[0012]


|
04B13
04B13 .
[0012] a,
DS: 04B10
: 0012
: 04B22
, 04B22 04B23 :
: 24 01
| |
: 04B22 04B23

IBM PC. 2 39

24 04B22 AL,

8086, 80286 80386 , e

: ||24|01||
|
: 04B23
4B22 4B23
-
, ,
EVEN,
: ------------------------------------------

IBM PC. 2 40
(RAM),

E CS:100 CD 12 CB
R ( Return) . IP

STI
PUSH DS
MOV AX,0040
MOV DS,AX
MOV AX,[0013]
POP DS
IRET
AX p .
------------------------------------------------------------

DOS 2.0 DEBUG


A

A (Assemble) DEBUG

A 100 [Return]
:0100.
IBM PC. 2 41

MOV AL,25 [Return]


MOV BL,32 [Return]
ADD AL,BL [Return]
RET [Return]
:
:0100
:0102
:0104
:0106

MOV AL,25
MOV BL,32
ADD AL,BL
RET

. Return
, .
U
U (Unassemble) .
U 100,106 [ Return]

:0100 B025 MOV AL,25


:0102 B332 MOV BL,32
:0104 00D8 ADD AL,BL
:0106 C3 RET
, R
, .

DEBUG :

IBM PC. 2 42
1.
.
:
:
DEBUG n:[Return]
D
E,
: W [Return]
2. DEBUG
. :
DEBUG,
A (assemble) E (enter)
,
: N .COM [Return].
COM (. 6
COM-).
,
,
.

:0106 C3 RET

106 () 100 (), .. 6.
CX : R CX [Return]
CX 0000 (
)
- 6,
: W [Return]

DEBUG "Writing nnnn bytes." ( nnnn ). nnnn


------------------------------------------------------------

DOS DEBUG ,

IBM PC. 2 43

, , , ,
R IP [Return]

IP .
- ,
DOS DEBUG. :
-----------------------------------------------------------2.1.
) . 4629 AX;
) . 036A AX.
2.2. , :
E CS:100 B8 45 01 05 25 00
. 45 54.
E
, .. 45
54.
2.3. , :
E CS:100 B8 04 30 05 00 30 CB
) ? (
).
) AX
0460,
6004. ?
IBM PC. 2 44
)
.
?
2.4. :
B0 25 D0 E0 B3 15 F6 E3 CB
:
- . 25 AL;
- AL
( AL 4A);
- . 15 BL;
- AL
BL.
(E)
CS:100. ,
.
D CS:100 .

R T
RET.
AX
?
2.5. (E)
:
: 25 15 00 00
: A0 00 00 D0 E0 F6 26 01 00 A3 02 00 CB
:
- DS:00
(25) AL;
- AL
( 4A);
- AL
DS:01 (15);
- AX ,
DS:02.
D
.
R T
(RET). AX
0612. D
DS:00 , DS:02
1206.
2.6. (2.5)
TRIAL.COM.

IBM PC. 2 45
2.7. A ,
:
MOV
ADD
SHL
SUB
NOP
RET

BX,25
BX,30
BX,01
BX,22


NOP.

IBM PC. 3 60

 3.  -------------------------------------------------------
: ,
------------------------------------------------------------

2 .
, ,

-----------------------------------------------------

, o ,
,
1. ;
2. ADD AX,BX ;

IBM PC. 3 61

-
----------------------------------------------------------- :

[] [()]

( ), ( ) p

COUNT DB 1 ;, ,
MOV AX,0 ;,

:
: A Z a z
: 0 9
: (?)
(.) ( )
" " (@)
(-)
($)
.
ADD AX,BX
"", AX BX . ,
MOV REGSAVE,AX

IBM PC. 3 62

REGSAVE ,

, )

COUNTER DB 0 ; (DB)
;

, .

RET ;
INC CX ; CX
ADD AX,12 ; 12 AX
, -
------------------------------------------------------------

, p
: PAGE TITLE

IBM PC. 3 63

, ( ). P

PAGE. ,

PAGE 60,132
10 255, - 60
, 60. , 60

TITLE. , ()
TITLE

,
TITLE ASMSORT -

SUBTTL,
SEGMENT

- .

SEGMENT []
.
.
IBM PC. 3 64
.
ENDS

,
1. .
. PARA,
.
16 , ..
. nnn0.
PARA. 2. .

( .
" ").
: STACK, COMMON, PUBLIC, AT
MEMORY.
:
SEGMENT PARA STACK

, :
PUBLIC, COMMON MEMORY. ,
' ,
. 3. . , ,

:
SEGMENT PARA STACK 'Stac '

. 3.1. SEGMENT
PROC
.
- SEGMENT PARA
- PROC FAR
.
.
.
RET
IBM PC. 3 65
- ENDP
- ENDS

,
ENDP , PROC.
(. .7).
ASSUME

SS , DS

ASSUME SS:_,DS:__,CS:__

, SS:_ ,
END

, ENDS , ENDP .

END [_]

, , ,
------------------------------------------------------------

, .
IBM PC. 3 66

MOV
MOV
MOV
;
MOV
MOV

AX,BX ; BX AX
AX,WORDA ; WORDA AX
AX,[BX] ;
BX AX
AX,25 ; 25 AX
AX,[25] ; 25

, .
------------------------------------------------------------

: EXE COM. EXE-


DOS RET. .3.1
1. ASSUME - ,

; ,
CODESG - CS, DATASG - DS STACKSG - SS. DATASG
STACKSG ,
:
STACKSG SEGMENT PARA STACK Stac 'Stac '
DATASG SEGMENT PARA 'Data'
,

. ,
:
0, ,
2 ..
2.
256- (.100) ,
PSP.
DS
PSP.
, . , RET
DOS.

IBM PC. 3 67
3. ,
(, ).
SUB AX,
AX, PUSH
.
4. DOS
SS CS.
DS
, DS
MOV, .3.1.
" . II"
DS.
----------------------------------------------------------- ----------------------------------------------------------. 3.1. EXE-.
5. RET
DOS, ,
PUSH DS.
INT
20H.

, - .
------------------------------------------------------------

. 3.2. .
STACKSG DB ( ), 12 'STACK
CODESG , ASSUME

IBM PC. 3 68

, ASSUME - PUSH, SUB PUSH


, p.2.1 ,
----------------------------------------------------------- " "
.
ENDS,
- ENDP, -
END.
ASSUME
.
EXE- ( COM-, . .6)
32 ,
PUSH, SUB
PUSH DS .
-----------------------------------------------------------3.1.
?
3.2. : ) PC_AT, ) $50,
) @$_Z, ) 34B7, ) AX?
3.3. ,
?
3.4. END,
) , ) , ) ?
3.5. .
3.6. RET END.
3.7. , CDSEG,
DATSEG STKSEG .
ASSUME.
3.8.
DS .
IBM PC. 4 79

 4.  --------------------------------------------
: , .
------------------------------------------------------------

, ,
------------------------------------------------------------

.3.2. ,
EDLIN :EXASM1.ASM [Return]

DOS EDLIN "New file" "*-".


. E ( Return)
DIR B: ( )
DIR B:EXASM1.ASM ( )

IBM PC. 4 80

,
PRINT B:EXASM1.ASM [Return]

EXASM.ASM -
--------------------------------------------------------

EXASM1.ASM

OBJ- , .
1. OBJ- ,
.

----R. 2. , ,
()
;
,
,
. 3. EXE-
.

OBJ- ( ) EXE-, EXE-


IBM PC. 4 81

EXE-. , , , ,
------------------------------------------------------------

, ,
, A,
source filename [.ASM]:
object filename [filename.OBJ]:
source listing [NUL.LST]:
cross-reference [NUL.CRF]:

, .
- ( ).
, .
, c .
, R
source filename [.ASM]:B:EXASM1 [Return]
IBM PC. 4 82
object filename [filename.OBJ]:B: [Return]
source listing [NUL.LST]:B: [Return]
cross-reference [NUL.CRF]:B: [Return]

, , OBJ- -
4 " " ()


,
. 4.1. , c
PAGE TITLE.
,
0000.
----------------------------------------------------------- ----------------------------------------------------------. 4.1.

IBM PC. 4 83

0000.
END BEGIN, e PROC
EXASM1.LST, PAGE p 132
MODE LPT1:132,6

,
p
,
IBM PC. 4 84
------------------------------------------------------------

, c -
, DOS A,

Object Modules [.OBJ]: B:EXASM1 EXASM1.OBJ
Run file [EXASM1.EXE]: B: EXASM1.EXE
List file [NUL.MAP]: CON EXASM1.MAP
Libraries [.LIB]: [Return]

- , OBJ .
- (), ( A:EXASM1.EXE).
, LINK y - NUL.MAP (.. MAP
Start Stop Length Name
00000H 00015H 0016H CODESG
00020H 0007FH 0060H STACKSG

IBM PC. 4 85

- Return, LINK
y .
------------------------------------------------------------

(-!) . . 4.2
B:EXASM1.EXE B:EXASM1
DOS , EXE ( COM), .
DEBUG B:EXASM1.EXE

DOS DEBUG, , , EXE-


D SS:0

12- STACKSEG.
D CS:0
:
1E2BC050B823010525008BD803 ...

, 0123 0025

IBM PC. 4 86

R p T (
.
dir, :
DIR B:EXASM1.*
----------------------------------------------------------- ----------------------------------------------------------. 4.2. ,
.

: EXASM1.BAK ( E
, .
ERASE B:EXASM1.OBJ, ...

() ASM- EXE- .
.
------------------------------------------------------------

, . 4.1, ,
2 (.2.3) ,

IBM PC. 4 87

DW (Define Word - c), 32 ,


: 32 . ,
. 4.3 DATASG,
FLDB 125, p . 007D.
----------------------------------------------------------- ----------------------------------------------------------. 4.3.
.

FLDC , (?).
CODESG - ,
0004 B8 --- R MOV AX,DATASG
0007 8E D8 MOV DS,AX

MOV DATASG AX. ,

B8 --- R
, a DATASG;
IBM PC. 4 88

p , c
MOV AX DS. ,
. -,
MOV DS,DATASG ?

, c
-, DS, SS CS ? ,
, c
, , . 4.
------------------------------------------------------------

(CRF),
cross-reference [NUL.CRF]:B: [Return]

IBM PC. 4 89

CRF- p
Cref filename [.CRF]:
List filename [cross-ref.REF]:

CRF-, .. B:EXASM1.
DOS PRINT. 4
----------------------------------------------------------- ----------------------------------------------------------. 4.4.

. 4.4 , . 4.3.
----------------------------------------------------------- OBJ-,
- OBJ- EXE-.
(M)ASM, LINK CREF
Return.
. CREF .
CHKDSK
.
,

.
------------------------------------------------------------

IBM PC. 4 90
4.1. MASM
TEMPY.ASM
LST, OBJ CRF, ,
B.
4.2. TEMPY ( 4.1) )
DEBUG, )
DOS.
4.3. : )
file.BAK, ) file.ASM, ) file.LST, ) file.CRF, )
file.OBJ, ) file.EXE, ) file.MAP.
4.4. DS,
, - DATSEG.
4.5. :
- . 30
AL;
-
( SHL);
- . 18
BL;
-

( )
AL
( )
AL BL ( MUL BL).

RET.
.
(
)
. .
DEBUG, ,
() .
4.6. 4.5 :
- ( DB)
FLDA, . 28, FLDB,
. 14;
- ( DW)
FLDC, ;
- FLDA AL
;
- AL
FLDB (MUL FLDB);
- AX FLDC.

.
,
DEBUG.

IBM PC. 5 104

 5.  -----------------------------------------------------------
: .
------------------------------------------------------------

, -
, ..
MOV AL,20H

20 .
------------------------------------------------------------

: -,

[] Dn
(
),
,
.
" " 3.
: DB (), DW (), DD ( ),
DQ ( ) DT ( ). , :
FLD1 DB 25
,
IBM PC. 5 105

FLDB DB ?

FLD3 DB 11, 12, 13, 14, 15, 16, ...


c . F

MOV AL,FLD3+3
AL 14 (. 0E).
[] Dn - DUP () ...
:

DW 10 DUP(?) ;
DB 5 DUP(14) ; , .14
DB 3 DUP(4 DUP(8));
8 (8888),
.

, , ,
DB, p
----------------------------------------------------------- ----------------------------------------------------------. 5.1. .

IBM PC. 5 106

a .

. 0 9

. . . 0 F

. 0 1

. 0 7
. ASM.

, , ,
. 5.1
(DB) -----------------------------------------------------------

IBM PC. 5 107

, , DB (
DB .
. 5.1 FLD3DB, FLD4DB, FLD5DB FLD8DB. F
(DW) -----------------------------------------------------------

DW , ( ).
DW .
. 5.1 FLD1DW FLD2DW . FLD3DW
FLD4DW . ,
DW, DD DQ . ,
(DD) --------------------------------------------------

IBM PC. 5 108

DD , c ( ).
. 5.1 FLD3DD . FLD4DD
DD . ,
DD .
(DQ) ---------------------------------------------

DQ , ( ).
1152921504606846976

. 5.1 FLD2DQ FLD3DQ .


DQ a DD DW.
(DT) -----------------------------------------------------

DT , .

IBM PC. 5 109

. 5.1 DT
.5.1 . X c
, , , "Personal Comput
----------------------------------------------------------- . 2.1 2 .

MOV AX,0123H
. 0123 AX.
----------------------------------------------------------- ----------------------------------------------------------. 5.2. .

, o
: AMT1 DW 0123H
: MOV AX,AMT1

. ,

MOV AL,0123H ()
, , ,

ADD AX,25H ( )
, 0025
IBM PC. 5 110

, p, 0123H; ,

, :
: MOV, CMP.
: ADC, ADD, SBB, SUB.
: RCL, RCR, ROL, ROR, SHL, SAR, SHR.
: AND, OR, TEST, XOR.

. 5.3 .
, , (. .7)
----------------------------------------------------------- ----------------------------------------------------------. 5.3. .
EQU ------------------------------------------------------------

EQU , ,

TIMES EQU 10
, TIMES, .
FIELDA DB TIMES DUP (?)
FIELDA DB 10 DUP (?)

, EQU,
COUNTR EQU 05
IBM PC. 5 111
...
MOV CX,COUNTR

COUNTR MOV 05, c


MOV CX,05 ; 05

EQU ,

1. TP EQU TOTALPAY
2. MPY EQU MUL
, p TOTALPAY.
-----------------------------------------------------------
. ,
EMPWAGE.

DB,

(-).
.
. , ,
AX 25 . 25:
ADD AX,25 ; 25
ADD AX,25H ; 37
, DW, DD DQ

.

IBM PC. 5 112


DB
(AL, AH, BL ..) DW
(AX, BX, CX ..). ,
DD DQ
.

: -
(AL, BH), -
(AX, BX).
-----------------------------------------------------------5.1. ,
: ) DW, ) DD, ) DT, ) DB, ) DQ?
5.2. TITLE1,
RGB Electronics.
5.3.
FLDA FLDE:
a) , .
115;
b) , .
25;
c) ,
;
d) ,
25;
e) DW,
16, 19, 20, 27, 30.
5.4. .
) DB '26' ) DB 26.
5.5. .
) DB 26H, ) DW 2645H, ) DD 25733AH, ) DQ 25733AH.
5.6.
:
) 320 AX;
) FLDB ;
) . 40 BX;
) . 40 CX;
) FLDB ;
) CH .
5.7.
5.2, 5.3 5.6.
. .

DEBUG. LST- (),
IBM PC. 5 113
.
MODE LPT1:132,6
.

IBM PC. 6 123

 6. COM- ----------------------------------------------------------- COM-


: COM-
------------------------------------------------------------

, EXE-. LINK
COM-. COM-
EXE COM- ----------------------------------------------

, EXE2BIN EXE- COM-, c


. EXE- , COM-

. EXE- , COM-

. EXE , DS

IBM PC. 6 124

. EXE- DS.

. EXE COM OBJ-

Warning: No STACK Segment


(: )
, .

EXE2BIN B:CALC,B:CALC.COM
EXE , EXE.
EXE-, , ,
COM- ------------------------------------------------------------

EXCOM1, . 6.1, . 4.3,


. CS
,
(PSP). ORG
100 (.)
PSP.
IBM PC. 6 125

ORG 100H
.
. JMP
.
:
MASM [ ]
LINK [ ]
EXE2BIN B:EXCOM1,B:EXCOM1.COM
DEL B:EXCOM1.OBJ,B:EXCOM1.EXE ( OBJ EXE-)

EXE- COM- - 788 20 . CO


, JMP
----------------------------------------------------------- ----------------------------------------------------------. 6.1. COM-.
COM- ------------------------------------------------------------

COM- DOS o
.
COM-.
------------------------------------------------------------

COM-
IBM PC. 6 126

.
COM- DEBUG
EXE- , COM-, .
----------------------------------------------------------- COM- 64.
COM- , EXE-.
, COM-

DS.
, COM-
ORG 100H SEGMENT

.
EXE2BIN EXE- COM-,
COM .
DOS COM-
, ,
.
-----------------------------------------------------------6.1. COM-?
6.2. ,
COM-?
6.3. COM-
?
6.4.
SAMPLE.EXE. DOS
COM-.

IBM PC. 6 127


6.5. 4.6 COM-,
DEBUG.

IBM PC. 7 132

 7.  ---------------------------------------------------
: ( )
------------------------------------------------------------

. ,
,
,
: JMP
: LOOP
: Jnnn (,,)
: CALL

, : SHORT, NEAR FAR. SHORT


JMP ------------------------------------------------------------

JMP.

IBM PC. 7 133

COM- . 7.1 JMP. p AX, BX, CX

1 AX,
AX BX,
CX.
AX: 1,2,3,4..., BX: 1,3
JMP A20
, c A20.
----------------------------------------------------------- ----------------------------------------------------------.7.1. JMP.
:
A20: ADD AX,01
:

A20:
ADD AX,01
A20 ADD. A20
. .
: 274 112
JMP: -9 F7 ( )
: 265 109

IBM PC. 7 134

- . 109.
JMP -128 +127 SHORT.
A50:
...
JMP A50
. (

JMP A90
...
A90:
NEAR FAR, 3- .
JMP SHORT A90
...
A90:

, , ,
LOOP ------------------------------------------------------------

JMP . 7.1 .

IBM PC. 7 135

CX 1. CX , ,
. 7.2, LOOP, ,
JMP, LOOP LOOP
LOOP ,
LOOP - LOOPE ( LOOPZ) LOOPNE (
----------------------------------------------------------- ----------------------------------------------------------. 7.2. LOOP.
----------------------------------------------------------- .
: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IBM PC. 7 136
: * * * * O D I T S Z * A * P * C
.

CF (Carry Flag) - . "" (0 1)

PF (Parity Flag) - . p

AF (Auxiliary Carry Flag) - . 1,

ZF (Zero Flag) - . a

SF (SIgn Flag) - . (

TF (Trap Flag) - . ,

IF (Interrupt Flag) - .

DF (DIrection Flag) - .

IBM PC. 7 137

SI DI, , -

OF (Overflow Flag) - . , ..
: CMP AF, CF, OF,

CMP BX,00 ; BX
JZ B50 ; B50
. ( )
.
B50: ... ; BX=0
BX , CMP ZF
------------------------------------------------------------

, LOOP
LOOP .7.2 :

LOOP

LOOP A20 DEC CX


JNZ A20 DEC JNZ LOOP: C
IBM PC. 7 138

JMP LOOP JNZ c


.


, AX 11000110, BX - 00010110.

CMP AX,BX
AX BX. , AX ,

.

JE/JZ , / ZF JNE/JNZ , / ZF JA/JNBE ,

. , JB JNAE



JE/JZ , / ZF JNE/JNZ , / ZF JG/JNLE ,
IBM PC. 7 139

JGE/JNL , / SF,OF JL/JNGE , /

(JE/JZ) (JNE/JNZ)


JS , () SF
JNS , () SF
JC , ( JB) CF
JNC , CF
JO , OF
JNO , OF
JP/JPE , PF
JNP/JP , PF

CX .
. ,
CALL ----------------------------------------------------------- o ,

BEGIN PROC FAR


.
.
BEGIN ENDP
FAR ,

IBM PC. 7 140

, PROC ENDP.
:
PROC B10 C10 NEAR
,
.
,
NEAR.

ENDP .
BEGIN
: CALL B10 CALL C10.
CALL B10
. RET,

CALL B10. CALL C10,
RET.
----------------------------------------------------------- ----------------------------------------------------------. 7.3. .
RET
. BEGIN B10 C10,
BEGIN.
BEGIN
DOS RET
DOS. B10
RET,
B10 C10.
C10 RET,
, C10
.


NEAR
------------------------------------------------------------

IBM PC. 7 141

, , , PUSH .
PUSH, PUSHF, CALL, INT, INTO
EXE-
DS ES: - 256 (. 100) ,
CS: ( ).
IP: .
SS: .
SP: , . , 32 (64
DW 32 DUP(?)
SP 64, . 40.

EXE-, .7.4.

.
IBM PC. 7 142

DS ( 049f) , .. 4B00+3E. PUSH


C10 RET 000B (4B00+38),
----------------------------------------------------------- ----------------------------------------------------------. 7.4. .

RET B10 0007 (4B00+3A), IP


.
SP
: 0040 PUSH DS ( 049F)
| | | | | | : 0034 0036 0038 003A 003C 003E

. -,
: --------------------------------------------------

c ,
IBM PC. 7 143

o . p
EXE-, . 7.5, c , N
BEGIN B10MOVE C10M
----------------------------------------------------------- ----------------------------------------------------------. 7.5. .
NAME1: A B C D E F G H I
| | | | | | | | |
NAME2: J K L M N O P Q R
NAME1 NAME2 CX 9, SI DI
LEA SI,NAME1 ;
LEA DI,NAME2 ; NAME1 NAME2
NAME1 NAME2
MOV AL,[SI]
: SI (..NAME1)
MOV [DI],AL
: AL , DI (.. NAME2).
IBM PC. 7 144

SI DI SH.
C10MOVE B10MOVE :
: , .7.5, ,
: AND, OR, XOR, TEST, NOT ---------------------------------------


AND: 1, 1;
OR: 1, 1;

XOR: 0, 1, 1;
TEST: AND- , .


AND OR XOR
0101 0101 0101
0011 0011 0011
: 0001 0111 0110

IBM PC. 7 145

, , AL 1100 0101, BH 01

1. AND AL,BH ; AL 0100 0100


2. OR BH,AL ; BH 1101 1101
3. XOR AL,AL ; AL 0000 0000
4. AND AL,00 ; AL 0000 0000
5. AND AL,0FH ; AL 0000 0101
6. OR CL,CL ; SF ZF
3 4 . 5
1.
JZ
2.
JS

OR CX,CX ;
... ;,
OR CX,CX ;
... ;,

CX

CX

TEST AND, ,

1. TEST BL,11110000B ; BL
JNZ ... ; ?
2. TEST AL,00000001B ; AL
JNZ ... ; ?
3. TEST DX,OFFH ; DX
JZ ... ; ?
NOT p ,
: --------------------------------------------

IBM PC. 7 146


. 41 5A, a z . 61 7A.
: 76543210 : 76543210
A: 01000001 a: 01100001
Z: 01011010 z: 01111010
COM-, . 7.6, TITLEX

AND AH,11011111B
, ( a z), .
BX
----------------------------------------------------------- -------------------

----------------------------------------. 7.6. .
-------------------------------------------------------

,
- ;
- ;
- ;
- 8 ( ) 16 ( );
- ( ) ( ).
1 c ,

CF .

IBM PC. 7 147


SHR
SHL
SAR
SAL

; ()
; ()
;
;

SHR:
MOV CL,03 ; AX:
MOV AX,10110111B ; 10110111
SHR AX,1 ; 01011011 ; 1
SHR AX,CL ; 00001011 ; 3
SHR AX 1 .
SAR:

MOV CL,03 ; AX:


MOV AX,10110111B ; 10110111
SAR AX,1 ; 11011011 ; 1
SAR AX,CL ; 11111011 ; 3
SAR SHR:
. p, SHL
, - 2.
, CF JC (,

,
ROR
ROL
RCR
RCL

;
;
;
;

IBM PC. 7 148

ROR:

MOV
MOV
ROR
ROR

CL,03 ; BX:
BX,10110111B ; 10110111
BX,1 ; 11011011 ; 1
BX,CL ; 01111011 ; 3

ROR
RCR RCL CF.
, .

SHL AX,1 ;
RCL DX,1 ; DX:AX 2
SHL AX ,
----------------------------------------------------------- :
1. ,

2.
. ,
p (
.7.5), c
.
, LOOP.
,
:


:

IBM PC. 7 149

:
1
1:
,
,
3. ,
. 25
( ) .
4. .

" "
.
5. ,
,

. (, XLAT,
).
6.
, .

LEA,
----------------------------------------------------------- (, B20:)

NEAR.
.
LOOP
-128 +127 .
. .
01 7F +1
+127, . FF 80 -1
+128. 1
4 , .

( 50 ).
LOOP,
CX . LOOP
,
.

IBM PC. 7 150


,
,
. , ,
, MOV,
. ,
, c
,
.

.
CALL,
- RET.
, , ,
, RET

. ,
- COM.

. :
MOV AX,SI
MOV AX,[SI]

MOV AX
SI. MOV

SI.

,

.
-----------------------------------------------------------7.1.
p JMP, LOOP ?
? 7.2. JMP . 0624.
, .
JMP: ) 27, ) 6B, ) C6. 7.3. 12 : 1,
1, 2, 3, 5, 8, 13,... (

).

LOOP. ,
DEBUG .

IBM PC. 7 151

7.4. , AX BX
, a CX DX - .
CMP ( )
:
) DX , CX?
) BX , AX?
) CX ?
) ?
) BX , AX?
) DX , CX? 7.5.
?
a) ;
) ;
) ;
) ;
) . 7.6. ,
.7.4, BEGIN
RET? 7.7. PROC
p FAR NEAR? 7.8.
? 7.9. EXE- A10 B10, B10
C10, C10 D10. ,
DOS,
? 7.10. , BL 11100011
BOONO 01111001.
BL : ) XOR
BL,BOONO; ) AND BL,BOONO; ) OR BL,BOONO; ) XOR
BL,11111111B; ) AND BL,00000000B. 7.11. .7.6 : )
TITLEX ; )
. 7.12. , DX 10111001
10111001, p CL - 03.
DX : )
SHR DX,1; ) SHR DX,CL; ) SHL DX,CL; ) SHL DL,1;
) ROR DX,CL; ) ROR DL,CL; ) SAL DH,1. 7.13. ,
AX 10. 7.14. , "
",
DX:AX 2. : )
4; ) 4; ) 48
DX:AX:BX 2.

IBM PC. 8 172

 8. I:  ------------------------------------------- I:
: ,

------------------------------------------------------------

, o
INT ().
INT 10H,
(-, BW),
: INT ------------------------------------------------------------

INT , DOS BIOS

IBM PC. 8 173

2
; TF IF;
CS ; 2
; ;
,
INT.

.
: BIOS INT 10H DOS INT 21H
------------------------------------------------------------


-------------------------------------------------------. .
------------- -------------
------------------------------------------------------- 00 00 00 00
00 79 00 4F
12 39/40 00 27/28
24 00 18 00
24 79 18 4F
--------------------------------------------------------

INT 10H .
MOV
MOV
MOV
MOV
INT

AH,02 ;
BH,00 ; 0
DH,05 ; 05
DL,12 ; 12
10H ; BIOS

IBM PC. 8 174

02 AH INT 10H
MOV DX,050CH ; 5, 12
------------------------------------------------------------

("
MOV AX,0600H ;AH 06 ()

;AL
MOV
MOV
MOV
INT

00 ( )
BH,07 ; (/)
CX,0000 ;
DX,184FH ;
10H ; BIOS

06 AH INT 10H .
: DOS ---------------------------------------

,
IBM PC. 8 175

: DOS ---------------------------------------------------------

DOS

NAMPRMP DB ' ?','$'


.
.
MOV AH,09 ;
LEA DX,NAMPRMP ; .
INT 21H ; DOS
"$" c (
LEA NAMPRMP DX DOS
: ASCII ---------------------------------------

256 ASCII ,
. 8.1 COM-, ASCI
----------------------------------------------------------- ----------------------------------------------------------. 8.1. ASCII

. 08 . 0D
IBM PC. 8 176

. : (.8.1),
(.00), " "
.

CMP CTR,08H ; 08?


JB D30 ; -
CMP CTR,0DH ; / 0D?
JBE D40 ; -
D30:
MOV AH,40H ; < 08
... ; > 0D
INT 21H
D40:
INC CTR
: DOS -----------------------------------------------

, . ,
, . LABEL
NAMEPAR LABEL BYTE ; :

IBM PC. 8 177


MAXLEN DB 20 ;
ACTLEN DB ? ;
NAMEFLD DB 20 DUP (' ') ;

LABEL , NAMEPAR MAXLEN


AH - 10 (. 0AH),
MOV AH,0AH ;
LEA DX,NAMEPAR ;
INT 21H ; DOS

INT , ,

.: |20| 5| | R| O| W| N| #| | | | | ...
.: |14|05|42|52|4F|57|4E|0D|20|20|20|20| ...
(ACTLEN )
: -----------------------------------------------------------EXE-, . 8.2, ,
----------------------------------------------------------- ----------------------------------------------------------. 8.2.
IBM PC. 8 178

1. 09 2 4,
2. 40, 36

SHR E10CENT 09 o ,
12: TED SMITH
| |
: 36 40
E10CODE , c (07)

MOV NAMEFLD[BX],07
BX , MOV ,
Return

, , ,

(.): |14|00|0D|...
Return
Return

, : ,
IBM PC. 8 179

c 0D. , , NAMELEN

MOV BH,00 ; BX
MOV BL,NAMELEN ; 0005
MOV NAMEFLD[BX],20H ; 0D
MOV (.20) , o

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,

MOV CX,20 ; 20
MOV SI,0000 ;
B30:
MOV NAMEFLD[si],20H ;
INC SI ;
LOOP B30 ;20
SI DI BX. ,
MOV CX,10 ; 10
LEA SI,NAMEFLD ;
B30:
MOV WORD PTR[SI],2020H ;
INC SI ;
INC SI ;
LOOP B30 ;10

IBM PC. 8 180

MOV B30 ,
MOV WORD PTR[NAMEFLD],2020H ;

,
: DOS -----------------------------------

, DOS 2.0 (
0
1
2
3
4

( ) CON
( ) CON
( ) CON
/ AUX
LPT1 PRN

DOS / - INT 21H, A


/ (CF)
- ,
: DOS -----------------------------------------------------

IBM PC. 8 181


DOS:
DISAREA DB 20 DUP(' ') ;
...
MOV AH,40H ;
MOV BX,01 ;
MOV CX,20 ;
LEA DX,DISAREA ;
INT 21H ; DOS

LEA DX DISAREA DOS


:
DEBUG . 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
, Return. U (U 100,10D)
: DOS -------------------------------------------------------- IBM PC. 8 182

,
INAREA DB 20 DUP (' ') ;
MOV AH,3FH ;
MOV BX,00 ;
MOV CX,20 ;
LEA DX,INAREA ;
INT 21H ; DOS

LEA INAREA DX. INT ,

PC Users Group, .0D, .0A


(. 0D),
CF ( ) AX
, .
, , y CX,
IBM PC. 8 183
"ng", ,
INT: PC Excha AX = 08
INT: ng,0D,0A AX = 05

, ) AX
DOS 0AH .
:

c
100
102
105
108
10B
10D
10F

MOV AH,3F
MOV BX,00
MOV CX,0C
MOV DX,10F
INT 21
JMP 100
DB ' '

AH BX c ,
, Return. U 100,108
,
IBM PC. 8 184
------------------------------------------------------------

IBM PC. 9 200

 9. II:  ------------------------------------ II:


: , ,
------------------------------------------------------------

4, . B000
- 2 (25 80 );
- 2 -, , ,
/

16 (
------------------------------------------------------------

, , (

IBM PC. 9 201



: BL R G B I R G B
: 7 6 5 4 3 2 1 0

RGB , (red), (green) (


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 (. )

, ,
BIOS INT 10H ------------------------------------------------------------

IBM PC. 9 202


INT 10H . AH ,

AH=00: .
00
01
02
03
04
05
06
07
08
0D
0E
0F
10

40 25 -
40 25 i6-
80 25 -
80 25 16-
320 200 4-
320 200 -
640 200 -
80 25 -
- 0A PCjr
320 200 16- (EGA)
640 200 16- (EGA)
640 350 - (EGA)
640 350 64- (EGA)

EGA (Enhanced Graphics Adapter) - .


MOV AH,00 ;
MOV AL,03 ; 80 25
INT 10H ; BIOS

, , BIOS INT 11H.


01 40 25
10 80 25
11 80 25
,

-
-
- -
, p AX

AH=01: . ASCII-.
IBM PC. 9 203

, 4-0 CL - . p

MOV
MOV
MOV
INT

AH,01 ;
CH,00 ;
CL,13 ;
10H ; BIOS

AH=02: . c
MOV
MOV
MOV
MOV
INT

AH,02 ;
BH,00 ; 0
DH, ;
DL, ;
10H ; BIOS

AH=03: .

MOV AH,03 ;
MOV BH,00 ; 0
INT 10H ; BIOS
DH , DL - .

AH=04: . e

AH=05: .
IBM PC. 9 204

MOV AH,05 ;
MOV AL, ;
INT 10H ; BIOS

AH=06: .
06 . AL
MOV
MOV
MOV
MOV
INT

AX,0601H ;
BH,07 ;: , -
CX,0000 ; 00,00
DX,184FH ; 24,79 ( )
10H ; BIOS


1. ROW () 0
.
2. .
3. ,
(CMP ROW,22).
4. , ROW (INC ROW) .
5. , ,
ROW .

AH=07: .

AH=08: / .

IBM PC. 9 205

MOV AH,08 ; ./.


MOV BH,00 ; 0 ( .)
INT 10H ; BIOS
AL , AH - .

AH=09: / .

MOV AH,09 ;
MOV AL, ;
MOV BH, ; (..)
MOV BL, ;
MOV CX, ;
INT 10H ; BIOS
AL . CX
MOV
MOV
MOV
MOV
MOV
INT

AH,09 ;
AL,03H ; ( )
BH,00 ; 0 (. )
BL,0F0H ;,
CX,05 ;
10H ; BIOS

( )
BL . 7

AH=0A: . 0A 0
IBM PC. 9 206

MOV
MOV
MOV
MOV
INT

AH,0AH ;
AL, ;
BH, ; ( )
CX, ;
10H ; BIOS

DOS INT 21H .


AH=0E: . ,

AH=0F: . AL

AH=13: ( AT).
MOV
MOV
MOV
LEA
MOV
MOV
INT

AH,13H ;
AL, ;0, 1, 2 3
BH, ;
BP, ; ES:BP
CX, ;
DX, ;
10H ; BIOS

:
0 - ;

1 - ;
2 - , ;
3 - , .
: , ---------------------------------------------------

IBM PC. 9 207


, . 9.1, .
Name? Francis Bacon Francis Bacon []
| |
0 40

ROW (
D10INPT DOS INT 21H. BIOS INT
1.
. 2. INT 10H ( 08) 08 AH 00
BH. AL. 3. AL
,
. 4. AL . 5.
. 6. . 7.

RETURN, -
ASCII -----------------------------------------------------------ASCII- 128 255 (. 80-FF)
.
DA
BF
C0
D9
C4
B3

IBM PC. 9 208

INT 10H 25 :
MOV
MOV
MOV
MOV
MOV
MOV

AH,09 ;
AL,0C4H ;
BH,00 ; 0
BL,0FH ;
CX,25 ;25
10H ; BIOS

, . ,
.

B0 ( )
B1 ( )
B2 ( )
----------------------------------------------------------- ----------------------------------------------------------. 9.1. ,

,
/ DOS ---------------------------------------------------------

DOS, .
AH=01: .

AH=02: .
IBM PC. 9 209

AH=07: .

AH=08: . 0

AH=0B: . .FF AL,


BIOS INT 16H --------------------------------------------------

BIOS INT 16H ,

AH=00: . AL o ASCII ,

AH=01: . (ZF=0),

AH=02: . AL

7 (Ins)
6 (Caps Loc )

5 (Num Loc )

4 (Scroll Loc )

3 Alt/Shift
2 Ctrl/Shift
1 Shift
0 Shift
IBM PC. 9 210
----------------------------------------------------------- :
1. (-) : a
z, 0 9, %, $, # ..
2. : , End, ,

, Return, Del, Ins, PgUp, PgDn .


3. : Alt, Ctrl Shift,
.

- ,
- 1 (Esc) 83 (Del) .01 .53.

MOV AH,00 ;
INT 16H ; BIOS
,
1. ASCII- A (.41) AL; 2. - A (.1E)
(, Ins) :
1. AL; 2. - Ins (.52) AH.

IBM PC. 9 211

, INT 16H
MOV AH,00 ;
INT 16H ; BIOS
CMP AL,00 ; ?
JZ exit ; -
-

. 9.2 - .
*, + -. "",
- :
CMP AL,2AH ;?
JNE EXIT1 ; -
CMP AH,09H ; -?
JE EXIT2
----------------------------------------------------------- -
Alt/A - Alt/Z 1E - 2C
F1 - F10 3B - 44
Home 47
48
PgUp 49
4B
4D
End 4F
50
PgDn 51
Ins 52
Del 53 -----------------------------------------------------------. 9.2. -

0 c 0

MOV
INT
CMP
JNE
CMP

AH,00 ;
16H ;
AL,00 ; ?
EXIT1 ; -
AH,47H ;- Home?

IBM PC. 9 212


JNE
MOV
MOV
MOV
INT

EXIT2 ; -
AH,02 ;
BH,00 ;
DX,00 ; 0,0
10H ; BIOS

F1 - F10 - .3B .44.

CMP AH,44H ; F10?


JE EXIT1 ;
EXIT1 .
- BASIC. IBM P
----------------------------------------------------------- 4 , 2
2 . 16
- (BW) .
,
ASCII-,
. -
.
, .
RGB
, . BIOS INT 10H
: ,
, ,
. ,
,
.
,
. INT 10H,
, . BIOS INT 16H
.
.

IBM PC. 9 213

-,
1 (Esc) 83 (Del), .01
.53.
AL - AH.
AL - AH.
-----------------------------------------------------------9.1. )
, ) , )
.
9.2. ) BW
(-) 80 , )

, 5
12 , ) 10 , )

(. B1).
9.3. -
: ) , ) F3, ) Home, )
PgUp.
9.4. DEBUG,
AX .
A 100
(Return). :
MOV AH,00
INT 16H
JMP 100
U 100,104,
G 104 MOV INT.
INT
.
AH . G
104, , ,
. Q.
9.5. :
PgDn,
- 24 0.

IBM PC. 10 228

 10. III:  ------------------------------------------- III:


: ,
------------------------------------------------------------

.
1.
( ),
.
2. ,
,
.
.
3. RGB-,
- ,
.
, RGB-
.

(CGA - Color/Graphics Adapter)


(EGA - Enhanced Graphics Adapter)
: (-)

IBM PC. 10 229

(AH=0).

MOV AH,00 ; MOV AH,00 ;


MOV AL,03 ;+ MOV AL,04 ;
INT 10H INT 10H ;
(-) ------------------------------------------------------ .

, . ,
I R G B I R G B
0 0 0 0 1 0 0 0
0 0 0 1 - 1 0 0 1
0 0 1 0 - 1 0 1
0 0 1 1 - 1 0 1
0 1 0 0 - 1 1 0
0 1 0 1 - 1
0 1 1 0 1 1 1 0
0 1 1 0 - 1 1 1 1

0
1
0
1 0 1

o 16 .
-

, p 9.

IBM PC. 10 230
: BL R G B I R G B
: 7 6 5 4 3 2 1 0

. :
: 7 6 5 4 3 2 1 0
BL R G B I R G B .
0 0 0 0 0 0 0 0 00
0 0 0 0 0 0 0 1 01
0 0 0 1 0 1 0 0 14
0 0 1 0 0 0 1 1 23
- 0 1 1 1 1 1 0 1 7D
, 1 0 1 0 1 0 0 0 A8

- - (BW) .
MOV
MOV
MOV
MOV
MOV

AH,09 ;
AL,'*' ;
BH,00 ; 0
BL,0DAH ;
CX,05 ;

INT 10H ; BIOS


------------------------------------------------------------


1. ( ROM)
100 160 (..
). 16
,
"".
Motorola 6845 CRT.
: .3D4 3D5.
2.
200 320 .
(..
).
IBM PC. 10 231
3. 200 640 .
16 ,
-
(BW) . 8
(.. ).
, - .

, ROM 128 ASCII-


----------------------------------------------------------- , 0 3:
: |C1 C0|C1 C0|C1 C0|C1 C0|
: 0 1 2 3

, 0 3. 4
C1 C0 0 1
0
0
1
1

0
1
0
1

INT 10H. p, , ,
BIOS INT 10H

IBM PC. 10 232

AH=00 INT 10H . AH=11 INT 10H

AH=00: . AH 04 p AL

MOV AH,00 ;
MOV AL,04 ; 320200
INT 10H

.
AH=0BH: . BH BL:
BH=00 p BL. 1
BH=01 BL (0 1):
MOV
MOV
MOV
INT

AH,0BH ;
BH,01 ;
BL,00 ; 0 (, , .)
10H ; BIOS

, , , .

AH=0CH: . 0C AH
MOV
MOV
MOV
MOV
INT

AH,0CH ;
AL, ;
CX, ;
DX, ;
10H ; BIOS

AH=0DH: .
IBM PC. 10 233

CX - ( 0 319). AH 0D.
----------------------------------------------------------- ----------------------------------------------------------. 10.1 .
: -------------------------------

, .10.1, INT 10H


.
----------------------------------------------------------- 16
().
80
40 .
(
ROM), (
) ( -
).
(
)

(, ).

(CGA) ,
16 ,
.
-----------------------------------------------------------10.1.
(CGA) ?

IBM PC. 10 234


10.2. )
-, ) ,
) .
10.3. ,
, .
10.4.
"" -
.
10.5.
) 320200 CGA ) 640200
EGA.
10.6.
.
10.7. 12 13
.
10.8. .10.1 : )
; ) ; )
10 30; ) 20 300.

IBM PC. 11 241

 11.  ---------------------------------------------------------
: ,

-----------------------------------------------------------, , ,
MOVS
;
LODS AL
AX;
STOS AL AX ;
CMPS ,
;
SCAS AL AX
.
REP .
------------------------------------------------------------

p

MOVS DI,SI MOVSB MOVSW
LODS AL,SI AX,SI LODSB LODSW
IBM PC. 11 242
STOS DI,AL DI,AX STOSB STOSW
CMPS SI,DI CMPSB CMPSW
SCAS DI,AL DI,AX SCASB SCASW

, MOVS, MOVSB MOVSW.


REP: -------------------------------------------------

, ,
:
- CLD DF 0;
- STD DF 1.
20 STRING1 STRING2. ,
STRING1 DB 20 DUP('*')
STRING2 DB 20 DUP(' ')
...
CLD
MOV
LEA
LEA
REP

; DF
CX,20 ; 20
DI,STRING2 ; ""
SI,STRING1 ; ""
MOVSB ;

CMPS SCAS ,
REP - , CX 0;

IBM PC. 11 243


REPZ REPE - , ZF
" ".
ZF,
CX 0; REPNE REPNZ - , ZF

" ".
ZF,
" "
CX 0.
8086, 80286 80386, o ,
MOVS: ------------------------------------------------------------

.7.5 .
, , , p ES, DI
, REP MOVSB:
JCXZ LABEL2
LABEL1: MOV AL,[SI]
MOV [DI],AL
INC/DEC DI ;
UNC/DEC SI ;
LOOP LABEL1
LABEL2: ...

. 11.1 C10MVSB MOVSB

IBM PC. 11 244

LEA SI DI NAME1 NAME2


NAME1 (
p ES:DI) NAME2
( DS:SI). 1 DI SI
. CX 1. ( 1
), CX
.

DF , MOVSB DI
D10MVSW (.11.1) MOVSW,
LODS: ------------------------------------------------------------

LODS AL AX .
LODS , REP
, LODSB:
MOV AL,[SI]
INC SI

IBM PC. 11 245

.11.1 E10LODS LODSW.


STOS: ------------------------------------------------------------

STOS () AL AX
STOS REP -
JCXZ LABEL2
LABEL1: MOV [DI],AL
INC/DEC DI ;

LOOP LABEL1
LABEL2: ...

.11.1 F10STOS STOSW.


CMPS: ------------------------------------------------------------

CMPS ( DS:SI)
----------------------------------------------------------- ----------------------------------------------------------. 11.1. .

, JEAN JOAN.
IBM PC. 11 246

J
E
A
N

:
:
:
:

J
O
A
N

(E O)

N:N - p/. "


REPE CMPSB

.11.1 G10CMPS CMPSB.


NAME2 NAME3. STOSW NAME3
"/" 01 BH.
! CMPSB
SCAS: ------------------------------------------------------------

SCAS CMPS , ()
IBM PC. 11 247

( p ES:DI) AL AX.
SCAS , , ,
.11.1 H10SCAS NAME1 "m".
REPNE SCASB

NAME1 "Assemblers", SCASB "m"


SCASW AX.
------------------------------------------------------------


STRLEN EQU 15 ; STRING
STRING DB 'The time&is now'
...
CLD
MOV AL,'&' ;
MOV CX,STRLEN ; STRING
LEA DI,STRING ; STRING
REPNE SCASB ;

IBM PC. 11 248


JNZ K20 ; ?
DEC DI ; -
MOV BYTE PTR[DI],20H ;
K20: RET
------------------------------------------------------------

MOVSB MOVSW

REP MOVS FLDA,FLDB


FLDB FLDA.
REP MOVS ES:BYTE PTR[DI],DS:[SI]
DI SI FLDA FLDB o .
------------------------------------------------------------

STOS o
***---***---***---***---***-- . . .
, ,
PATTERN DB '***---'
DISAREA DB 42 DUP(?)
.
.
CLD
MOV CX,21
LEA DI,DISAREA
LEA SI,PATTERN
REP MOVSW
MOVSW (**) PATTERN
IBM PC. 11 249

***---***--| |
PATTERN DISAREA
DI DISAREA+6, p SI - PATTERN+6,
***---***---***---***---***-- . . . ***--| | | |
PATTERN DISAREA+6 DISAREA+12 DISAREA+42


: -----------------------------------------

COM-, .1.2, ,
B10INPT 30 ,
. D10SCAS SCASB
, "". E10RGHT MOVSB
,
. ACTNLEN

, :
JEROME KERN
OSCAR HAMMERSTEIN

RICHARD ROGERS
F10CLNM STOSW
.
----------------------------------------------------------- ----------------------------------------------------------.11.2. .
------------------------------------------------------------

IBM PC. 11 250


MOVS, STOS, CMPS SCAS ES.
(CLD) (STD)
.
DI SI
. , MOVS
DI,SI, CMPS - SI,DI.
CX
, .
REP
MOVS STOS (REPE
REPNE) CMPS SCAS.

c CMPSW SCASW.

. ,
, NAME1 10 ,

, LEA,
NAME1+9.
- NAME1+8.
-----------------------------------------------------------11.1. )
MOVSB, ) LODSB )STOSB REP.
)
MOVSW, ) LODSW ) STOSW REP.
11.2. ,
, .11.1.
ES. MOVSB
MOVSW .
H10SCAS NAME1 "mb".
DEBUG ,

.
11.3. :
DATASG SEGMENT PARA
CONAME DB 'SPACE EXPLORERS INC.'
PRLINE DB 20 DUP(' ')
, :
) CONAME PRLINE ;
IBM PC. 11 251

) CONAME PRLINE ;
)
CONAME AX;
) AX
PRLINE+5;
) CONAME PRLINE (
);
) CONAME PRLINE,
. ,
BH.
11.4. H10SCAS (.11.1) ,
NAME1 "er".
, "er"
NAME1 : /As/se/mb/le/rs/.
:
) SCASW ,
NAME1, -
NAME1+1;
) SCASB ""
"r".
11.5. , . 03, 04, 05
B4. 20
.

IBM PC. 12 262

 12. I:  ---------------------------- I:
: , , .

------------------------------------------------------------

, ( 10),
, ,
------------------------------------------------------------

ADD SUB ,
. 12.1 ADD SUB, .
/ -;
/ -;
/ -;
/ -.;
/ -..
----------------------------------------------------------- ----------------------------------------------------------. 12.1 ADD SUB.

- , o
IBM PC. 12 263

MOV AX,WORDA
ADD AX,WORDB
MOV WORDB,AX

ADD AL,20H
AL - .80.
CBW ; AL AX
ADD AX,20H ; AX

: 15 ,

+32767
----------------------------------------------------------- ----------------------------------------------------------. 12.2. .

IBM PC. 12 264

.12.2 D10DWD
WORD1B BC62
WORD2B 553A
: 1119C

- .1119C AX.
WORD1A 0123
WORD2A 0012
1
: 0136

DEBUG
.12.2 E10DWD .

SUB reg,02
, .. ,
, ADC. CLC
SBB (SuBtract with Borrow -
------------------------------------------------------------

IBM PC. 12 265

, , , a .
+32767


11111001 249 -7
00000010 2 +2
11111011 251 -5
.
"" , p .
CF OF
11111100 252 -4
00000101 5 +5
00000001 1 1 1 0
()

,
CF OF
01111001 121 +121
00001011 11 +11
10000100 132 -124 0 1
()
, :
IBM PC. 12 266

CF OF
11110110 246 -10
10001001 137 -119
01111111 127 +127 1 1
() ()
------------------------------------------------------------

MUL, - IMUL (I

" ". AL,


| AH | AL | | AX |
:| || :||

" ". AX, -


| AX | | DX || AX |
:|| : |.||.|
| |

MUL IMUL .
MUL MULTR
MULTR (DB), AL
MUL CL ;-: AL, . AX
MUL BX ;-: AX, . DX:AX
IBM PC. 12 267

: MUL

MUL (MULtiplication - ) . . 12.3


----------------------------------------------------------- ----------------------------------------------------------. 12.3. .

MUL . 10000000 p DX:AX.


MUL BYTE1
: IMUL
IMUL (Integer


MULtiplication - ) .
IMUL .80 ( ) .40 (
IMUL .8000 ( ) .2000 (
IMUL BYTE1

IBM PC. 12 268

DX:AX - , MUL,
, , MUL IMU
, DEBUG .

: 2 (2,4,8 ..)
2: SHL AL,1
8: MOV CL,3
SHL AX,CL

: " " " ". ,

1365
12
2730
1365
16380
, .

13 65
12 12
26 130
13 65
156 780
, 13 ,
15600
IBM PC. 12 269
+780
16380
,

. E10XMUL .12.4

1: 0000 0E80 E400


2: 138A 5800
: 138A 6680 E400
ADD , c
----------------------------------------------------------- ----------------------------------------------------------.12.4. .
" ".

2 2
2 1
1 2
1 1
DX AX

IBM PC. 12 270

MULTCND . 3206 2521, MULTPLR - . 6400 0A26.


,
138A 687C 8E5C CCE6 PRODUCT
DX:AX ------------------------------------------------------------

p DX:AX

4
MOV CX,04 ; 4
C20: SHL DX,1 ; DX 1
SHL AX,1 ; AX 1
ADC DX,00 ;
LOOP C20 ;
4
MOV CX,04 ; 4
D20: SHR AX,1 ; AX 1
SHR DX,1 ; DX 1
JNC D30 ; ,
OR AH,10000000B ; 1 AH
D30: LOOP D20 ;

, .
MOV
SHL
MOV
SHL
SHL

CL,04
DX,CL
BL,AH
AX,CL
BL,CL

;
; DX 4
; AH BL
; AX 4
; BL 4

IBM PC. 12 271


OR DL,BL ; 4 BL DL
------------------------------------------------------------

DIV, a - IDIV.
" ". AX, -
| AX | | AH | AL |
: | | : |||
" ". DX:AX, -

| DX || AX | | AH || AL |
:|.||.| :||||
| |
DIV IDIV .
DIV DIVISOR

DIVISOR (DB), .
, , 13 3, 4 1/3. 4, - 1.
: DIV

DIV . .12.5 D10DIV


IBM PC. 12 272

DIV .2000 (8092) .80 (128). 00


DIV BYTE1 .
DIV . 1000 DX . 0080
DIV WORD1
----------------------------------------------------------- -------------------

----------------------------------------.15.5. .
: IDIV

IDIV (Integer DIVide) . .12.5 E10I


:
IDIV
2 EE (-18) FB (-5)
3 1000 (4096) 0080 (128)
4 0000 0002
4 , DIV. ,

. 2 (2, 4, ..)
2: SHR AX,1
IBM PC. 12 273
8: MOV CL,3
SHR AX,CL

DIV IDIV, p.
: - ,

:
: 0123 01 (1)23
: 0001 4026 0001 (1)4026
.

CMP AH,DIVBYTE CMP DX,DIVWORD
JNB JNB
DIV DIVBYTE DIV DIVWORD

IDIV , ,

, .

IBM PC. 12 274


SUB CX,CX ;
C20: CMP AX,BX ; < ,
JB C30 ;
SUB AX,BX ;
INC CX ;
JMP C20 ;
30: RET ; CX, AX

CX , AX - o.
1. C20 AX BX DX.
2. SUB SBB DX,00.
: .
------------------------------------------------------------

NEG
NEG AX
NEG BL
NEG BINAMT ( )

35- ( ) .
NOT
NOT
ADD
ADC

DX ;
AX ;
AX,1 ; 1 AX
DX,0 ; DX

: , ,

IBM PC. 12 275

INTEL 8087 80287 --------------------------------

,
,
-----------------------------------------------------------
p.
-128 +127.
ADC
.
, CLC,
0.
MUL DIV
IMUL IDIV .
.
,
. ,
AH ( ) DX ( ).

c. SHR
SAR .
SHL SAL.
.
, FACTOR (DB),
MUL FACTOR AL,
DIV FACTOR AX.
FACTOR (DW), MUL
FACTOR AX, DIV
FACTOR DX:AX.

IBM PC. 12 276


----------------------------------------------------------- :
DATAX DW 0148H
DW 2316H
DATAY DW 0237H
DW 4052H
12.1. ) DATAX
DATAY; ) ,
DATAX, DATAY.
12.2. :
STC
MOV BX,DATAX
ADC BX,DATAY
12.3. (MUL): )
DATAX DATAY; ) ,
DATAX, DATAY.
12.4. , ,
?
12.5. (DIV): ) DATAX
23; ) ,
DATAX, DATAY.
12.6. "
DX:AX"
.
.

IBM PC. 13 1

 13. II: ----------------------------------------------------- II: ASCII BCD


: ASCII BCD
------------------------------------------------------------

- ASCII-
, BASIC Pascal,
ASCII- ------------------------------------------------------------

, , ASCII-, , SAM

IBM PC. 13 2

AAA (ASCII Adjust for Addition ASCII-)


AAD (ASCII Adjust for Division ASCII-)
AAM (ASCII Adjust for Multiplication ASCII-)
AAS (ASCII Adjust for Subtraction ASCII-)
AX.
ASCII-
8 4 ASCII-:

. 38
34
. 6C
ASCII-, . ,
, , AX . 0038, BX - .003

ADD AL,BL ; 34 38
AAA ; ASCII
AAA . (4 ) AL.
ADD: 006C
AAA: 0102

, ASCII- ,
OR AX,3030H ; 3132

IBM PC. 13 3

. ASCII-
ADC,
,
() . CLC
CF .
----------------------------------------------------------- ----------------------------------------------------------. 13.1. ASCII-.
MOV AH ,
AAA .
ADC p. ,
XOR SUB o AH
CF. ,

p AH (00 01)
. 01020702.
OR AAA
,
CF, p ADC.

PUSHF,
OR, , ,
POPF:
ADC AL,[DI] ;
AAA ; ASCII
PUSHF ;
OR AL,30H ;
POPF ;
MOV [BX],AL ;

PUSHF POPF LAHF (Load AH with Flags -


ASCII-

IBM PC. 13 4

AAS (ASCII Adjust for Subtraction - ASCII-)


, ASC1 .38, ASC2 -
1: AX AF
MOV AL,ASC1 ;0038
SUB AL,ASC2 ;0034 0
AAS ;0004 0
2: AX AF
MOV AL,ASC2 ;0034
SUB AL,ASC1 ;00FC 1
AAS ;FF06 1
1 AAS . 2,
ASCII-

AAM (ASCII Adjust for Multiplication - ASCII )


AAM AL 10 (. 0A) AH,
AX:
AND CL,0FH ; CL 09
AND AL,0FH ; AL 05 0005
MUL CL ; AL CL 002D
IBM PC. 13 5

AAM ; .. 0405
OR AX,3030H ; ASCII-- 3435
MUL 45 (.002D) AX, AAM
.13.2 - -
, ,
----------------------------------------------------------- -------------------

----------------------------------------.13.2. ASCII-.
ASCII-

AAD (ASCII Adjust for Division - ASCII-)


AX:
AND CL,0FH ; CL ..
AND AX,0F0FH ; AX .. 0208
AAD ; 001C
DIV CL ; 7 0004
AAD AH 10 (.0A), p 20 (.14)
. 13.3. .

IBM PC. 13 6

,
- (BCD) ------------------------------------------------------------

ASCII- 00090204.
----------------------------------------------------------- ----------------------------------------------------------.13.3. ASCII-.
, , 0924 10 ,
- (BCD-).
DAA (Decimal Adjustment for Addition )
DAS (Decimal Adjustment for Subtraction )

.
C10ADD BCD-. - 127263.
ASCII- ---------------------------------------------

b ASCII BCD

IBM PC. 13 7

ASCII- , ASC
, ASCII- 10,
1. ASCII-
. 2. . ASCII-. 3.
.. .
1234 ASCII- :

4 1 = 4 4
3 10 = 30 1E
2 100 = 200 C8
1 1000 = 1000 3E8
: 04D2
----------------------------------------------------------- -------------------

----------------------------------------. 13.4. BCD- .


, .04D2 1234. . 13.5.

MOV AL,[SI+BX]
ASCVAL-1 BX (4), .. ASC
ASCII- ------------------------------------------- IBM PC. 13 8

, p,

4D2 : A 7B 4
7B : A C 3
C : A 1 2
1 , .A, .
. 13.5. C10BIAS . 4D2 ( B10A
----------------------------------------------------------- ----------------------------------------------------------.13.5. ASCII .
------------------------------------------------------------

.
: 12,345
5: +5
: 12,350 = 12,35

12,3455, 50

12,3455 12,34555
+50 +500
12,3505 = 12,35 12,35055 = 12,35
, , 5000
IBM PC. 13 9

, 12345 .3039. 5 3039, 303E,

.303E : .A = 4D3 .1235


.4D3 ASCII- 1235. o
.
, p.
:
------------------------------------------------------------

, .13.6,
B10INPT
.
. D10HOUR ASCII
. E10RATE
ASCII . F10MULT , .


. ,

, , , ,
. G10WAGE ,
ASCII

ASCII-.

IBM PC. 13 10
K10DISP
. M10ASBI ASCII (
)
.
----------------------------------------------------------- ----------------------------------------------------------.13.6. .

. , .13.6, c ,
. , , ,
: ,

.
, , ,

IBM PC. 13 11

IMUL IDIV .
----------------------------------------------------------- ASCII- .
0 9,

.
.
ASCII-
AAA; ASCII- -
AAS.
ASCII-,
"
" ,
.
AAM.
ASCII-, : 1)
"
" ,
2)
AAD.

ASCII-
.
ASCII-: .30
.39, ()
, , .
------------------------------------------------------------

13.1. , AX 9 ASCII ,
BX -7 ASCII .
:
) ADD AX,33H ) ADD AX,BX
AAA AAA
) SUB AX,BX ) SUB AX,0DH
AAS AAS
13.2. UNPAK . 01040705
. ,
ASCII-, .. 31343735.

IBM PC. 13 12
13.3. ASCA 313733 ASCII-,
ASCB 35.
ASCII-
ASCPRO.
13.4. 13.3, ASCA
ASCB ASCQUO.
13.5. : )
ASCII 46328
.; )
. ASCII-.
13.6. ,
(INT 12H - ..2),
ASCII-
:
nnn .

IBM PC. 14 24

 14.  -----------------------------------------------------------
: ,
------------------------------------------------------------

, ,
.
------------------------------------------------------------

, ..
, - ,
STACK DW 64 DUP(?)
:

MONTAB DB 'JAN','FEB','MAR', ... ,'DEC'


COSTAB DB 205,208,209,212,215,224,...
MONTAB , COSTAB -

IBM PC. 14 25
STOKTBL DB 12,'Computers',14,'Paper....',17,'Dis ettes'
:
STOKTBL DB 12, 'Computers'
DB 14, 'Paper....'
DB 17, 'Dis ettes'
.
------------------------------------------------------------

, - 03

MONTBL DB 'January..'
DB 'February.'
DB 'March....'
9 . 'January' - MONTBL+0, 'February' 1. ASCII 33
03. 2. : 03 - 1 = 02 3.
:
MONTBL+18.
----------------------------------------------------------- -----------------------------------------------------------

. 14.1. .

.14.1 .
.

IBM PC. 14 26

,
----------------------------------------------------------- , .

. ,
STOKNOS DB '101','107','109',...
STOKDCR DB 'Excavators','Processors','Assemblers',...
, :
STOKTAB DB '101','Excavators'
DB '107','Processors'
DB '109','Assemblers'
...

.14.2 .
,
IBM PC. 14 27

, ,
MOV AX,STOKNIN
LEA SI,STOKTAB
C20:
MOV BX,[SI]
CMP AX,BX
JA JB ...

.
. 14.2 .

.
-
0-1000.00 10 0,00
1000,01-2500,00 15
2500,01-4250,00 18
4250,01-6000,00 20
6000,01 23

050,00
125,00
260,00
390,00

IBM PC. 14 28

TAXTBL DD 100000,250000,425000,600000,999999
, x
,
; ,
:
: 100 - -

,
: |123|035Excavators|038Lifters |049Presses | ...
| | | | | | | : 00 03 06 16 19 29 32
.14.3 STOKTAB, '999'
STOKNIN
035
038
049
102
123

123
123
123
123
123

: .-
: .-
: .-
: .-
:

, CMPSB .14.3 ,
----------------------------------------------------------- ----------------------------------------------------------.14.3. CMPSB

IBM PC. 14 29
CX 03, SI
SI CMPSB 04
CX 02
10
. 16

CX , ( ),

, .
XLAT ------------------------------------------------------------

XLAT .
0 9 ASCII EBCDIC.
IBM PC. 14 30

EBCDIC. XLAT ,
XLTBL DB 47 DUP(40H) ;
DB 0F0H,0F1H,0F2H,0F3H,...,0F9H
DB 199 DUP(40H) ;
XLAT

EBCDIC
;0-9 (EBCDIC)
EBCDIC
BX, (,

LEA BX,XLTBL
MOV AL,ASCNO
XLAT
XLAT AL a ,
----------------------------------------------------------- ----------------------------------------------------------.14.4. ASCII EBCDIC.

.14.4 (2E) (2D)


: . ASCII- -------------------------------------------------

, .14.5, ASCII-,
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF
----------------------------------------------------------- IBM PC. 14 31
-----------------------------------------------------------.14.5. . ASCII-

.8.1, ASCII- , o .
HEXCTR 00.
DOS (.40) .1A ,
. ASCII-.
: ----------------------------------------------------


, ,
IBM PC. 14 32

, . ,
, SWAP :
G10:
G20: SWAP=NO

G30: > ?
:
SWAP=YES

?
: G30
: SWAP=YES?
: G20 ( .)

, .14.6, 30 ,
----------------------------------------------------------- ----------------------------------------------------------.14.6. .
, ------------------------------------------------------------

,
:

TABLEX DW 10 DUP(?) ; 10
TYPE (DW ),
MOV AX,TYPE TABLEX ;AX=0002
MOV BX,LENGTH TABLEX ;BX=000A (10)
MOV CX,SIZE TABLEX ;CX=0014 (20)
IBM PC. 14 33

LENGTH SIZE .
CMP SI,SIZE TABLEX
23 " " TYPE,
----------------------------------------------------------- , ,

.
. ,

, .
: , ,
p,
.

3, - 2.
,
, 2 (SHL
),
. (
-1).
, DB ,
256, DW
. CMP CMPSW ,

.
,
,
.
.


.

. ,

.
----------------------------------------------------------- IBM PC. 14 34
14.1. ,
, .
14.2 , 1,
,
14.1. .
14.3 ,
:
) : 06, 10, 14, 21, 24;
) : , ,
, , ;
) : 93.95, 82.25, 90.67, 85.80, 13.85.
14.4 ,
(ITEMIN) (QTYIN) .
14.3,
ITEMIN.
.
( )
.
14.5 14.3,
: )
() ; )
.

IBM PC. 15 45

 15. I:  -------------------------------------------------- I:
: ()
------------------------------------------------------------


, ,
+--+---+-----++--+---+-----++--+---+-----+ +--+---+-----+ |1||||2||||3|
--+-----+ +--+---+-----+

----------------------------------------------------------- :

IBM PC. 15 46



DOS 2.0 40 8 512 327 680 DOS 2.0 40 9 512 368 640 80 15 512 1 2
:

4-

10 306 17 512 10 653 696 20 614 17 512 21.377.024

(), .
() ------------------------------------------------------------

, , DOS

0 0 1
0 0 2-3 (FAT)
0 0 4-7
1 0 1-3
1 0 4 ...

1- 0-
FORMAT /S , DOS IBMBIO.COM IBMDOS

IBM PC. 15 47

, 512 ( 512), .

0-7 , ,
.
: .00 ,
, .E5 - , . 2E . 8-10 11 , :

.00 - ;
.01 - ;
.02 - "" ;
.04 - DOS;
.08 - ;
.10 - ;
.20 - ( ). 12-21 DOS. 22-23
, :
||
24-25 ,
:
|||

1980
0 119, - 1 12, - 1 31. 26-27 .
.
( COM- DOS)
002. ,
. 28-31 . DOS
.

, ,
------------------------------------------------------------

(FAT - File Allocation Table) -


IBM PC. 15 48
.
FAT :
FE
FC
FF
FD
F9
F8

8
9
8
9

(1,2 )

FFFF.
FAT
..
, 8 1 2-3 4-7 1
, 9 1 2-5 6-9 1
, 8 1 2-3 4-10 2
, 9 1 2-5 6-12 2
(1,2 ) 1 2-15 16-29 1
XT 1 2-17 18-49 8
AT 1 2-838 4-115 4

, FAT .
000
nnn
FF7
FFF

,
,
( ),
.

, , PAYROLL.ASM,
IBM PC. 15 49

PAYROLL, - ASM, .00 , , 002 -


FAT: |FDF|FFF|003|004|FFF|000|000|...|000|
.: 0 1 2 3 4 5 6 ...

FAT 000 001.


1. DOS
PAYROLL ASM. 2. DOS
(002)

. 3. DOS FAT,
002.
, , ,
003. ,
003. DOS
. 4. DOS
003.
004,
004. DOS
. 5. FAT 004
.FFF, ,
.

, FAT - .
, ,
15 1,5, 22,5. 22 23 FAT.
, F*FF. : FFF*.

IBM PC. 15 50
15-, - FFF

.
, , 15.

6* 01 17 80 01 FF*F
, FAT, 15 1,5, 22,5,
, , 16 1,5 24.
, , 17 1,5, 25.5.
FAT
, p. ,
,
-----------------------------------------------------------
. ()
, , , , ,
p .

IBM PC. 15 51
(FAT)
p .
-----------------------------------------------------------15.1. ?
15.2. ?
15.3. ?
15.4.
DOS FORMAT /S?
15.5. FAT,
?
15.6. 2890 () : )
c ? )
? )
, .

IBM PC. 16. 1

 16. II: DOS ---------------------------------: DOS


------------------------------------------------------------

DOS,
DOS (FCB .
, , ""

(FCB) ----------------------------------------------------------- - DOS


IBM PC. 16. 2

. FCB .
0 : 01 A, 02 B
.. 1-8 ,
, 8 .
, ,
LPT1 . 9-11 ,
, DTA ASM.
,
. DOS
. 12-13 . 128 .

(
32). 0, - 1
..
0. 14-15 .
128 (.80).


. 16-19 . DOS
(
) .

.
, . 20-21 .
DOS .

. 22-31 DOS. 32 .
(-127) (.
12-13).
.
- 0,

0 127. 33-36 .

.
, 25
(.19),
19000000.
,

IBM PC. 16. 3
.
(1.073.741.824 ),

.
64, 36
00.

,
FCB ,

FCB ---------------------------------------
MOV AH,16H ;
LEA DX,FCBname ;
INT 21H ; DOS

DOS , FCB,
00
FF .
FCB - 0 (

IBM PC. 16. 4

DOS DTA. DTA.


MOV AH,1AH ;
LEA DX,DTAname ; DTA
INT 21H ; DOS
,
. 15:
MOV AH,15 ;
LEA DX,FCBname ;
INT 21H ; DOS

FCB DTA.
DOS FCB
00 .
01 .
02 DTA .

, , ,
MOV AH,10H ;
LEA DX,FCBname ;
INT 21H ; DOS

, DOS
00 .
FF
IBM PC. 16. 5

(
).
: FCB ----------------------------------, .16.1, ,
FCBDRIV
4 ( D). FCBNAME - NAMEFILE. FCBEXT - DAT. FCBBLK

128. FCBSQRC

:
BEGIN ,
C10OPEN DTA
DOS, D10PROC .
, G10PROC
. C10OPEN ,
- 32 (.20)
DTA DOS. D10PROC ,
F10WRIT
. E10DISP . F10WRIT

.
1 FCBSGRC ( ) .20
DTA: | |
: | 00| 01| 02|...| 15|
25 , 1 25 (.19).
25 * 32 = 800 . 320

IBM PC. 16. 6


----------------------------------------------------------- ----------------------------------------------------------. 16.1. .


: | 16| 17|...| 24|.1A|...|...|

, .
, ,
--------------------------------------------------- DOS , , ,
MOV AH,OFH ;
LEA DX,FCBname ;
INT 21H ; DOS

,
DTA ,
MOV AH,1AH ;
LEA DX,DTAname ; DTA
INT 21H ; DOS

IBM PC. 16. 7


.14:
MOV AH,14H ;
LEA DX,FCBname ;

INT 21H ; DOS

DTA FCB.

00 .
01 , .
02 DTA .
03 , , .
DOS.
FCB
: FCB ----------------------------------- .16.2 , ,
:
BEGIN ,
E10OPEN DTA
F10READ .
, ,
, G10DISP. E10OPEN ,
, 32 (.20),
DTA.

IBM PC. 16. 8


F10READ .

FCB. G10DISP . X10ERR
.
----------------------------------------------------------- ----------------------------------------------------------. 16.2.
.

: | 00| 01| 02|... | 15|


DTA : | 00|
.
16-
----------------------------------------------------------- ,
,

IBM PC. 16. 9

299 , 300- .
, ,
( 33-36) FCB.


DTA ,

MOV AH,21H ;
LEA DX,FCBname ;
INT 21H ; DOS

.
00
01
02
03



- DTA
, .

, .

IBM PC. 16. 10

, ,
| 20 | 21 | 22 | 23 |

, , 23,


DTA ,
MOV AH,22H ;
LEA DX,FCBname ;
INT 21H ; DOS
AL :
00
01
02 DTA.

.
FCB (
IBM PC. 16. 11

: -------------------------------------------------- .16.3 , , (
:
C10OPEN , 32
DTA. D10RECN ,

FCB.

00 24. F10READ DTA
FCB. G10DISP .

D10RECN
00
01 ( AL)
02 ( AX)
----------------------------------------------------------- ----------------------------------------------------------.16.3. .

ASCII .

----------------------------------------------------------- ,
IBM PC. 16. 12

.
X
MOV
MOV
LEA
INT

AH,28H ;
CX,records ;
DX,FCBname ;
21H ; DOS

.
00
01 .

FCB
CX
MOV
MOV
LEA
INT

AH,27H ;
CX,records ;
DX,FCBname ;
21H ; DOS

AL :
00
01
02 DTA
03 .

CX , FCB
, ,
IBM PC. 16. 13

: ---------------------------------------------------------- .16.4 , ,
:
E10OPEN , FCB
32 DTA. F10READ 25
. G10DISP .

00 FCB 00
. 16.4. .
- ------------------------------------------------
, ,

0 1 0
0 2 1
1 1 9
1 9 17
2 9 26

:
= ( 9) + ( - 1)
IBM PC. 16. 14

, 2 9
(2 9) + (9 - 1) = 18 + 8 = 26
-:
MOV
MOV
MOV
MOV
INT

AL,drive# ; 0 A, 1 B ..
BX,addr ; -
CX,sectors ;
DX,record# ;
25H 26H ;

,
AL
1000 0000
0100 0000
0010 0000
0001 0000 ?
0000 1000 DMA
0000 0100
0000 0011
0000 0010

INT . INT
----------------------------------------------------------- DOS

: . D

MOV AH,ODH ;
INT 21H ; DOS
: . E

IBM PC. 16. 15

DOS .E - ( ) .
MOV AH,OEH ;
MOV DL,02 ; C
INT 21H ; DOS
AL ( ). DOS

: . 11 12
,

MOV AH,11H ;
LEA DX,FCBname ; FCB
INT 21H ; DOS

FCB 5CH ,
AL .FF, , .00, .
(, *.ASM),
MOV AH,12H ;
LEA DX,FCBname ; FCB
INT 21H ; DOS
AL 11H.

: .13
DOS 13H.
MOV AH,13H ;
LEA DX,FCBname ; FCB
INT 21H ; DOS

, AL 00,
IBM PC. 16. 16

: . 17
DOS .17.
MOV AH,17H ;
LEA DX,FCBname ; FCB
INT 21H ; DOS

? *
: .19
DOS .19 :
MOV AH,19H ;
INT 21H ; DOS

. AL (0=A, 1=B ..).


FAT (1B 10),
: ----------------------------------------------------- .16.5 COM- SDEL, DOS 11H, 12H 13H
SDEL *.* ( )
SDEL *.BAK ( BAK-)
SDEL TEST.* ( TEST)

DOS , . DOS

IBM PC. 16. 17

, COM-,
.16.5. .
----------------------------------------------------------- -
- ,
(FCB) . - 128 .
FCB ,
. - FCB
: , ,
. - ,
FCB. - - (DTA)

. ,
,
DTA. - FCB
: , ,
(.80), .
. - ,
21H, ,

( )
. - DOS INT
21H
FCB. - DOS INT 21H

. -
FCB. - ( )
. -
, DTA.

, . -
.
.
IBM PC. 16. 18

- DOS INT 25H 26H


,
,
.
----------------------------------------------------------- 16.1.
: ) , ) DTA, )
, ) , )
. 16.2. ,
. )
? )

? ) () ,

? 16.3. , ,
:
( ), (12 )
( ).

. ASCII
. 16.4. ,
16.3. 16.5.
: )45, )73,
)150, )260. 16.6. 2652 ()
FCB? 16.7.

: ) , ) , )
, ) . 16.8.
, .
FCB FLSZ
FCB FCSZ. 16.9. 16.4
, ,
.
,

.

023 00315
024 00430
027 00525
049 00920
114 11250
117 00630
IBM PC. 16. 19

122 10520
124 21335
127 00960
232 05635 ?
999 00000
16.10. 16.9 ,
. 16.11. 16.9 ,
, )
)
(
).

IBM PC. 17. 1

 17. III: DOS ------------------------------------ III: DOS


: DOS, 2.0
----------------------------------------------------------- DOS , 16,
DOS.
ASCIIZ ----------------------------------------------------------- DOS
PATHNM1 DB 'B:\TEST.ASM',0
PATHNM2 DB 'C:\UTILITY\NU.EXE',0

( ) . (zero)
----------------------------------------------------------- AX ,

IBM PC. 17. 2

ASCIIZ DO
01
02
03
04
05 ( )
06
07
08
09
10
11
12
13
15
16
17 ?
18
------------------------------------------------------------

,
: .3C
.3C.
:
MOV AH,3CH ;
MOV CX,00 ;
LEA DX,PATHNM1 ; ASCIIZ
INT 21H ; DOS
JC error ;
MOV HANDLE1,AX ; DW

,
IBM PC. 17. 3

CF 1 AX

: .40
DOS .40. BX
HANDLE1 DW ?
OUTREC DB 256 DUP (' ')
MOV AH,40H ;
MOV BX,HANDLE1 ;
MOV CX,256 ;
LEA DX,OUTREC ;
INT 21H ; DOS
JC error2 ;
CMP AX,256 ; ?
JNE error3

(256 ), CF
: .3E
BX ,
MOV AH,3EH ;
MOV BX,HANDLE1 ;
INT 21H ; DOS

AX 06 ( ).
: . ------------------------------, .17.2, ,

IBM PC. 17. 4

C10CREA .3C

HANDLE. D10PROC

. F10WRIT , .40. G10CLSE ,
,
.
30 : (.0DH)
SORT B:<NAMEFILE.DAT >NAMEFILE.SRT

NAMEFILE.DAT
----------------------------------------------------------- ---------------------------------------------------------- .17.2.
-----------------------------------------------------------

: .3D
, ,
0
1
IBM PC. 17. 5

2
AL DOS 3.0 (.
MOV AH,3DH ;
MOV AL,00 ;
LEA DX,PATHNM1 ; ASCIIZ
INT 21H ; DOS
JC error4 ;
MOV HANDLE2,AX ; DW

,
, CF AX :

: .3F
DOS . 3F.
HANDLE2 DW ?
INPREC DB 512 DUP (' ')
MOV AH,3FH ;
MOV BX,HANDLE2 ;
MOV CX,512 ;
LEA DX,INPREC ;
INT 21H ; DOS
JC error5 ;
CMP AX,00 ; 0 ?
JE endfile

, CF

IBM PC. 17. 6

DOS , ,
: -------------------------------- .17.3 , , (.
,
ASCII- ( ASCII) ------------------------------------------------------- .
<tab>MOV<tab>AH,09<return>
----------------------------------------------------------- -------------------

---------------------------------------- .17.3.
ASCII- :
094D4F560941482C30390D0A

TYPE "", "


, .17.4, HANREA
----------------------------------------------------------- ---------------------------------------------------------- IBM PC. 17. 7
.17.3. ASCII-.

, DOS TYPE, ..
SECTOR. G10XFER
( )
G10XFER : 1. SECTOR. 2.
. ,
, SECTOR. 4. DISARE
CR/LF,
DISAREA. 5. SECTOR DISAREA. 6. "
. 7. " " (.OA)
.2,
.3.

DEBUG.
IBM PC. 17. 8

DOS ------------------------------------------ :
.36
.
MOV AH,36H ;
MOV DL,0 ;
INT 21H ; DOS

AX .FFFF,

AX
BX
CX
DX
DOS 2.0

: .41
( " ")
MOV AH,41H ;
LEA DX,PATHNAM ; ASCIIZ-
INT 21H ; DOS
AX 02 ( ) 05 ( ).

: .42
DOS , 0
BX
0 - .

IBM PC. 17. 9

1 - ,
, . 2 - . (
) ,
CX:DX 0 2
AL.

1024
MOV AH,42H ;
MOV AL,00 ;
LEA BX,HANDLE1 ;
MOV CX,00 ;
MOV DX,1024 ; 1024
INT 21H ; DOS
JC error

CF

: .43
.
MOV
MOV
MOV
LEA
INT

AH,43H ;
AL,01 ;
CX,00 ;
DX,PATHNM2 ; ASCIIZ-
21H ; DOS

CX.

: .47
.4

IBM PC. 17. 10

( ),
ASSEMBLE\EXAMPLES

(.00) .

: .4E .4F
. 11 12 DOS. 4E
MOV
MOV
LEA
INT

AH,4EH ;
CX,00H ;
DX,PATHNM1 ; ASCIIZ-
21H ; DOS

, , DTA FCB

00 - DOS
21 -
22 -
24 -
26 - : ,
30 - 13- ASCIIZ ,
.00.

AX 02 ( ) 18 ( ).
MOV AH,4FH ;
INT 21H ; DOS
AX - 18 ( ).
: . 56

IBM PC. 17. 11

.56. DX
MOV
LEA
LEA
INT

AH,56H ;
DX,oldstring ; DS:DX
DI,newstring ; ES:DI
21H ; DOS

AX 03 ( ), 05 ( ?)
DOS, , (
----------------------------------------------------------- -
,
, .00. -
,
. - CF
AX. - ,
, - . - , ,
,
.
----------------------------------------------------------- 17.1.
" " " ? 17.2. ASCIIZ- PATH1
CUST.LST C. 17.3. (.17.2) )
CUSTHAN
, ) , )
CUSTOUT (128 ) ) .
.
IBM PC. 17. 12
17.4. (.17.3) )
) CUSTIN.
. 17.5. ,
? 17.6. .17.4 ,
,
.

, ..

Return.

IBM PC. 18. 1

 18. IV: BIOS ------------------------------------------------ IV: BIOS


: BIOS
---------------------------------------------------------- BIOS, BIOS
,
AH : , ,
. AL . CH . CL
).
BIOS ---------------------------------------------------------- INT 13H AH

AH = 00:
INT

AH = 01:
AL

AH = 02:
.
IBM PC. 18. 2

EX, ES
MOV
MOV
LEA
MOV
MOV
MOV
MOV
INT

AH,02 ;
AL,01 ;
BX,INSERT ; ES:BX
CH,05 ; 05
CL,03 ; 03
DH,00 ; () 00
DL,01 ; 01 (B)
13H ; BIOS

AL. DS, BX, CX D


.

AH = 03:
( 512

AH = 04:
, ,
AH = 05:

IBM PC. 18. 3

ES:BX , .
T ,
H ,
S ,
B ,
(00-128, 01-256, 02-512, 03-1024).

, 03 , 00 512 ,
----------------------------------------------------------- (02, 03, 04 05)
AH
0000 0001
0000 0010
0000 0011
0000 0100
0000 1000 DMA (
)
0000 1001 64K

0001
0010
0100
1000

0000
0000
0000
0000



()

, (AH=00)
: BIOS ----------------------------------------- , .18.1, BIOS INT 13H
1. FCB .

IBM PC. 18. 4


2. .
.
10 C10ADDR
01. = 1,
;
: 0 1 1 0. 3. CURADR
( ),
ENDADR - .
-

.

DEBUG. ,
----------------------------------------------------------- ----------------------------------------------------------.18.1. BIOS .

, DEBUG ASCII-
, DOS ,
----------------------------------------------------------- -
. - BIOS INT 13
, ,
. -
,
. -
BIOS.
----------------------------------------------------------- IBM PC. 18. 5

18.1. . 18.2.
INDISK,
A, 0, 6 3. 18.4. BIOS INT 13H,
OUTDISK,
B, 0, 8 1. 18.5. 18.4,
? 18.6. 18.4
( ).

IBM PC. 19 1

 19.  -----------------------------------------------------------
:
----------------------------------------------------------- .
.
. IBM PC
, .

----------------------------------------------------------- :
. .
IBM PC. 19 2
08
09
10
11

08
09
0A
0B

12 0C
13 0D
. (. 09) ,

. (.OA)

.
" " " "
DOS --------------------------------------------------- DOS 2.0 ,
HEADG DB 'Industrial Bicycle Mfrs', 0DH, 0AH
...
MOV AH,40H ;
MOV BX,04 ;
MOV CX,25 ; 25
LEA DX,HEADG ;
INT 21H ; DOS

IBM PC. 19 3

CF AX.
: ----------------------------------------------, .19.1, .9.1, ,
List of Employee Names Page 01
Clancy Alderson
Ianet Brown
David Christie
...


D10INPT
. E10PRNT (
);
M10PAGE. M10PAGE ,
,
. P100UT
.

,
PAGECTR DB '01'

,
PAGECTR DB '01'
ASCII - . 3031. M10PAGE
IBM PC. 19 4

.30, . .303A
----------------------------------------------------------- ----------------------------------------------------------.19.1. .

( ) ,

ASCII- ------------------------------------------------------------

, , , ,
, .19.2, , ,
: 1 9 21
: 00000001 00001001 00010101
: 00000000 00001000 00010000
8: 00001000 00010000 00011000
: 8 16 24

:
10PRMP .
Return
. E10OPEN . G10XFER
, " "
. .

IBM PC. 19 5
P10PRNT
. R10READ .

" ", " " " "


----------------------------------------------------------- ----------------------------------------------------------.19.2. ASCII .
" " ASCII
DOS ---------------------------------------------------------

DOS AH 05,

MOV AH,05 ;
MOV DL,char ;
INT 21H ; DOS
. , ,
. SI
HEADG DB 0CH,'Industrial Bicycle Mfrs',0DH,0AH,0AH
LEA SI,HEADG ;
MOV CX,27 ;
P20:
MOV AH,05 ;
IBM PC. 19 6
MOV DL,[SI] ;
INT 21H ; DOS
INC SI ;
LOOP P20

, DOS "Out of pap er".


------------------------------------------------------------

. .
15 0F
14 0E
18 12
20 14

, Esc (.IB).
1B
1B
1B
1B

30
32
45
46

8
6

:
1. .
, 8 ,
"
" " ":
HEADG DB 0FH, 1BH, 30H, 'Title...', 0DH, 0AH
2. :
MOV AH,05 ;
MOV DL,0FH ;
INT 21H

,
, .

IBM PC. 19 7

.
BIOS INT 17H ------------------------------------------------------------

BIOS INT 17H ,


AH=0: 0,1 2 (
MOV AH,00 ;
MOV AL,char ;,
MOV DX,00 ; 0
INT 17H ; BIOS
, AH 01.
AH=1: :
MOV AH,01 ;
MOV DX,00 ; 0
INT 17H ; BIOS
" ",
AH=2: :
MOV AH,02 ;
MOV DX,00 ; 0
INT 17H ; BIOS
TEST AH,00101001B; ?

JNZ errormsg ; -

AH=1 AH=2 .

7
6
5
4
3 /
0

IBM PC. 19 8

, .90 10010000 - "


, BIOS ,
.
----------------------------------------------------------- ,
.
"
" " "
.
DOS
. BIOS
. BIOS
INT 17H .
-----------------------------------------------------------19.1. DOS )
; ) ; )
; )
/ (); )
. 19.2.
DOS.

IBM PC. 19 9
19.3. ,
: , ,
, ( )
. 19.4. 19.1
BIOS INT 17H.
. 19.5. 19.1 ,
), ), ) 5 . 19.6. .19.1
DOS. 19.7. .19.2 ,
.

IBM PC. 20 18

 20.  -----------------------------------------------------------
: .
------------------------------------------------------------

.
MASM , .
:
- ;
- ;
- .

-,
, ,
------------------------------------------------------------

.
INIT1 MACRO ;
ASSUME CS:CSEG,DS:DSEG,SS:STACK;ES:DSEG ; \
PUSH DS ; \

IBM PC. 20 19
SUB AX,AX ; \
PUSH AX ; \
MOV AX,DSEG ;/
MOV DS,AX ; /
MOV ES,AX ; /
ENDM ;

MACRO , ENDM
, , CSEG, DSEG STACK
.20.1 . ,
"
----------------------------------------------------------- ----------------------------------------------------------.20.1. .
---------------------------------------------------

: CSEG, DSEG STACK.


INIT2 MACRO CSNAME,DSNAME,SSNAME ;
ASSUME CS:CSNAME,DS:DSNAME,SC:SSNAME,ES:DSNAME
PUSH DS
SUB AX,AX
PUSH AX
IBM PC. 20 20
MOV AX,DSNAME
MOV DS,AX
MOV ES,AX
ENDM ;


INIT2
:
INIT2 MACRO CSNAME,DSNAME,SSNAME ( ) : | | |
INIT2 CSEG,DSEG,STACK ()

- 1: CSEG CSNAME
. CSEG
CSNAME ASSUME.
- 2: DSEG DSNAME
. DSEG
DSNAME: ASSUME MOV.
- 3: STACK SSNAME
. STACK
SSNAME ASSUME.


----------------------------------------------------------- ----------------------------------------------------------.20.2. .

( ,

IBM PC. 20 21

, .
------------------------------------------------------------

. COMM
PROMPT MACRO MESSGE
;
MOV AH,09H
LEA DX,MESSGE
INT 21H
ENDM

,
.LALL
PROMPT MESSAG1

,
.LALL, .XALL, .SALL
.20.3 .
IBM PC. 20 22

INIT2 PROMPT. PROMPT .LALL


----------------------------------------------------------- ----------------------------------------------------------.20.3.
.
----------------------------------------------

.
DOS21 MACRO DOSFUNC
MOV AH,DOSFUNC
INT 21H
ENDM
:

LEA DX,NAMEPAR
DOS21 0AH
, , 02 AH

DISP MACRO CHAR


MOV AH,02
MOV DL,CHAR
INT 21H
ENDM
, , DISP '*'.

DISP MACRO CHAR


MOV DL,CHAR
DOS21 02
ENDM
, DISP DISP '*',
MOV DL,'*'

IBM PC. 20 23
MOV AH,02
INT 21H
LOCAL ------------------------------------------------------------

.
LOCAL dummy-1,dummy-2,... ;

.20.4. LOCAL.
COMP ??0000, OUT - ??0001.
----------------------------------------------------------- ----------------------------------------------------------.20.4. LOCAL.
-------------------------------------------------- , INIT1 INIT2
INIT MACRO CSNAME,DSNAME,SSNAME
.
.
ENDM
PROMPT MACRO MESSGE
.
.
IBM PC. 20 24
ENDM
MACRO

INCLUDE C:MACRO.LIB
.
.
INIT CSEG,DATA,STACK
MACRO.LIB ( ) C
,
IF1
INCLUDE C:MACRO.LIB
ENDIF

IF1 ENDIF . IF1


.20.5 IF1, INCLUDE ENDIF, LS
INCLUDE ,
----------------------------------------------------------- ----------------------------------------------------------.20.5. .

INCLUDE

IBM PC. 20 25

INIT. PURGE "" P


IF1
INCLUDE MACRO.LIB ;
ENDIF
PURGE PROMRT,DIYIDE ;
...
INIT CSEG,DATA,STACK ;
;

PURGE
(&) ------------------------------------------------------------

(&) ()

MOVE MACRO TAG


REP MOVS&TAG
ENDM
MOVE B MOVE W.
: REPT, IRP, IRPC ----------------------------------------------------- ,
REPT:

REPT ENDM
REPT

N=0
N = 0
IBM PC. 20 26

REPT 5
N = N + 1
DB N
ENDM
DB DB 1 DB 5. REPT
REPT 5
MOVSB
ENDM
IRP:
IRP ENDM. :

IRP dummy,<arguments>
, ,
IRP N,<3, 9, 17, 25, 28>
DB N
ENDM

IRPC:
IRPC ENDM. :

IRPC dummy,string
"string".
IRPC N,345678
DW N
ENDM
------------------------------------------------------------

.
IBM PC. 20 27

,
IFxx ()
. }
. }
ELSE ( ) }
. }
. }
ENDIF ( IF-)

ENDIF : "Undeterminated conditional" (


:
IF ,

. IFE ,

. IF1 ( )
,
. IF2 ( )
,
. IFDEF
EXTRN,

. IFNDEF
EXTRN,

. IFB <> ,

.
. IFNB <> ,

.
.

IBM PC. 20 28
IFIDN <-1>,<-2>
,

.
. IFDIF<-1>,<-2>

,
.
.

IFNB ( ). DOS INT 21H


DOS21 MACRO DOSFUNC,DXADDRES
MOV AN,DOSFUNC
IFNB <DXADDRES>
MOV DX,OFFSET DXADDRES
ENDIF
INT 21H
ENDM
DOS21 01

DOS21 01
MOV AH,01 INT 21H.

DOS21 0AH,IPFIELD
MOV INT 21H.
EXITM. -------------------------------------------------------- , .
IFxx []
.
. ( )
.
EXITM
.
.
IBM PC. 20 29
ENDIF

EXITM,
, IF IFNDEF -------------------------------------------- .20.6 DIVIDE,
IF CNTR
;
EXITM

CNTR ,
, .
----------------------------------------------------------- ----------------------------------------------------------.20.6. IF IFNDEF.
, IFIDN- ---------------------------------------------------------

IBM PC. 20 30

.20.7 MOVIF, M
:
MOVIF MACRO TAG
IFIDN <&TAG>,<B>
IFIDN ( B W)
MOVIF: B,
,
----------------------------------------------------------- ----------------------------------------------------------.20.7. IFIDN
-----------------------------------------------------------
(MASM).

. MACRO,
,
ENDM
. , ,
. .SALL,.LALL .XALL

. LOCAL
. LOCAL
MACRO.
IBM PC. 20 31


,
.
.
.
-----------------------------------------------------------20.1. : )
, )
, . 20.2.
MULTBY
; ) MULTWD
.

.
,
. 20.3. 20.2 "
".
INCLUDE
. 20.4. BIPRINT, BIOS
INT 17H .

. 20.5. .20.6
( ).

IBM PC. 21 1

 21.  -----------------------------------------------------------
: ,
------------------------------------------------------------

. ,
,
, ,
; , ,
;
,
; ,

.

(OBJ)
.21.1
----------------------------------------------------------- ----------------------------------------------------------.21.1. .

, "
IBM PC. 21 2

2, 3 ,
------------------------------------------------------------

CALL , ..
, CALL : E82000. .E8
() .

, CALL :
9A 0002 AF04

.9A 000
04AF0
IP 0200
04CF0

REP
EXTRN PUBLIC
IBM PC. 21 3
------------------------------------------------------------

(MAINPROG), (SUBPROG)
CALL MAINPROG "", SUBPROG (
9A 0000 --- E

SUBPROG PUBLIC, ,
LINK: :
Object Modules [.OBJ]: B:MAINPROG+B:SUBPROG
Run File [filespec.EXE]: B:COMBPROG ( )
List File [NUL.MAP]: CON
Libraries [.LIB]: [return]
----------------------------------------------------------- ----------------------------------------------------------.21.2. .

EXTRN
EXTRN
EXTRN :

EXTRN : [, ... ]
( )
IBM PC. 21 4

ABS, BYTE, DWORD, FAR, NEAR, WORD. EQU


PUBLIC

PUBLIC ,

PUBLIC [, ... ]
( )
.
: EXTRN PUBLIC ---------------------------------

.21.3 CALLMUL1 SUBMUL1.


PUBLIC ( ASSUME), ,
- , .
,
, .

IBM PC. 21 5

( FAR) Global (). ,


( ) . ,
----------------------------------------------------------- ----------------------------------------------------------. 21.3. EXTRN PUBLIC.

, CALL SUBMUL

9A 0000 D413
CALL - .9A. IP

CS 13D20
IP 0020
13D40
,
: PUBLIC ------------------------------ .21.4 .21.3.
CODESG SEGMENT PARA PUBLIC 'CODE'
----------------------------------------------------------- ----------------------------------------------------------.21.4. , PUBLIC.
IBM PC. 21 6

CALL.
( ) :

9A 2000 D213
.2000 IP . D213 CS.

CS: 13D20
IP: 0020
: 13D40
, , , .13D40.
+----------------------------------------+--------------+
| ... ( | |
| ) | |
+----------------------------------------+--------------+
| | |
13D20 13D30 13D40
, ,
:
IBM PC. 21 7
----------------------------------------------------------- ,

QTY PRICE
PUBLIC.
PUBLIC. Global (
) QTY PRICE .
QTY PRICE EXTRN
WORD.
2 .
MOV,
. , QTY
PRICE External
().
----------------------------------------------------------- ----------------------------------------------------------.21.5. .
MOV :

A1 0000 E MOV AX,PRICE


8B 1E 0000 E MOV BX,QTY
.A1 AX, .8B -

A1 0200
8B 1E 0000
, MOV
,
, , ,
IBM PC. 21 8

. -
23 ,
------------------------------------------------------------


, .21.6, SUBMUL

... | 1600 | D213 | 4001 | 0025 | 0000 | C213 |


6 5 4 3 2 1
1. PUSH DS
.
DOS. 2. PUSH AX . 3. PUSH PRICE
(D213) 6. CALL
, IP
(1600).

BP ,
BP SP,
| 0000 | 1600 | D213 | 4001 | 0025 | 0000 |C213 |
| | | | | | |
SP: 72 74 76 78 7A 7C 7E

IBM PC. 21 9

BP 0072, (PRICE) BP+8,

----------------------------------------------------------- ----------------------------------------------------------.21.6. .

BP
RET "" .
IP
(1600). SP 2, 74 76.
CS (D213). SP 2 76 78.

.
RET 4

4 (
BASIC- -----------------------------------

BASIC IBM PC BASIC-


BASIC , .
IBM PC. 21 10

: BASIC
BASIC- POKE.
, .
.

,
BASIC- , ,
,
BASIC- EXE- - USR CALL
IBM PC. 21 11

: BASIC .

BASIC-
. 21.7 BASIC- .
BASIC- . BASIC-
SAVE "B:BASTEST.BAS"
:
- , BASIC;
- BP SP
- ,
----------------------------------------------------------- ----------------------------------------------------------.21.7. BASIC
.

- . ,
1. ,

B:LINKBAS.ASM . 2. LINK,
,
:
LINK B:LINKBAS,B:LINKBAS/HIGH,CON;
3. DEBUG BASIC - :
DEBUG BASIC.COM.
IBM PC. 21 12

4. R
. SS, CS IP. 5.
:

N B:LINKBAS.EXE
L
6. R
CX, CS IP. 7. SS, CS IP
4. ( R SS, R CS R IP). 8. G (go)
BASIC.
BASIC-. 9. , ,
( ):
DEF SEG = &Hxxxx ( CS 6)
BSAVE "B:CLRSCRN.MOD",0,&Hxx ( CX 6)


.
, .
B. 10.
. ,
, SYSTEM
BASIC , , Q
DEBUG.
DOS. 11. BASIC, BASIC-
:
BASIC
LOAD "B:BASTEST.BAS"
LIST
12. 20, 30, 40 50 :
20 BLOAD "B:CLRSCRN.MOD"
30 DEF SEG = &Hxxxx ( CS 6)
40 CLRSCRN = 0 ( )
50 CALL CLRSCRN ( )
13. , BASIC.

BASIC- ,

IBM PC. 21 13

.21.8 -
.
CALL (-1,-2,...)
----------------------------------------------------------- -------------------

----------------------------------------.21.8. BASIC .

, BP
PASCAL -------------------------------------------

, PASCAL
PASCAL- : temp_row temp_col,
move_cursor (temp_row, temp_col);

: ,
00
02
IBM PC. 21 14
04
06
08

BP,
----------------------------------------------------------- ----------------------------------------------------------.21.9. PASCAL-.

SP .
- .
BX, DI SI.
DL.

,

IBM PC. 21 15

.5720 - 20.
C ------------------------------------------------

C ,
C
(
) . ,
, , ,
:
MOV ES,BP
MOV BP,SP
MOV DH,[BP+4]
MOV DL,[BP+6]
...
POP BP
RET
C
,
,
C-.

C ,
, DI SI,

.
,
, AX ( )
DX:AX ( ).
C,
DF,
CLD .
----------------------------------------------------------- , ,
EXTRN,
- PUBLIC.

IBM PC. 21 16
,
1 2,
1.

,
, PUBLIC.

.

( ).
PUBLIC, (
) - EXTRN.
-----------------------------------------------------------21.1. , MAINPRO
SUBPRO. )
MAINPRO , SUBPRO
? )
SUBPRO ,

MAINPRO?
21.2. , MAINPRO
QTY DB, VALUE DW PRICE DW.
SUBPRO VALUE QTY
PRICE. )
MAINPRO ,
? )
SUBPRO
,
?
21.3. 21.2 21.3
.
21.4. ,
MAINPRO ,
. SUBPRO
.
21.5. ,
.
21.4 , MAINPRO
(QTY) (VALVE)
, SUBCONV
ASCII- ;

IBM PC. 21 17
SUBCALC (PRICE); SUBDISP
ASCII-
.

IBM PC. 22 33

 22.  -----------------------------------------------------------
: .
----------------------------------------------------------- DOS , DOS
1.
DOS, ,
FORMAT /S.
(, DOS
A C)
.
,
, .
2. IBMBIO.COM
BIOS ROM;
, .00600.
IBMBIO.COM
,
COMMAND.COM. IBMBIO.COM
- ,
.
3. IBMDOS.COM
,
.00B00.
,
, INT 21H,
.
4. COMMAND.COM DOS,
DIR CHKDSK, COM, EXE
BAT-. :
,
. COMMAND.COM,
,
.

.22.1 .
IBM PC. 22 34
-----------------------------------------------------------

00000 (..23)
00400 ROM ()
00500 DOS
00600 IBMBIO.COM
XXXX0 IBMDOS.COM



(FAT,

)
XXXX0 COMMAND.COM
XXXX0 (COM EXE-)
XXXX0 COM- (256 )
XXXX0 COMMAND.COM,
. -----------------------------------------------------------.22.1. DOS .
COMMAND.COM ----------------------------------------------------------- COMMAND.COM
1.
IBMDOS.COM ( ),
.
-
:
INT 22H .
INT 23H Ctrl/Brea .
INT 24H
/
(FAT).
INT 27H ,
.
2.
AUTOEXEC.
.
,
.

.

.
IBM PC. 22 35
3.
. "" , DOS
, .
COMMAND.COM
DOS A> C>, .

COM- EXE-
.
- ,
(PSP)
COMMAND.COM.

.100 ,

.
:
IBMBIO.COM
IBMDOS.COM
COMMAND.COM ()

...
COMMAND.COM ( , ).

RET INT 20H


------------------------------------------------------------

(PSP) 256 (. 100)


00 INT 20H (.CD20). 02 0.
, 512K .8000 .80000. 04 . 05
(FCB1).

IBM PC. 22 36
6C 2,
(FCB2);
, FCB1 . 80-FF (DTA).
DTA

PSP .80 -

1. . , CALCIT.EXE

2. . , (
80: 03 20 42 59 0D
3, , "BY" .

3. . DEL ( )
5C:
C A
80:
B :

02 43
L C I
0D 20
C A L

41 4C
T O B
42 3A
C I T

43 49 54 20 20 4F 42 4A
J
43 41 4C 43 49 54 2E 4F 42 4A 0D
. 0 B J

IBM PC. 22 37

.5C, FCB, ,

progname A:FILEA,B:FILEB
DOS FCB FILEA .5C FCB FILEB .6C.
.80 (
PSP , PSP
MOV SI,80H ; DTA
CMP BYTE PTR [SI],0 ; ?
JE EXIT

EXE- ,
MOV AX,DSEG
MOV DS,AX

MOV SAVEPSP,ES
PSP:

MOV SI,SAVEPSP
CMP BYTE PTR [SI+ 80H],0 ; ?
JE EXIT
DOS 3.0 INT 62H, BX P
COM- ------------------------------------------------------------

EXE-, COM- . COM-

IBM PC. 22 38

, COM- EXE-
RET IP ,
EXE- ------------------------------------------------------------

EXE-, , : 1) -
, ,
00 .4D5A.
EXE-. 02 EXE-. 04 512
. 06 . 08 16- ()
( ,
). OA ,
. OC .
,

.
. .0000
, .FFFF - .
,
.
IBM PC. 22 39

OE
. 10 , SP
. 12 -
) . 14 ,
IP
. 16
. CS. 18
EXE-. 1C ,
,
06.

512 ,
COMMAND.COM,
.
04 08)
.

( OE). SS SP
. DS ES
. CS PSP

( 16) CS.
PSP,
256 (.100).
CS:IP ,
.. .
CS SS , DS ( ES)
1. PUSH DS ; PSP
2. SUB AX,AX ;
IBM PC. 22 40
3. PUSH AX ;
4. MOV AX,datasegname ; DX
5. MOV DS,AX ;

RET IP ,
EXE- ----------------------------------------------------------- (MAP) :
Start Stop Length Name Class
00000H 0003AH 003BH CSEG CODE
00040H 0005AH 001BH DSEG DATA
00060H 0007FH 0020H STACK STACK
Program entry point at 0000:0000

MAP ( ) .
MAP CSEG 00000 -
DEBUG ,
00 .4D5A. 02 : 5B00. 04 512 ,
0200 (.0002512=1024).

IBM PC. 22 41

06 ,
: 0100, .. 0001. 08 16
(.0020=32 3216=512). 0C : .FFFF. 0E
60. 10 SP: 2000 .20. 14 IP: 0000. 16 C
.1E.

DEBUG
SP = 0020 DS = 138F ES = 138F
SS = 13A5 CS = 139F IP = 0000

EXE- DS ES
SP

.20
CS

DS , PSP .138

SS
SS :
PSP (.DS) 138F0
PSP 100
IBM PC. 22 42
60
13A50
DS

DS PSP.
0004 B8 --- R MOV AX,DSEG
0007 8E D8 MOV DS,AX

DSEG,
B8 A313
A313 DS 13A3.


CS 139F0 00
DS 13A30 40
SS 13A50 60


PUSH DS IP SP
SUB AX,AX IP AX ( )
PUSH AX IP SP
MOV AX,DSEG IP AX
MOV DS,AX IP DS
DS .
----------------------------------------------------

, .

IBM PC. 22 43

BX ( ES:BX).

AL=0. .

0
.
2
PSP+80H.
6 FCB
PSP+5CH.
10 FCB

PSP+6CH.

AL=3. . ,

0
.
2
.

, AX: 01, 02, 05, 08, 10 11.


----------------------------------------------------------- ----------------------------------------------------------.22.2. DIR .

IBM PC. 23 55

 23. BIOS DOS ----------------------------------------------------------- BIOS DOS


: , BIOS DOS.
------------------------------------------------------------

,
BIOS (Basic Input/Output System) ROM
------------------------------------------------------------

IBM PC ROM FFFF0H.


BIOS DOS.

BIOS
IBMBIO.COM IBMDOS.COM
COMMAND.COM
IBM PC. 23 56

COMMAND.COM
RAM ()
ROM BASIC
ROM BIOS

INTR .
, , INT 12H, ,
, CS IP.

BIOS ----------------------------------------------------------- BIOS.

INT 05H ( ). . IN
-----------------------------------------------------------
() ()
0-3 0
4-7 1 ( DEBUG)
IBM PC. 23 57
8-B 2 (NMI)
C-F 3 ( DEBUG)
10-13 4
14-17 5
18-1F 6,7
20-23 8
24-27 9
28-37 A,B,C,D AT
38-3B E
3C-3F F
40-43 10 (.. 8, 9, 10)
44-47 11 (..9)
48-4B 12 (..2)
4C-4F 13 - (..18)
50-53 14
54-57 15 . AT
58-5B 16 (..9)
5C-5F 17 (..19)
60-63 18 BASIC, ROM
64-67 19
68-6B 1A
6C-6F 1B
70-73 1C
74-77 1D
78-7B 1E
7C-7F 1F
80-83 20 (DOS)
84-87 21 DOS
88-8B 22 (DOS)
8C-8F 23 Ctrl/Brea (DOS)
90-93 24 (DOS)
94-97 25 (DOS)
98-9B 26 (DOS)
97-9F 27 (DOS)
AO-FF 28-3F DOS
100-1FF 40-7F
200-217 80-85 BASIC
218-3C3 86-F0 BASIC-
3C4-3FF F1-FF
: 00-1F BIOS,
20-FF DOS BASIC.
-----------------------------------------------------------.23.1. .
BIOS ------------------------------------------------------------

BIOS.

IBM PC. 23 58
INT 05H . .

INT 10H . ,
INT 11H .

15,14
13
12
11-9 RS232
7,6 , 0=1:
00=1, 01=2, 10=3 11=4
5,4 :
00 =
01 = 4025
10 = 8025
11 = 8025 -
1 1
0 1

INT 12H . AX

INT 13H -. -

INT 14H . -

INT 15H - AT.


IBM PC. 23 59

INT 16H . ,

INT 17H . .

INT 18H BASIC, ROM. BASIC-,

INT 19H . 1

INT 1AH .
AH=00 . CX , DX
AH=01 . CX ( ) D
02 06 AT.

INT 1FH .

DOS ------------------------------------------------------------

BIOS DOS: IBMBIO.COM IBMDOS.COM.


IBMBIO.COM BIOS .

IBM PC. 23 60

IBMDOS.COM ,
ROM

+-----------+ +----------+ +----------+
|| | DOS | | DOS | +----+ +----------+
| / ||IBMDOS.COM||IBMBIO.COM||BIOS|||
+-----------+ +----------+ +----------+ +----+ +----------+

, .20 .62 DOS.


INT 20H .

INT 21H DOS. DOS,


INT 22H . (.INT 24H).
INT 23H Ctrl/Brea . (.INT 24H).
INT 24H .
INT 25H . ..17.
INT 26H . ..17.
INT 27H , . COM-
DOS INT 21H ------------------------------------------------------------

IBM PC. 23 61

DOS INT 21H.


00
01
02
03
04

( INT 20H).
.
.
. .
. .

IBM PC. 1
1 ---------------------------------------------------------- ASCII-

128 ASCII-. BASIC


2 ------------------------------------------------------------


---------------------------------------------------------

. A7B8 ,
: A (10) 10
16 *16
160
, 7 7
167

16 *16
2672
, B (11) 11
2683
16 *16
42928
, 8 8
42936

. . A7B8

1
1
1
1

(8),
(8),
(8),
(8),

1
1
1
1

8
176
1792
40960

IBM PC. 2
42936


-------------------------------------------------------- 42936
.
42936 / 16 2683 8 8 ( )
2683 / 16 167 11 B
167 / 16 10 7 7
10 / 16 0 10 A ( )


. .
42936
40960 A000
1976
1792 700
184
176 B0
8 8
. 7 A7B8
3 -----------------------------------------------------------



AH BH CH DH CS SS BP
AL BL CL DL DS SI SP
IBM PC. 3
AX BX CX DX ES DI

AAA DIV JLE JS OR SBB


AAD ESC JMP JZ OUT SCAS
AAM HLT JNA LAHF POP SHL
AAS IDIV JNAE LDS POPF SHR
ADC IMUL JNB LEA PUSH STC
ADD IN JNBE LES PUSHF STD
AND INC JNE LOCK RCL STI
CALL INT JNG LODS RCR STOS
CBW INTO JNGE LOOP REP SUB
CLC IRET JNL LOOPE REPE TEST
CLD JA JNLE LOOPNE REPNE WAIT
CLI JAE JNO LOOPNZ REPNZ XCHG
CMC JB JNP LOOPZ REPZ XLAT
CMP JBE JNS MOV RET XOR
CMPS JCXZ JNZ MOVS ROL
CWD JE JO MUL ROR
DAA JG JP NEG SAHF
DAS JGE JPE NOP SAL
DEC JL JPO NOT SAR

ASSUME END EXTRN IFNB LOCAL PURGE COMMENT ENDIF GROUP IFNDEF
DM IF IF1 NAME REPT DD ENDP IFB IF2 ORG SEGMENT DQ ENDS IFDEF
DT EQU IFDIF IRP PAGE SUBTTL DW EVEN IFE IRPC PROC TITLE ELSE
PUBLIC

BYTE FAR LENGTH MOD PRT THIS COMMENT GE LINE NE SEG TYPE CON
IDTH DUP HIGH LOW NOTHING SIZE WORD EQ LE MASK OFFSET STACK

MACRO RECORD DB EN
INCLUDE OUT STRUC
EXITM IFIDN LABEL
GT LT NEAR SHORT W

IBM PC. . 9
. . . . . .
0000 0 0 1000 8 8 0001 1 1 1001 9 9 0010 2 2 1010 10 A 0011 3 3 1011 11 B 0100
4 4 1100 12 C 0101 5 5 1101 13 D 0110 6 6 1110 14 E 0111 7 7 1111 15 F

+======================+
I D O S I
I I
+---------+ - - - - - - - - - - - +
SS | +------->I I |
+ - - - - + I I |
DS | +----+ - - - - - - - - - - - | + - - - - + +-->I I |
CS | +---+ I I |
+---------+ | - - - - - - - - - - - |
+--->I I |

I I |
- - - - - - - - - - - +
I I
I I
I I
I I
+======================+

IBM PC. . 10

|
: | :
|
|
+--------+--------+ |
| AH | AL | |
+--------+--------+ |
| BH | BL | |
+--------+--------+ |
| CH | CL | |
+--------+--------+ |
| DH | DL | |
+--------+--------+ | +-----------------+
| SP | | | CS |
+-----------------+ | +-----------------+
| BP | | | DS |
+-----------------+ | +-----------------+
| SI | | | SS |
+-----------------+ | +-----------------+
| DI | | | ES |
+-----------------+ | +-------+---------+
| |
| | | +-------+
V | V | -|
====================================>| |<==> 8088
| | |

| | | +-------+
V | |
+-----------------+ | +---+---+
| : -| | +---+ 1 |
| | | | +-------+
| | | | | 2 | ( ) +->+ - - - - - - - - + | | +-------+ | | :
| 4 | | | | | | +-------+ | +-----------------+ | | | | | | +---------------| | |
+-----------------+ |
|

IBM PC. . 11


. . +-----------------------------+
0K 00000 | RAM 256K - |
| |
+-----------------------------+
256K 40000 | RAM 384K - |
| I/O |
+-----------------------------+
640K A0000 | RAM 128K /- |
| |
+-----------------------------+
768K C0000 | ROM 192K |
| |
+-----------------------------+
960K F0000 | ROM 64K |
| |
+-----------------------------+

IBM PC. . 12
D>DEBUG -E CS:100 B8 23 01 05 25 00 -E CS:106 8B D8 03 D8 8B CB -E CS:10C 2B C8
2B C0 90 CB -R AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13C6 ES=13C6 SS=13C6 CS=13C6 IP=0100 NV UP EI PL NZ NA PO NC 13C6:0100 B8230
MOV AX,0123 -T
AX=0123 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C6 ES=13C6
SS=13C6 CS=13C6 IP=0103 NV UP EI PL NZ NA PO NC 13C6:0103 052500 ADD AX,0025 -T
AX=0148 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C6 ES=13C6
SS=13C6 CS=13C6 IP=0106 NV UP EI PL NZ NA PE NC 13C6:0106 8BD8 MOV BX,AX -T
AX=0148 BX=0148 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C6 ES=13C6
SS=13C6 CS=13C6 IP=0108 NV UP EI PL NZ NA PO NC 13C6:0108 03D8 ADD BX,AX -T
AX=0148 BX=0290 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C6 ES=13C6
SS=13C6 CS=13C6 IP=010A NV UP EI PL NZ AC PO NC 13C6:010A 8BCB MOV CX,BX -T
AX=0148 BX=0290 CX=0290 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C6 ES=13C6
SS=13C6 CS=13C6 IP=010C NV UP EI PL NZ AC PO NC 13C6:010C 2BC8 SUB CX,AX -T
AX=0148 BX=0290 CX=0148 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C6 ES=13C6
SS=13C6 CS=13C6 IP=0100 NV UP EI PL NZ AC PO NC 13C6:010E 2BC0 SUB AX,AX -T
AX=0000 BX=0290 CX=0148 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C6 ES=13C6
SS=13C6 CS=13C6 IP=0110 NV UP EI PL ZR NA PO NC 13C6:0110 90 NOP -T
AX=0000 BX=0290 CX=0148 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C6 ES=13C6
SS=13C6 CS=13C6 IP=0111 NV UP EI PL ZR NA PO NC 13C6:0111 CB RETF -

IBM PC. . 13
-D CS:100 13C6:0100 B8 23 01 05 25 00 8B D8-03 D8 8B CB 2B C8 2B C0 .#..%......
.+.+. 13C6:0110 90 CB 8D 46 14 50 51 52-FF 76 28 E8 74 00 8B E5 ...F.PQR.v(.t...
13C6:0120 B8 01 00 50 FF 76 32 FF-76 30 FF 76 2E FF 76 28 ...P.v2.v0.v..v( 13C6
:0130 E8 88 15 8B E5 BF 36 18-12 FF 36 16 12 8B 76 28 ......6...6...v( 13C6:0140
FF 74 3A 89 46 06 E8 22-CE 8B E5 30 E4 3D 0A 00 .t:.F.."...0.=.. 13C6:0150 75 3
2 A1 16 12 2D 01 00-8B 1E 18 12 83 DB 00 53 u2...-.........S 13C6:0160 50 8B 76
28 FF 74 3A A3-16 12 89 1E 18 12 E8 FA P.v(.t:......... 13C6:0170 CD 8B E5 30 E4
3D 0D 00-74 0A 83 06 16 12 01 83 ...0.=..t....... -Q

IBM PC. . 14
D>DEBUG -E DS:23 01 25 00 00 -E DS:2A 2A 2A -E CS:100 A1 00 00 03 06 02 00 -E C
S:107 A3 04 00 CB -D DS:0 13C6:0000 23 01 25 00 00 9A 2A 2A-2A F0 F5 02 2C 10 2E
03 #.%...***...,... 13C6:0010 2C 10 BD 02 2C 10 B1 0D-01 03 01 00 02 FF FF FF ,
...,........... 13C6:0020 FF FF FF FF FF FF FF FF-FF FF FF FF EF 0F 64 00 ......
........d. 13C6:0030 61 13 14 00 18 00 C7 13-FF FF FF FF 00 00 00 00 a..........
..... 13C6:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13C6:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20 .!........... 13C6:00
60 20 20 20 20 20 20 20 20 00 00 00 00 00 20 20 20 ..... 13C6:0070 20 20 20 20 2
0 20 20 20-00 00 00 00 00 00 00 00 ........ -R AX=0000 BX=0000 CX=0000 DX=0000 S
P=FFEE BP=0000 SI=0000 DI=0000 DS=13C6 ES=13C6 SS=13C6 CS=13C6 IP=0100 NV UP EI
PL NZ NA PO NC 13C6:0100 A10000 MOV AX,[0000] DS:0000=0123 -T
AX=0123 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C6 ES=13C6
SS=13C6 CS=13C6 IP=0103 NV UP EI PL NZ NA PO NC 13C6:0103 03060200 ADD AX,[0002
] DS:0002=0025 -T
AX=0148 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C6 ES=13C6
SS=13C6 CS=13C6 IP=0107 NV UP EI PL NZ NA PE NC 13C6:0107 A30400 MOV [0004],AX

DS:0004=9A00 -T
AX=0148 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13C6 ES=13C6
SS=13C6 CS=13C6 IP=0108 NV UP EI PL NZ NA PO NC 13C6:010A CB RETF -D DS:0 13C6:
0000 23 01 25 00 00 9A 2A 2A-2A F0 F5 02 2C 10 2E 03 #.%...***...,... 13C6:0010
2C 10 BD 02 2C 10 B1 0D-01 03 01 00 02 FF FF FF ,...,........... 13C6:0020 FF FF
FF FF FF FF FF FF-FF FF FF FF EF 0F 64 00 ..............d. 13C6:0030 61 13 14 0
0 18 00 C7 13-FF FF FF FF 00 00 00 00 a............... 13C6:0040 00 00 00 00 00
00 00 00-00 00 00 00 00 00 00 00 ................ 13C6:0050 CD 21 CB 00 00 00 00
00-00 00 00 00 00 20 20 20 .!........... 13C6:0060 20 20 20 20 20 20 20 20 00 0
0 00 00 00 20 20 20 ..... 13C6:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00
00 ........ -Q

CODESG SEGMENT PARA 'CODE'


BEGIN PROC FAR
1. ASSUME CS:CODESG,DS:DATASG,SS:STACKG
2. PUSH DS ; DS
3. SUB AX,AX ; AX
PUSH AX ;
IBM PC. . 15
4. MOV AX,DATASG ;
MOV DS,AX ; DATASG DS
.
.
.
5. RET ; DOS
BEGIN ENDP
CODESG ENDS
END BEGIN

page 60,132 TITLE EXASM1 (EXE) ;-------------------------------SACK 'Stac '


DB 12 DUP('STACKSEG') STACKSG ENDS ;---------------------------------------------- CODESG SEGMENT PARA 'Code' BEGIN PROC FAR
ASSUME SS:STACKSG,CS:CODESG,DS:NOTHING
PUSH DS ; DS
SUB AX,AX ;
PUSH AX ;
MOV AX,0123H ; .0123 AX
ADD AX,0025H ; .25 AX
MOV BX,AX ; AX BX
ADD BX,AX ; BX AX
MOV CX,BX ; BX CX
SUB CX,AX ; AX CX
SUB AX,AX ; AX
NOP
RET ; DOS BEGIN ENDP ;
CODESG ENDS ;
END BEGIN ;

IBM PC. . 16

1 page 60,132 2 TITLE EXASM1 (EXE) 3 ;-------------------------SEGMENT PARA SACK 'Stac ' 5 0000 0C [ DB 12 DUP('STACKSEG') 6 53 54 41 43 7 4B 5
3 45 47 8 ] 9 10 0060 STACKSG ENDS 11 ;----------------------------------------------- 12 0000 CODESG SEGMENT PARA 'Code' 13 0000 BEGIN PROC FAR 14 ASSUME SS:S
TACKSG,CS:CODESG,DS:NOTHING 15 0000 1E PUSH DS ; DS 16 0001 2B C0 SUB AX,AX ;
0004 B8 0123 MOV AX,0123H ; .0123 AX 20 0007 05 0025 ADD AX,0025H ;
03 D8 ADD BX,AX ; BX AX 23 000E 8B CB MOV CX,BX ; BX CX 24 0010 2B C8
AX,AX ; AX 26 0014 90 NOP 27 0015 CB RET ; DOS 28 0016 BEGIN ENDP ;
-------------------------------------------------Segments and Groups:
N a m e Size Align Combine Class
CODESG . . . . . . . . . . . . 0016 PARA NONE 'CODE'
STACKSG. . . . . . . . . . . . 0060 PARA STACK 'STACK'
Symbols:
N a m e Type Value Attr
BEGIN. . . . . . . . . . . . . F PROC 0000 CODESG Length=0016 -------------------------------------------------------------------------

IBM PC. . 17

1 page 60,132 2 TITLE EXASM2 (EXE) 3 ;-----------------------SG SEGMENT PARA SACK 'Stac ' 5 0000 20 [ DB 32 DUP(?) 6 ???? 7 ] 8 9 0040 STACKS
G ENDS 10 ;-------------------------------------------------- 11 0000 DATASG SEG
MENT PARA 'Data' 12 0000 00FA FLDA DW 250 13 0002 007D FLDB DW 125 14 0004 ????
FLDC DW ? 15 0006 DATASG ENDS 16 ;------------------------------------------------- 17 0000 CODESG SEGMENT PARA 'Code' 18 0000 BEGIN PROC FAR 19 ASSUME CS:CODE
SG,DS:DATASG,SS:STACKSG,ES:NOTHING 20 0000 1E PUSH DS ; DS 21 0001 2B C0 SUB A
X ;
23 0004 B8 --- R MOV AX,DATASG ; DATASG 24 0007 8E D8 MOV DS,AX ; D
LDA ; 0250 AX 27 000C 03 06 0002 R ADD AX,FLDB ; 0125 AX 28 0010 A3 000

29 0013 CB RET ; DOS 30 0014 BEGIN ENDP 31 0014 CODESG ENDS


END BEGIN
---------------------------------------------------------------------------Segments and Groups:
N a m e Size Align Combine Class
CODESG . . . . . . . . . . . . 0014 PARA NONE 'CODE'
DATASG . . . . . . . . . . . . 0006 PARA NONE 'DATA'
STACKSG. . . . . . . . . . . . 0040 PARA STACK 'STACK'
Symbols:
N a m e Type Value Attr
BEGIN. . . . . . . . . . . . . F PROC 0000 CODESG Length=0014
FLDA . . . . . . . . . . . . . L WORD 0000 DATASG
FLDB . . . . . . . . . . . . . L WORD 0002 DATASG
FLDC . . . . . . . . . . . . . L WORD 0004 DATASG ---------------------------------------------------------------------------

IBM PC. . 18

EXASM2 (EXE)
Symbol Cross Reference (# is definition) Cref-1
BEGIN. . . . . . . . . . . . 18# 30 32
CODE . . . . . . . . . . . . 17
CODESG . . . . . . . . . . . 17# 19 31
DATA . . . . . . . . . . . . 11
DATASG . . . . . . . . . . . 11# 15 19 23
FLDA . . . . . . . . . . . . 12# 26
FLDB . . . . . . . . . . . . 13# 27
FLDC . . . . . . . . . . . . 14# 28
STACK. . . . . . . . . . . . 4
STACKSG. . . . . . . . . . . 4# 9 19
10 Symbols

IBM PC. . 19

page 60,132
TITLE EXDEF (EXE)
0000 DATASG SEGMENT PARA 'Data'
; - DB:
; ---------------------0000 ?? FLD1DB DB ? ;
0001 50 65 72 73 6F 6E FLD2DB DB 'Personal Computer' ;.
61 6C 20 43 6F 6D
70 75 74 65 72
0012 20 FLD3DB DB 32 ;
0013 20 FLD4DB DB 20H ;.
0014 59 FLD5DB DB 01011001B ;
0015 01 4A 41 4E 02 46 FLD6DB DB 01,'JAN',02,'FEB',03,'MAR' ;
45 42 03 4D 41 52
0021 33 32 36 35 34 FLD7DB DB '32654' ;
0026 0A [ 00 ] FLD8DB DB 10 DUP(0) ;
; - DW:
; ---------------------0030 FFF0 FLD1DW DW 0FFF0H ;.
0032 0059 FLD2DW DW 01011001B ;
0034 0021 R FLD3DW DW FLD7DB ;
0036 0003 0004 0007 FLD4DW DW 3,4,7,8,9 ;
0008 0009
0040 05 [ 0000 ] FLD5DW DW 5 DUP(0) ;
; - DD:
; ------------------------------004A ???????? FLD1DD DD ? ;
004E 43 50 00 00 FLD2DD DD 'PC' ;
0052 3C 7F 00 00 FLD3DD DD 32572 ;
0056 11 00 00 00 FLD4DD DD FLD3DB - FLD2DB ;
005A 0E 00 00 00 31 00 FLD5DD DD 14,49 ;
00 00

; - DQ:
; -----------------------------------0062 ???????????????? FLD1DQ DQ ? ;
006A 47 4D 00 00 00 00 FLD2DQ DQ 04D47H ;.
00 00
0072 3C 7F 00 00 00 00 FLD3DQ DQ 32572 ;.
00 00
; - DT:
; ---------------------------007A ?????????????????? FLD1DT DT ? ;
??
0084 43 50 00 00 00 00 FLD2DT DT 'PC' ;
00 00 00 00
008E DATASG ENDS
END --------------------------------------------------------------------------- IBM PC. . 20
Segments and Groups:
N a m e Size Align Combine Class
DATASG . . . . . . . . . . . . 008E PARA NONE 'DATA'
Symbols:
N a m e Type Value Attr
FLD1DB . . . . . . . . . . . . L BYTE 0000 DATASG
FLD1DD . . . . . . . . . . . . L DWORD 004A DATASG
FLD1DQ . . . . . . . . . . . . L QWORD 0062 DATASG
FLD1DT . . . . . . . . . . . . L TBYTE 007A DATASG
FLD1DW . . . . . . . . . . . . L WORD 0030 DATASG
FLD2DB . . . . . . . . . . . . L BYTE 0001 DATASG
FLD2DD . . . . . . . . . . . . L DWORD 004E DATASG
FLD2DQ . . . . . . . . . . . . L QWORD 006A DATASG
FLD2DT . . . . . . . . . . . . L TBYTE 0084 DATASG
FLD2DW . . . . . . . . . . . . L WORD 0032 DATASG
FLD3DB . . . . . . . . . . . . L BYTE 0012 DATASG
FLD3DD . . . . . . . . . . . . L DWORD 0052 DATASG
FLD3DQ . . . . . . . . . . . . L QWORD 0072 DATASG
FLD3DW . . . . . . . . . . . . L WORD 0034 DATASG
FLD4DB . . . . . . . . . . . . L BYTE 0013 DATASG
FLD4DD . . . . . . . . . . . . L DWORD 0056 DATASG
FLD4DW . . . . . . . . . . . . L WORD 0036 DATASG
FLD5DB . . . . . . . . . . . . L BYTE 0014 DATASG
FLD5DD . . . . . . . . . . . . L DWORD 005A DATASG
FLD5DW . . . . . . . . . . . . L WORD 0040 DATASG Length =0005
FLD6DB . . . . . . . . . . . . L BYTE 0015 DATASG
FLD7DB . . . . . . . . . . . . L BYTE 0021 DATASG
FLD8DB . . . . . . . . . . . . L BYTE 0026 DATASG Length =000A ------------------------------------------------------------------------------

IBM PC. . 21
D:\ D>DEBUG D:EXDEF.EXE -D 1421:0000 00 50 65 72 73 6F 6E 61-6C 20 43 6F 6D 70
75 74 .Personal Comput 1421:0010 65 72 20 20 59 01 4A 41-4E 02 46 45 42 03 4D 41
er Y.JAN.FEB.MA 1421:0020 52 33 32 36 35 34 00 00-00 00 00 00 00 00 00 00 R3265
4.......... 1421:0030 F0 FF 59 00 21 00 03 00-04 00 07 00 08 00 09 00 ..Y.!.....
...... 1421:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 43 50 ..............C
P 1421:0050 00 00 3C 7F 00 00 11 00-00 00 0E 00 00 00 31 00 ..<...........1.
1421:0060 00 00 00 00 00 00 00 00-00 00 47 4D 00 00 00 00 ..........GM.... 1421:
0070 00 00 3C 7F 00 00 00 00-00 00 00 00 00 00 00 00 ..<............. -D 1421
:0080 00 00 00 00 43 50 00 00-00 00 00 00 00 00 33 33 ....CP........33 1421:0090
3E 36 33 33 73 00 00 00-0A 0E 00 00 3E 63 63 30 >633s.......>cc0 1421:00A0 1C 0
6 63 63 3E 00 00 00-0A 0E 00 00 FF DB 99 18 ..cc>........... 1421:00B0 18 18 18
18 3C 00 00 00-0A 0E 00 00 63 63 63 63 ....<.......cccc 1421:00C0 63 63 63 63
3E 00 00 00-0A 0E 00 00 C3 C3 C3 C3 cccc>........... 1421:00D0 C3 C3 66 3C 18 0
0 00 00-0A 0E 00 00 C3 C3 C3 C3 ..f<............ 1421:00E0 DB DB FF 66 66 00
00 00-0A 0E 00 00 C3 C3 66 3C ...ff.........f< 1421:00F0 18 3C 66 C3 C3 00 00
00-0A 0E 00 00 C3 C3 C3 66 .<f............f -Q

IBM PC. . 22

page 60,132
TITLE EXIMM (EXE)
; ( ,
; ) 0000 DATASG SEGMENT PARA 'Data' 0000 ?? FLD1 DB ? 0001 ???? FLD2 DW
0000 CODESG SEGMENT PARA 'Code' 0000 BEGIN PROC FAR
ASSUME CS:CODESG,DS:DATASG

; :
; ----------------------------- 0000 BB 0113 MOV BX,275 ; 0003 3C 19 CMP AL,H ;

; :
; ---------------------- 0005 14 05 ADC AL,5 ; 0007 80 C7 0C ADD BH,12 ;
B FLD1,5 ;

; ( 1 ):
; -------------------------------- 0011 D0 D3 RCL BL,1 ; 0013 D0 DC
; 001B D1 E1 SAL CX,1 ; 001D D1 FB SAR BX,1 ;. 001

; :
; ------------------ 0023 24 2C AND AL,00101100B ;AND () 0025 80 CF 2A OR BH,2AH ;OR
F6 C3 7A TEST BL,7AH ;TEST () 002B 80 36 0000 R 23 OR FLD1,23H ;XOR () 0030 BEGI
ODESG ENDS
END

IBM PC. . 23

page 60,132 TITLE XCOM1 COM- CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H ; PSP BEGIN: JMP MAIN ; ; ------------------------? ; -------------------------------------------------- MAIN PROC NEAR
MOV AX,FLDA ; 0250 AX
ADD AX,FLDB ; 0125 AX
MOV FLDC,AX ; FLDC
RET ; DOS MAIN ENDP CODESG ENDS
END BEGIN

page 60,132
TITLE EXJUMP (COM) JMP 0000 CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG 0100 ORG 100H
0100 MAIN PROC NEAR 0100 B8 0001 MOV AX,01 ; AX, 0103 BB 0001 MOV BX,01 ; BX, 0
OV CX,01 ; CX 0109 A20: 0109 05 0001 ADD AX,01 ; 01 AX 010C 03 D8 ADD BX,AX ;
CX,1 ; CX 0110 EB F7 JMP A20 ; A20 0112 MAIN ENDP 0112 CODESG ENDS
END MAIN

IBM PC. . 24

page 60,132
TITLE EXLOOP (COM) LOOP 0000 CODESG SEGMENT
ASSUME CS:CODESG,DS:CODESG,SS:CODESG 0100 ORG 100H
0100 BEGIN PROC NEAR 0100 B8 0001 MOV AX,01 ; AX, 0103 BB
MOV DX,01 ; DX 0109 B9 000A MOV CX,10 ; 010C A20: 010C 40
1 E2 SHL DX,1 ; DX 0111 E2 F9 LOOP A20 ; CX
; , 0113 C3 RET ; 0114 BEGIN ENDP 0114
END BEGIN

+-------------------------+
| CODESG SEGMENT PARA |
+-------------------------+
| BEGIN PROC FAR |
| . |
| . |
| CALL B10 |
| CALL C10 |
| RET |
| BEGIN ENDP |
+-------------------------+
| B10 PROC NEAR |
| . |
| . |
| RET |
| B10 ENDP |
+-------------------------+
| C10 PROC NEAR |
| . |
| . |

PARA 'Code'
0001 MOV BX,01 ; BX,
INC AX ; 01
CODESG ENDS

| RET |
| C10 ENDP |
+-------------------------+
| CODESG ENDS |
| END BEGIN |
+-------------------------+

IBM PC. . 25

TITLE CALLPROC (EXE) 0000 STACKSG SEGMENT PARA STACK 'Stac ' 0000 20 [ ???? ]
0040 STACKG ENDS
0000 CODESG SEGMENT PARA 'Code' 0000 BEGIN PROC FAR
ASSUME CS:CODESG,SS:STACKSG 0000 1E PUSH DS 0001 2B C0 SUB AX,AX 0003 50 PUSH A
X 0004 E8 0008 R CALL B10 ; B10
; ... 0007 CB RET ; 0008 BEGIN ENDP
;------------------------------------- 0008 B10 PROC 0008 E8 000C R CALL C10 ; C10
; ... 000B C3 RET ; 000C B10 ENDP ;
;--------------------------------------------- 000C C10 PROC
; ... 000C C3 RET ; 000D C10 ENDP ;
;--------------------------------------------- 000D CODESG ENDS
END BEGIN

IBM PC. . 26

page 65,132 TITLE EXMOVE (EXE) ;----------------------------RA STACK 'Stac '


DW 32 DUP(?) STACKSG ENDS ;---------------------------------------------------- DATASG SEGMENT PARA 'Data' NAME1 DB 'ABCDEFGHI' NAME2 DB 'JKLMNOPQR' NAME3 DB
'STUVWXYZ*' 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
CALL B10MOVE ; JUMP
CALL C10MOVE ; CALL
RET ; BEGIN ENDP
; (JUMP-), ; : ; ---------LEA SI,NAME1 ;
LEA DI,NAME2 ; NAME1 NAME2
MOV CX,09 ; 9 B20:
MOV AL,[SI] ; NAME1
MOV [DI],AL ; NAME2
INC SI ; NAME1
INC DI ; NAME2
DEC CX ;
JNZ B20 ; > 0? -
RET ; = 0, B10MOVE ENDP ;
; (LOOP-), ; LOOP: ; ---------------LEA SI,NAME2 ;
LEA DI,NAME3 ; NAME2 NAME3
MOV CX,09 ; 9 C20
IBM PC. . 27
MOV AL,[SI] ; NAME2
MOV [DI],AL ; NAME3
INC DI ; NAME2
INC SI ; NAME3
LOOP C20 ; ,
; ,
RET ; = 0, C10MOVE ENDP ; CODESG ENDS
END BEGIN

TITLE CASE (COM) 0000 CODESG SEGMENT PARA 'CODE'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG 0001 ORG 100H 0001 EB 1C 90 BEGIN: JMP MAI
N

; ------------------------------------------ 0003 43 68 61 6E 67 65 TITLEX DB '


Change to uppercase letters'
20 74 6F 20 75 70
70 65 72 63 61 73
65 20 6C 65 74 74
65 72 73
; ------------------------------------------ 011E MAIN PROC NEAR 011E 8D 1E 010
4 R LEA BX,TITLEX+1 ; 0122 B9 001F MOV CX,31 ; 0125 B20: 0
A 72 0A JB B30 ; 012C 80 FC 7A CMP AH,7AH ; 012F 77 05 JA B30 ; ? 0131 80 E4
111B ; - 0134 88 27 MOV [BX],AH ; TITLEX 0136 B30: 0136 43 INC BX ;
G ENDS
END BEGIN

IBM PC. . 28

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

IBM PC. . 29

page 60,132 TITLE CTRNAME (EXE) ;-------------------------EGMENT PARA STACK 'Stac '
DW 32 DUP(?) STACKSG ENDS ;------------------------------------------------------ DATASG SEGMENT PARA 'Data' NAMEPAR LABEL BYTE ; : MAXNLEN DB 20 ;
; 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 N
MUV AN,09 ;
LEA DX,PROMPT
INT 21H
RET B10PRMP ENDP ; : ; ---------------------- D10INPT PROC NEAR
IBM PC. . 30

MOV AN,0AN ;
LEA DX,NAMEPAR
INT 21H
RET D10INPT ENDP ; '$': ; --------------------------------MOV BN,00 ; Return (0D)
MOV BL,NAMELEN ; . (07)
MOV NAMEFLD[BX],07
MOV NAMEFLD[BX+1],'$' ;
RET E10CODE ENDP ; : ; --------------------------------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
MOV AH,02 ;
MOV BH,00 ; #0
INT 10H ; BIOS
RET Q20CURS ENDP
CODESG ENDS
END BEGIN

IBM PC. . 31

page 60,132 TITLE NMSCROLL (EXE) , , ; ---------------------T PARA STACK 'Stac '
DW 32 DUP(?) STACKSG SEGMENT PARA STACK 'Stac '
DW 32 DUP(?) STACKG ENDS ; ----------------------------------------------------- DATASG SEGMENT PARA 'Data' NAMEPAR LABEL BYTE ; : MAXNLEN DB 20 ;
COL DB 00 COUNT DB ? PROMPT DB 'Name? ' ROW DB 00 DATASG ENDS ; ----------------------------------------------------- CODESG SEGMENT PARA 'Code' BEGIN PROC FA
R
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 ;
IBM PC. . 32

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 ; : ; --------------------------------- E
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
IBM PC. . 33
INT
RET
MOV
MOV
MOV
MOV
INT
RET
END

10H ; BIOS
Q10CLR ENDP ; (/): ; --------------------------------- Q2
AN,02
BH,00
DH,ROW
DL,COL
10H
Q20CURS ENDP CODESG ENDS
BEGIN

-
Alt/A Alt/Z 1E - 2C
F1 F10 3B - 44
Home 47
48
PgUp 49
4B
4D
End 4F
50
PgDn 51
Ins 52
Del 53

IBM PC. . 34
TITLE GRAPHIX (COM) CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG
ORG 100H
MAIN PROC NEAR
MOV AN,00 ;
MOV AL,0DH ; EGA (CGA=04)
MOV
MOV
MOV
INT

AH,0BH ;
BH,00 ;
BL,02 ;
10H

MOV
MOV
MOV
MOV
MOV
INT
INC
CMP
JNE
MOV
INS
INS
CMP
JNE
RET
END

BX,00 ; ,
CX,00 ;
DX,00 ; A50:
AH,0CH ;
AL,BL ;
10H ;BX, CX, DX
CX ;
CX,320 ; 320?
A50 ; - ,
CX,00 ; -
BL ;
DX ;
DX,40 ; 40?
A50 ; - ,
; - MAIN ENDP CODESG ENDS
MAIN

IBM PC. . 35

page 60,132 TITLE STRING (EXE) ; ------------------------------ARA STACK 'Stac '


DW 32 DUP(?) STACKG ENDS ; -------------------------------------------------- D
ATASG SEGMENT PARA 'Data' NAME1 DB 'Assemblers' ; NAME2 DB 10 DUP(' ') NAME3 D
ATASG ENDS ; -------------------------------------------------- CODESG SEGMENT P
ARA '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
CALL C10MVSB ; MVSB
CALL D10MVSW ; LODS
CALL E10LODS ; LODS
CALL F10STOS ; CMPS
CALL H10SCAS ; SCAS
RET BEGIN ENDP ; MOVSB: ; ------------------ C10MVSB PROC NEAR
CLD
LEA SI,NAME1
LEA D1,NAME2
MOV CX,10 ; 10
REP MOVSB ; NAME1 NAME2
RET C10MVSB ENDP ; MOVSW: ; ------------------ D10MVSW PROC NEAR
CLD
LEA SI,NAME2
LEA DI,NAME3
MOV CX,05 ; 5
REP MOVSW ; NAME2 NAME3
RET D10MVSW ENDP ; LODSW: ; ------------------ E10LODS PROC NEAR
IBM PC. . 36
CLD
LEA SI,NAME1 ;
LODSW ; NAME1 AX
RET E10LODS ENDP ; STOSW: ; ------------------ F10STOS PROC NEAR
CLD
LEA D1,NAME3
MOV CX,05
MOV AX,2020H ;
REP STOSW ; NAME3
RET F10STOS ENDP ; CMPSB: ; ------------------ G10CMPS PROC NEAR
CLD
MOV CX,10
LEA SI,NAME1
LEA DI,NAME2
REPE CMPSB ; NAME1 NAME2
JNE G20 ; ?
MOV BH,01
G20: MOV CX,10
LEA SI,NAME2

LEA DI,NAME3
REPE CMPSB ; NAME2 NAME3
JE G30 ; ,
MOV BL,02 G30: RET G10CMPS ENDP
; SCASB: ; ------------------ H10SCAS PROC NEAR
CLD
MOV CX,10
LEA DI,NAME1
MOV AL,'m' ; 'm'
REPNE SCASB ; NAME1
JNE H20 ; -
MOV AH,03 H20: RET H10SCAS ENDP
CODES ENDS
END BEGIN

IBM PC. . 37

page 60,132 TITLE EXRING (COM) , CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H BEGIN: JMP SHORT MAIN ;------------------------------------------------------ NAMEPAR LABEL BYTE ; MAXNLEN DB 31 ;. ACTNLEN DB ? ;
PROMPT DB 'Name?', '$' NAMEDSP DB 31 DUP(' '), 13, 10, '$' ROW DB 00 ;------------------------------------------------------ MAIN PROC NEAR ;
MOV AX,0600H
CALL Q10SCR ;
SUB DX,DX ; 00,00
CALL Q20CURS A10LOOP:
CALL B10INPT ;
TEST ACTNLEN,0FFH ; ? (.. )
JZ A90 ; -
CALL D10SCAS ;
CMP AL,'*' ;?
JE A10LOOP ; -
CALL E10RGHT ;
CALL A10LOOP A90: RET MAIN ENDP ; : ; ------------------------MOV AH,09
LEA DX,PROMPT ;
INT 21H
RET B10INPT ENDP ; : ; ---------------------- D10SCAS PROC
CLD
MOV AL,'*'
MOV CX,30 ; - 30
LEA DI,NAMEFLD
REPNE SCASB ; ?
JE D20 ; - ,
MOV AL,20H ; * AL D20: RET D10SCAS ENDP
IBM PC. . 38
; : ; ----------------------------------- E10RGHT PROC
STD
SUB CH,CH
MOV CL,ACTNLEN ; CX REP

LEA SI,NAMEFLD ;
ADD SI,CX ;
DEC SI ;
LEA DI,NAMEDSP+30 ; .
REP MOVSB ;
MOV DH,ROW
MOV DL,48
CALL Q20CURS ;
MOV AH,09
LEA DX,NAMEDSP ;
INT 21H
CMP ROW,20 ; ?
JAE E20 ; INC ROW ; ,
JMP E90 E20:
MOV AX,0601H ; CALL Q10SCR ;
MOV DH,ROW ;
MOV DL,00
CALL Q20CURS E90: RET E10RGHT ENDP ; : ; --------------------- F10CLNM
CLD
MOV AX,2020H
MOV CX,15 ; 15
LEA DI,NAMEDSP
REP STOSW
RET F10CLNM ENDP ; : ; --------------- Q10SCR PROC ;AX
MOV BH,30 ; ( 07 /)
MOV CX,00
MOV DX,184FH
INT 10H
RET Q10SCR ENDP ; (/): ; --------------------------------- Q2
MOV AH,02
SUB BH,BH
IBM PC. . 39
INT 10H
RET Q20CURS ENDP CODESG ENDS
END BEGIN

IBM PC. . 84

TITLE EXDWMUL - CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG
ORG 100H BEGIN: JMP SHORT MAIN ; -------------------------------------------- M
ULTCND DW 3206H ;
DW 2521H MULTPLR DW 6400H
DW 0A26H PRODUCT DW 0
DW 0
DW 0
DW 0 ; -------------------------------------------- MAIN PROC NEAR ;
CALL E10XMUL ; 1-
CALL Z10ZERO ;
CALL F10XMUL ; 2-
RET MAIN ENDP ; : ; --------------------------------------MOV AX,MULTCND+2 ;
MUL MULTPLR ;
MOV PRODUCT+4,AX ;
MOV PRODUCT+2,DX
MOV
MUL
ADD
ADC
RET
MOV
MUL
MOV

AX,MULTCND ;
MULTPLR ;
PRODUCT+2,AX ;
PRODUCT,DX
E10XMUL ENDP ; : ; --------------------------------------AX,MULTCND+2 ;-2
MULTPLR+2 ; * -2
PRODUCT+6,AX ;

MOV PRODUCT+4,DX
MOV
MUL
ADD
ADC
ADC

AX,MULTCND+2 ;-2
MULTPLR ; * -1
PRODUCT+4,AX ;
PRODUCT+6,DX
PRODUCT,00 ;

MOV AX,MULTCND ;-1


MUL MULTPLR+2 ; * -2
ADD PRODUCT+4,AX ;
IBM PC. . 85

ADC PRODUCT+6,DX
ADC PRODUCT,00 ;
MOV AX,MULTCND ;-1
MUL MULTPLR ; * -1
ADD PRODUCT+2,AX ;
ADC PRODUCT,DX
RET F10XMUL ENDP ; : ; --------------------------------------- Z10
MOV PRODUCT,0000
MOV PRODUCT+2,0000
MOV PRODUCT+4,0000
MOV PRODUCT+6,0000
RET Z10XMUL ENDP
CODESG ENDS
END BEGIN

IBM PC. . 86

page 60,132 TITLE EXDIV (COM) DIV IDIV CODESG SEGMENT PARA 'Code'
ORG 100H BEGIN: JMP SHORT MAIN ; -------------------------------------------- B
YTE1 DB 80H ;Data items BYTE2 DB 16H WORD1 DW 2000H WORD2 DW 0010H WORD3 DW 1000
H ; -------------------------------------------- MAIN PROC NEAR ;
CALL D10DIV ; DIV
CALL E10IDIV ; IDIV MAIN ENDP ; DIV: ; ---------------MOV AX,WORD1 ; /
DIV BYTE1 ; : AH:AL
MOV AL,BYTE1 ; /
SUB AH,AH ; AH
DIV BYTE3 ; : AH:AL

MOV DX,WORD2 ; /
MOV AX,WORD3 ; DX:AX
DIV WORD1 ; : DX:AX
MOV AX,WORD1 ; /
SUB DX,DX ; DX
DIV WORD3 ; : DX:AX
RET D10DIV ENDP ; IDIV: ; -------------------------------------------- E1
MOV AX,WORD1 ; /
IDIV BYTE1 ; : AH:AL
MOV AL,BYTE1 ; /
CBW ; AH
IDIV BYTE3 ; : AH:AL
MOV DX,WORD2 ; /
MOV AX,WORD3 ; DX:AX
IDIV WORD1 ; : DX:AX
MOV AX,WORD1 ; /
CWD ; DX
IDIV WORD3 ; : DX:AX
RET E10DIV ENDP
CODESG ENDS
IBM PC. . 87
END BEGIN

TITLE ASCADD (COM) ASCII- CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG
ORG 100H BEGIN: JMP SHORT MAIN ; ---------------------------------------------ASC1 DB '578' ; ASC2 DB '694' ASC3 DB '0000' ; ------------------------------ MAIN PROC NEAR
CLC
LEA SI,AASC1+2 ; ASCII-
LEA DI,AASC2+2
LEA BX,AASC1+3
MOV CX,03 ; 3 A20:

MOV AH,00 ; AH
MOV AL,[SI] ; ASCII-
ADC AL,[DI] ; ( )
AAA ; ASCII
MOV [BX],AL ;
DEC SI
DEC DI
DEC BX
LOOP A20 ; 3
MOV [BX],AH ;
RET MAIN ENDP CODESG ENDS
END BEGIN

IBM PC. . 88

TITLE ASCMUL (COM) ASCII- CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG
ORG 100H BEGIN: JMP MAIN ; -------------------------------------------- MULTCND
DB '3783' ; MULTPLR DB '5' PRODUCT DB 5 DUP(0) ; ---------------------------- MAIN PROC NEAR
MOV CX,04 ;4
LEA SI,MULTCND+3
LEA DI,PRODUCT+4
AND MULTPLR,0FH ; ASCII- A20:
MOV AL,[SI] ; ASCII-
; ( LODSB)
AND AL,OFH ; ASCII-
MUL MULTPLR ;
AAM ; ASCII
ADD AL,[DI] ;
AAA ;
MOV [DI],AL ;
DEC DI
MOV [DI],AH ;
DEC SI
LOOP A20 ; 4
RET MAIN ENDP CODESG ENDS
END BEGIN

TITLE ASCDIV (COM) ASCII- CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG
ORG 100H BEGIN: JMP SHORT MAIN ; -------------------------------------------- D
IVDND DB '3698' ; DIVSOR DB '4' QUOTNT DB 4 DUP(0) ; ---------------------------- MAIN PROC NEAR
MOV CX,04 ;4
SUB AH,AH ;
AND DIVSOR,0FH ; ASCII 3
LEA SI,DIVDND
LEA DI,QUOTNT A20:
IBM PC. . 89
MOV AL,[SI] ; ASCII
; ( LODSB)
AND AL,0FH ; ASCII
AAD ;
DIV DIVSOR ;
MOV [DI],AL ;
INC SI
INC DI
LOOP A20 ; 4
RET MAIN ENDP CODEGS ENDS
END BEGIN

IBM PC. . 90

TITLE SCREMP (EXE) ,


; ; --------------------------------------------------- STACKSG SEGMENT
DW 32 DUP(?) STACKSG ENDS ; --------------------------------------------------DATASG SEGMENT PARA 'Data' HRSPAR LABLE BYTE ;
; : MAXHLEN DB 6 ;-------------------- ACTHLEN DB ? HRSFLD DB 6 DUP(?)
RATEPAR LABLE BYTE ;
; : MAXRLEN DB 6 ;-------------------- ACTRLEN DB ? RATEFLN DB 6 DUP(?)
MESSG1 DB 'Hours wor ed? ','$' MESSG2 DB 'Rate of pay? ','$' MESSG3 DB 'Wage =
' ASCWAGE DB 10 DUP(30H), 13, 10, '$' ADJUST DW ? ASCHRS DB 0 ASCRATE DB 0 BINVA
L DW 00 BINHRS DW 00 BINRATE DW 00 COL DB 00 DECIND DB 00 MULT10 DW 01 NODEC DW
00 ROW DB 00 SHIFT DW ? TENWD DW 10 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
MOV AX,0600H
CALL Q10SCR ;
CALL Q20CURS ; A20LOOP:
IBM PC. . 91

CALL B10INPT ;
CMP ACTHLEN,00 ; ?
JE A30
CALL D10HOUR ;
CALL E10RATE ;
CALL F10MULT ;
CALL G10WAGE ; ASCII
CALL K10DISP ;
JMP A20LOOP A30:
MOV AX,0600H
CALL Q10SCR ;
RET ; BEGIN ENDP ; ; ----------------------------LEA DX,MESSG1 ;
MOV AH,09
INT 21H
LEA DX,HRSPAR ;
MOV AH,0AH
INT 21H
CMP ACTHLEN,00 ; ?
JNE B20
RET ; - A20LOOP B20:
MOV COL,25 ;

CALL Q20CURS
LEA DX,MESSG2 ;
MOV AH,09
INT 21H
LEA DX,RATEPAR ;
MOV AH,0AH
INT 21H
RET B10INPT ENDP ; : ; ---------------- D10HOUR PROC
MOV NODEC,00
MOV CL,ACTHLEN
SUB CH,CH
LEA SI,HRSFLD-1 ;
ADD SI,CX ;
CALL M10ASBI ;
MOV AX,BINVAL
MOV BINHRS,AX
RET D10HOUR ENDP ; : ; ----------------- E10RATE PROC
IBM PC. . 92

MOV CL,ACTRLEN
SUB CH,CH
LEA SI,RATEFLD-1 ;
ADD SI.CX ;
CALL M10ASBI ;
MOV AX,BINVAL
MOV BINRATE,AX
RET E10RATE ENDP ; , : ; ---------------------------- F10MULT PRO
MOV CX,05
LEA DI,ASCWAGE ;
MOV AX,3030H ; ASCII (30)
CLD
REP STOSW
MOV SHIFT,10
MOV ADJUST,00
MOV CX,NODEC
CMP CL,06 ; 6
JA F40 ; ,
DEC CX
DEC CX
JLE F30 ;, 3
MOV NODEC,02
MOV AX,01 F20:
MUL TENWD ;
LOOP F20
MOV SHIFT,AX
SHR AX,1 ;
MOV ADJUST,AX F30:
MOV AX,BINHRS
MUL BINRATE ;
ADD AX,ADJUST ;
ADC DX,00
CMP DX,SHIFT ;
JB F50 ; DIV? F40:
SUB AX,AX
JMP F70 F50:
CMP ADJUST,00 ; ?
JZ F80

DIV SHIFT ; F70: SUB DX,DX ; F80: RET F10MULT ENDP ;


IBM PC. . 93
LEA SI,ASCWAGE+7 ; .
MOV BYTE PTR[SI],'.'
ADD SI,NODEC ; G30:
CMP BYTE PTR[SI],'.'
JNE G35 ;, ..
DEC SI G35:
CMP DX,00 ; dx:ax < 10,
JNZ G40
CMP AX,0010 ;
JB G50 G40:
DIV TENWD ; - ASCII-
OR DL,30H
MOV [SI],DL ; ASCII
DEC SI
SUB DX,DX ;
JMP G30 G50:
OR AL,30H ; ASCII
MOV [SI],AL ;
RET G10WAGE ENDP ; : ; -------------------- K10DISP PROC
MOV COL,50 ;
CALL Q20CURS
MOV CX,09
LEA SI,ASCWAGE K20: ;
CMP BYTE PTR[SI],30H
JNE K30 ;
MOV BYTE PTR[SI],20H
INC SI
LOOP K20 K30:
LEA DX,MESSG3 ;
MOV AH,09
INT 21H
CMP ROW,20 ; ?
JAE K80
INC ROW ; -
JMP K90 K80:
MOV AX,0601H ; -CALL Q10SCR ;
MOV COL,00 ;
CALL Q20CURS K90: RET K10DISP ENDP ; ASCII-
IBM PC. . 94
;
MOV
MOV
MOV
SUB
MOV
CMP
JNE
MOV
JMP
AND

: ; ------------------------- M10ASBI PROC


MULT10,0001
BINVAL,00
DECIND,00
BX,BX M20:
AL,[SI] ;ASCII-
AL,'.' ;, .
M40
DECIND,01
M90 M40:
AX,000FH

MUL MULT10 ;
ADD BINVAL,AX ; .
MOV AX,MULT10 ;
MUL TENVD ; x 10
MOV MULT10,AX
CMP DECIND,00 ; ?
JNZ M90
INC BX ; - M90:
DEC SI
LOOP M20
;
CMP DECIND,00 ; .?
JZ M100 ; -ADD NODEC,BX ; M100: RET M10ASBI ENDP ; : ; --------------MOV BH,30 ; (07 /)
SUB CX,CX
MOV DX,184FH
INT 10H
RET Q10SCR ENDP ; : ; ---------------- Q20CURS PROC NEAR
MOV AH,02
SUB BH,BH
MOV DH,ROW
MOV DL,COL
INT 10H
RET Q20CURS ENDP
CODESG ENDS
IBM PC. . 95
END BEGIN

IBM PC. . 96

page 60,132 TITLE DIRECT (COM) CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,ES:CODESG
ORG 100H BEGIN: JMP SHORT MAIN ; ---------------------------------------------- THREE DB 3 MONIN DB '11' ALFMON DB '???','$' MONTAB DB 'JAN','FEB','MAR','APR'
,'MAY','JUN'
DB 'JUL','AUG','SEP','OKT','NOV','DEC' ; ---------------------------------------------- MAIN PROC NEAR ;
CALL C10CONV ;
CALL D10LOC ;
CALL F10DISP ;
RET MAIN ENDP ; ASCII : ; ---------------------------------MOV AH,MONIN ;
MOV AL,MONIN+1
XOR AX,3030H ; ASCII
CMP AH,00 ; 01-09?
JZ C20 ; -
SUB AH,AH ; - AH,
ADD AL,10 ; C20 RET C10CONV ENDP ; : ; --LEA SI,MONTAB
DEC AL ;
MUL THREE ; AL 3
ADD SI,AX
MOV CX,03 ;
CLD
LEA DI,ALFMON
REP MOVSB ; 3
RET D10LOC ENDP ; .: ; ------------------------- F10DISP PROC
LEA DX,ALFMON
MOV AH,09
INT 21H

RET F10DISP ENDP


IBM PC. . 97
CODESG ENDS
END BEGIN

IBM PC. . 98

page 60,132 TITLE TABSRCH (COM) CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,ES:CODESG
ORG 100H BEGIN: JMP SHORT MAIN ; ---------------------------------------------STOKNIN DW '23' STOKTAB DB '05','Excavators'
DB '08','Lifters '
DB '09','Presses '
DB '12','Valves '
DB '23','Processors'
DB '27','Pumps ' DESCRN 10 DUP(?) ; --------------------------------------------- MAIN PROC NEAR
MOV AX,STOKNIN ;
XCHG AL,AH
MOV CX,06 ;
LEA SI,STOKTAB ; A20:
CMP AX,[SI] ;
JE A30 ; - ,
ADD SI,12 ; -
LOOP A20
CALL R10ERR ;
RET A30:
MOV CX,05 ;
LEA DI,DESCRN ;
INC SI
INC SI ;
REP MOVSW ;
RET MAIN ENDP ; R10ERR PROC ; < >
RET R10ERR ENDP
CODESG ENDS
END BEGIN

IBM PC. . 99

page 60,132 TITLE TABSRCH (COM) , CMPSB CODESG SEGMENT PARA 'Cod
ASSUME CS:CODESG,DS:CODESG,ES:CODESG
ORG 100H BEGIN: JMP SHORT MAIN ; -------------------------------------------------- STOKNIN DW '123' STOKTAB DB '035','Excavators' ;
DB '038','Lifters '
DB '049','Presses '
DB '102','Valves '
DB '123','Processors'
DB '127','Pumps '
DB '999', 10 DUP(' ') ; DESCRN 10 DUP(?) ; --------------------------------------- MAIN PROC NEAR
CLD
LEA SI,STOKTAB ; A20:

MOV CX,03 ; 3
LEA DI,STOKNIN ;
REPE CMPSB ;
JE A30 ; - ,
JA A40 ; -
ADD SI,CX ; CX
JMP A20 ; A30:
MOV CX,05 ; 5
LEA DI,DESCRN ;
REP MOVSV ;
RET A40:
CALL R10ERR ;
RET MAIN ENDP
R10ERR PROC ; < >
RET R10ERR ENDP
CODESG ENDS
END BEGIN

IBM PC. . 100

page 60,132 TITLE XLATE (COM) ASCII EBCDIC CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,ES:CODESG
ORG 100H 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

IBM PC. . 101

page 60,132 TITLE ASCHEX (COM) ASCII . CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,ES:CODESG
ORG 100H BEGIN: JMP MAIN ; ---------------------------------------------- DISPR
OW DB 16 DUP(' '), 13 HEXSTR DB 00 XLATAB DB 30H,31H,32H,33H,34H,35H,36H,37H,38H
,39H
DB 41H,42H,43H,44H,45H,46H ; ---------------------------------------------- MAI
N PROC NEAR ;
CALL Q10CLR ;
LEA SI,DISPROW A20LOOP:
CALL C10HEX ;
CALL D10DISP ;
CMP HEXCTR,0FFH ; (FF)?
JE A50 ; -
INC HEXCTR ; -
JMP A20LOOP A50: RET MAIN ENDP
C10HEX PROC NEAR ; .
MOV AH,00
MOV AL,HEXCTR ; .
SHR AX,CL ; .
LEA BX,XLATAB ;
MOV CL,04 ;
XLAT ; .
MOV [SI],AL ;
MOV AL,HEXCTR
SHL AX,CL ;
XLAT
MOV [SI]+1,AL ; .
RET ; C10HEX ENDP
D10DISP PROC NEAR ;
MOV AL,HEXCTR
MOV [SI]+3,AL
CMP AL,1AH ; EOF?
JE D20 ; -
CMP AL,07H ;/ 08?
JB D30 ; - OK
CMP AL,10H ;/ 0F?
JAE D30 ; - OK D20:
MOV BYTE PTR [SI]+3,20H
IBM PC. . 102

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

IBM PC. . 103

page 60,132 TITLE NMSORT (EXE) ; -----------------------------------ARA STACK 'Stac '


DW 32 DUP(?) STACK ENDS ; ---------------------------------------------- DATASG
SEGMENT PARA 'Data' NAMEPAR LABEL BYTE ; : MAXNLEN DB 21 ; . N
CRLF DB 13, 10, '$' ENDADDR DW ? MESSG1 DB 'Name?', '$' NAMECTR DB 00 NAMETAB D

B 30 DUP(20 DUP(' ')) ; NAMESAV DB 20 DUP(?), 13, 10, '$' SWAPPED DB 00 DATA ENDS
---------------------------------------- CODESG SEGMENT PARA 'Code' BEGIN PROC F
AR
ASSUME CS:CODESG,DS:DATDSG,SS:STACK,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 ; A20LOOP:
CALL B10READ ;
CMP NAMELEN,00 ; ?
JZ A30 ; -
CMP NAMECTR,30 ; 30 ?
JE A30 ; -
CALL D10STOR ;
JMP A20LOOP A30: ;
CALL Q10CLR ;
CALL Q20CURS ;
CMP NAMECTR,01 ; 2 ?
JBE A40 ; -
CALL G10SORT ;
CALL K10DISP ; A40: RET ; BEGIN ENDP
IBM PC. . 104
; ? ; --------------------- B10READ PROC
MOV AH,09
LEA DX,MESSG1 ;
INT 21H
MOV AH,0AH
LEA DX,NAMEPAR ;
INT 21H
MOV AH,09
LEA DX,CRLF ; CRLF
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
LES SI,NAMEFLD
MOV CX,10
REP MOVSV ;
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 ; ?
IBM PC. . 105
JBE
CMP
JNZ
RET
MOV
LEA
MOV
REP

G30 ; -
SWAPPED,00 ; ?
G20 ; - ,
; - G10SORT ENDP ; : ; -------------CX,10
DI,NAMESAV
SI,BX
MOVSW ;

MOV CX,10
MOV DI,BX
REP MOVSW ;
;
MOV CX,10
LEA SI,NAMESAV
REP MOVSW ;
;
MOV SWAPPED,01 ;
RET H10XCHG ENDP ; : ; --------------------------------LEA SI,NAMETAB K20:
LEA DI,NAMESAV ;
MOV CX,10
REP MOVSV
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
IBM PC. . 106
SUB
SUB
INT
RET

BH,BH
DX,DX ; 00,00
10H
Q20CURS ENDP

CODESG ENDS
END BEGIN

IBM PC. . 107

page 60,132 TITLE FCBCREAT (EXE) FCB ;--------------------SEGMENT PARA STACK 'Stac '
DW 80 DUP(?) STACKSG ENDS ;-------------------------------------------------------- DATASG SEGMENT PARA 'Data' RECLEN EQU 32 NAMEPAR LABEL BYTE ; : MAXLEN
' ') ; (DTA)
FCBREC LABEL BYTE ;FCB FCBDRIV DB 04 ; D FCBNAME DB 'NAMEFILE'
DW ? ; (DOS)

DT ? ; (DOS) FCBSQRC DB 00 ;
DD ? ;
CRLF DB 13,10,'$' ERRCDE DB 00 PROMPT DB 'Name? ','$' ROW DB 01 OPNMSG DB '***
Open error ***', '$' WRTMSG DB '*** Write error ***', '$' DATASG ENDS ; ------------------------------------------------------- CODESG SEGMENT PARA 'Code' BEGI
N 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
MOV AX,0600H
CALL Q10SCR ;
CALL Q20CURS ;
CALL C10OPEN ;, DTA
CMP ERRCDE,00 ; ?
JZ A20LOOP ; - ,
RET ; - DOS A20LOOP:
CALL D10PROC
IBM PC. . 108

CMP NAMELEN,00 ; ?
JNE A20LOOP ; - ,
CALL G10CLSE ; -
RET ; DOS BEGIN ENDP ; : ; ----------------------- C10
MOV AH,16H ;
LEA DX,FCBREC
INT 21H
CMP AL,00 ; ?
JNZ C20 ; -
MOV FCBRCSZ,RECLEN ; (EQU)
LEA DX,NAMEDTA ; DTA
MOV AH,1AH
INT 21AH
RET C20:
LEA DX,OPNMSG ;
CALL X10ERR
RET C10OPEN ENDP ; : ; ---------------- D10PROC PROC NEAR
MOV AH,09 ;
LEA DX,PROMPT ;
INT 21H
MOV AH,0AH ;
LEA DX,NAMEPAR ;
INT 21H
CALL E10DISP ;
CMP NAMELEN,00 ; ?
JNE D20 ; - ,
RET ; - D20:
MOV BH,00 ; Return
MOV BL,NAMELEN
MOV NAMEDTA[BX],' ' ;
CALL F10WRIT ;

;
CLD
LEA DI,NAMEDTA ;
MOV CX,RECLEN / 2 ;
MOV AX,2020H ;
REP STOSW
RET ; D10PROC ENDP ; :
IBM PC. . 109

; ---------------------------- E10DISP PROC NEAR


MOV AH,09 ;
LEA DX,CRLF ;CR/LF
INT 21H ; DOS
CMP ROW,18 ; ?
JAE E20 ; - ,
INC ROW ; -
RET E20:
MOV AX,0601H ; 1
CALL Q10SCR
CALL Q20CURS ;
RET E10DISP ENDP ; : ; ------------- F10WRIT PROC NEAR
MOV AH,15H ;
LEA DX,FCBREC
INT 21H
CMP AL,00 ; ?
JZ F20 ;
LEA DX,WRTMSG ; CALL X10ERR ;
MOV NAMELEN,00 F20: RET F10WRIT ENDP ; : ; ----------------------- G
MOV NAMEDTA,1AH ; EOF
CALL F10WRIT
MOV AH,10H ;
LEA DX,FCBREC
INT 21H
RET G10CLSE ENDP ; : ; --------------- Q10SCR PROC NEAR ;AX
MOV BH,1EH ;
MOV CX,0000
MOV DX,184FH
INT 10H ;
RET Q10SCR ENDP ; : ; ---------------- Q20CURS PROC NEAR
MOV AH,02
MOV BH,00
MOV DL,00
IBM PC. . 110

MOV DH,ROW ;
INT 10H
RET Q20CURS ENDP ; : ; --------------------------------- X
MOV AH,09 ;DX
INT 21H ;
MOV ERRCDE,01 ;
RET X10ERR ENDP
CODESG ENDS
END BEGIN

IBM PC. . 111

TITLE FCBREAD (EXE) CREATDSK ; ---------------------------------ENT PARA STACK 'Stac '


DW 80 DUP(?) STACKSG ENDS ;------------------------------------------------------ DATASG SEGMENT PARA 'Data' FCBREC LABEL BYTE ;FCB FCBDRIV DB 04 ; D FC
; FCBEXT DB 'DAT' ; FCBBLK DW 0000 ; FCBRCSZ DW 000
DD ? ; (DOS)
DW ? ; (DOS)
DT ? ; (DOS) FCBSQRC DB 00 ;
DD ? ;
RECLEN EQU 32 ; NAMEFLD DB RECLEN DUP(' '), 13, 10, '$'
ENDCDE DB 00 OPENMSG DB '*** Open error ***', '$' READMSG DB '*** Read error **
*', '$' 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 AX
MOV AX,DATASG

MOV DS,AX
MOV ES,AX
MOV AX,0600H
CALL Q10SCR ;
CALL Q20CURS ;
CALL E10OPEN ; ,
; DTA
CMP ENDCDE,00 ; ?
JNZ A90 ; - A20LOOP:
CALL F10READ ;
CMP ENDCDE,00 ; ?
JNZ A90 ; -
CALL G10DISP ;
JMP A20LOOP ; A90: RET ; BEGIN ENDP
IBM PC. . 112
; : ; ---------------------- E10OPEN PROC NEAR
LEA X,FCBREC
MOV AH,0FH ;
INT 21H
CMP AL,00 ; ?
JNZ E20 ; -
MOV FCBRCSZ,RECLEN ; (EQU)
MOV AH,1AH
LEA DX,NAMEFLD ; DTA
INT 21H
RET E20:
MOV ENDCDE,01 ;
LEA DX,OPENMSG
CALL X10ERROR
RET E10OPEN ENDP ; : ; --------------------- F10READ PROC NEAR
MOV AH,14H ;
LEA DX,FCBREC
INT 21H
CMP NAMEFLD,1AH ; EOF?
JNE F20 ;
MOV ENDCDE,01 ;
JMP F90 F20:
CMP AL,00 ; ?
JZ F90 ; -
MOV ENDCDE,01 ;:
CMP AL,01 ; ?
JZ F90 ; - ,
LEA DX,READMSG ; -
CALL X10ERR ; F90:
RET F10READ ENDP ; : ; -------------------- G10DISP PROC NEAR
MOV AH,09 ;
LEA DX,NAMEFLD
INT 21H
CMP ROW,20 ; ?
JAE G30 ; INC ROW ; -
JMP G90 G30:
MOV AX,0601H
IBM PC. . 113

CALL Q10SCR ;
CALL Q20CURS ; G90: RET G10DISP ENDP ; () : ; --MOV BH,1EH ;
MOV CX,0000
MOV DX,184FH ;
INT 10H
RET Q1OSCR ENDP ; : ; ---------------- Q20CURS PROC NEAR
MOV AH,02
MOV BH,00
MOV DH,ROW
MOV DL,00
INT 10H
RET Q20CURS ENDP ; : ; --------------------------------- X
MOV AH,09 ;DX
INT 21H ;
RET X10ERR ENDP
CODESG ENDS
END BEGIN

page 60,132 TITLE RANREAD (COM) , ; FCBCREAT CODESG SEGMENT


ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H BEGIN: JMP MAIN ;---------------------------------------------------FCBREC LABEL BYTE ;FCB FCBDRIV DB 04 ; D FCBNAME DB 'MAMEFILE' ;
DD ? ; (DOS)
DW ? ; (DOS)
DT ? ; (DOS)
IBM PC. . 114

DB 00 ; FCBRNRC DD 000000000 ;
RECLEN EQU 32 ; RECDPAR LABEL BYTE ; : MAXLEN DB 3 ; ACTLEN DB ?
NAMEFLD DB RECLEN DUP(' '),13,10,'$' ;DTA
OPENMSG DB '*** Open error ***',13,10,'$' READMSG DB '*** Read error ***',13,10
,'$' COL DB 00 PROMPT DB 'Record number? $' ROW DB 00 ENDCDE DB 00 ;--------------------------------------------------- MAIN PROC NEAR
CALL Q10CLR ;
CALL Q20CURS ;
CALL C10OPEN ; ,
; DTA
CMP ENDCDE,00 ; ?
JZ A20LOOP ; - ,
RET ; - A20LOOP:
CALL D10RECN ;
CMP ACTLEN,00 ; ?
JE A40 ; -
CALL F10READ ; ( )
CMP ENDCDE,00 ; ?
JNZ A30 ; -
CALL G10DISP ; A30:
JMP A20LOOP A40: RET ; MAIN ENDP ; :
MOV AH,0FH ;
LEA DX,FCBREC
INT 21H
CMP AL,00 ; ?

JNZ
MOV
MOV
LEA
INT
RET
LEA

C20 ; -
FCBRCSZ,RECLEN ; (EQU)
AH,1AH
DX,NAMEFLD ; DTA
21H
C20:
DX,OPENMSG

IBM PC. . 115

CALL X10ERR
RET C10OPEN ENDP ; : ; ------------------------------ D10RECN
MOV AH,09H ;
LEA DX,PROMPT
INT 21H
MOV AH,0AH ;
LEA DX,RECDPAR
INT 21H
CMP ACTLEN,01 ; (0,1,2)
JB D40 ; 0,
JA D20
SUB AH,AH ; 1
MOV AL,RECDNO
JMP D30 D20:
MOV AH,RECDNO ; 2
MOV AL,RECDNO+1 D30:
AND AX,0F0FH ; ASCII
AAD
MOV WORD PTR FCBRNRC,AX D40:
MOV COL,20
CALL Q20CURS ;
RET D10RECN ENDP ; : ; --------------------- F10READ PROC NEAR
MOV ENDCDE,00 ;
MOV AH,21H ;
LEA DX,FCBREC
INT 21H
CMP AL,00 ; ?
JZ F20 ; -
LEA DX,READMSG ; -
CALL X10ERR ; F20: RET F10READ ENDP ; : ; ---------MOV AH,09 ;
LEA DX,NAMEFLD
INC 21H
INC ROW
MOV COL,00
RET G10DISP ENDP
IBM PC. . 116
; : ; ------------- Q10CLR PROC NEAR
MOV AX,0600H ;
MOV BH,41H ; (07 /)
MOV CX,0000
MOV DX,184FH
INT 10H
RET Q10CLR ENDP ; : ; ---------------- Q20CURS PROC NEAR
MOV AH,02 ;

MOV BH,00 ;
MOV DH,ROW
MOV DL,COL
INT 10H
RET Q20CURS ENDP ; : ; --------------------------------- X
MOV AH,09 ;DX
INT 21H ;
INC ROW
MOV ENDCDE,01
RET X10ERR ENDP
CODESG ENDS
END BEGIN

IBM PC. . 117

TITLE RANBLOK (COM) CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H BEGIN: JMP MAIN ;--------------------------------------------------- F
CBREC LABEL BYTE ;FCB FCBDRIV DB 04 ; D FCBNAME DB 'NAMEFILE' ;
DW ? ; DOS
DT ? ; DOS
DB 00 ; FCBRNRC DD 00000000 ;
DSKRECS DB 1024 DUP(?),'$' ;DTA
ENDCODE DB 00 NORECS DW 25 ; OPENMSG DB '*** Open error ***',13,10,'$' READMSG
n error ***',13,10,'$' ROWCTR DB 00 ; ------------------------------------------------- MAIN PROC NEAR
CALL Q10CLR ;
CALL Q20CURS ;
CALL E10OPEN ; ,
; DTA
CMP ENDCODE,00 ; ?
JNZ A30 ; -
CALL F10READ ;
CALL G10DISP ; A30: RET ; MAIN ENDP ;
MOV AH,0FH ;
LEA DX,FCBREC

INT 21H
CMP AL,00 ; ?
JNZ A30 ; -
MOV
MOV
LEA
INT
RET

FCBRCSZ,0020H ;
AH,1AH
DX,DSKRECS ; DTA
21H
E20:

IBM PC. . 118

LEA DX,OPENMSG ;
CALL X10ERR
RET E10OPEN ENDP ; : ; ----------- F10READ PROC NEAR
MOV AH,27H ;
MOV CX,NORECS ;
LEA DX,FCBREC
INT 21H
MOV ENDCODE,AL ;
RET F10READ ENDP ; : ; ------------------- G10DISP PROC NEAR
MOV AH,09 ;
LEA DX,DSKRECS
INT 21H
RET G10DISP ENDP ; : Q10CLR PROC NEAR
MOV AX,0600H ;
MOV BH,41H ; (07 /)
MOV CX,0000
MOV DX,184FH
INT 10H
RET Q10CLR ENDP ; : ; ----------------------------- Q20CURS PR
MOV AH,02 ;
MOV BH,00
MOV DH,ROWCTR
MOV DL,00
INT 10H
INC ROWCTR
RET Q20CURS ENDP ; : ; ------------------------------MOV AH,09 ;DX
INT 21H ;
MOV ENDCODE,01
RET X10ERR ENDP
CODESG ENDS
END BEGIN
IBM PC. . 119

TITLE SELDEL (COM) ; ; ;


ASSUME CS:CODESG,DS:CODESG,SS:CODESG
ORG 100H BEGIN JMP MAIN ; -------------------------------------------------------- TAB EQU 09 LF EQU 10 CR EQU 13 CRLF DB CR,LF,'$' DELMSG DB TAB,'Erase','$'
ENDMSG DB CR,LF,'No more directory entries',CR,LF,'$' ERRMSG DB 'Write protected
dis ','$' PROMPT DB 'y = Erase, N = Keep, Ret = Exit',CR,LF,'$' ; -------------------------------------------------------- MAIN PROC NEAR ;
MOV AH,11H ;
CALL D10DISK

CMP AL,0FFH ; ,
JE A90 ;
LEA DX,PROMPT ;
CALL B10DISP A20:
LEA DX,DELMSG ;
CALL B10DISP ;
MOV CX,11 ;11
MOV SI,81H ; A30:
MOV DL,[SI] ;
CALL C10CHAR ;
INC SI ;
LOOP A30
MOV DL,'?'
CALL C10CHAR
MOV AH,01 ;
INT 21H ;
CMP AL,ODH ; Return?
JE A90 ; -
OR AL,00100000B ;
;
CMP AL,'y' ; ?
JNE A50 ; - ,
MOV AH,13H ; -
MOV DX,80H
INT 21H
CMP AL,0 ; ?
JZ A50 ; -
LEA DX,ERRMSG ; -
CALL B10DISP ;
JMP A90
IBM PC. . 120

A50:
LEA DX,CRLF ;
CALL B10DISP
MOV AH,12H
CALL B10DISK ;
CMP AL,0FFH ; ?
JNE A20 ; - A90:
RET ; DOS MAIN ENDP ; ; ; -------------------- B10DISP PROC NEAR
MOV AH,09 ;
INT 21H
RET B10DISP ENDP ; ; ; --------------------- C10CHAR PROC NEAR ; DL
MOV AH,02
INT 21H
RET C10CHAR ENDP ; : ; ----------------------- D10DISK PROC NEAR
MOV DX,5CH ; FCB
INT 21H
CMP AL,0FFH ; ?
JNE D90
PUSH AX ; AL
LEA DX,ENDMSG
CALL B10DISP
POP AX ; AL D90: RET D10DISK ENDP
CODESG ENDS
END BEGIN

IBM PC. . 121

page 60,132 TTILE HANCREAT (EXE) ; --------------------------------SEGMENT PARA STACK 'Stac '
DW 80 DUP(?) STACKSG ENDS ; --------------------------------------------------- DATASG SEGMENT PARA 'Data' NAMEPAR LABEL BYTE ; : MAXLEN DB 30 ; NAMELEN DB
DUP(' '), 0DH, 0AH ; ,
; CR/LF ERRCDE DB 00 HANDLE DW ? PATHNAM DB 'D:\NAMEFILE.DAT',0 PROMPT DB 'Name?
DB 01 OPNMSG DB '*** Open error ***', 0DH, 0AH WRTMSG DB '*** Write error ***',
0DH, 0AH DATASG ENDS ; ------------------------------------------------------ C
ODESG 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
MOV AX,0600H
CALL Q10SCR ;
CALL Q20CURS ;
CALL C10CREA ; ,
; DTA
CMP ERRCDE,00 ; ?
JZ A20LOOP ; - ,
RET ; - DOS A20LOOP:
CALL D10PROC
CMP NAMELEN,00 ; ?
JNE A20LOOP ; - ,
CALL G10CLSE ; -
RET ; DOS BEGIN ENDP ; : ; ---------------------- C10CREA P
MOV AH,3CH ;
MOV CX,00 ;
LEA CX,PATHNAM
IBM PC. . 122
INT 21H
JC C20 ; ?
MOV HANDLE,AX ; - ,
RET C20: ; LEA DX,OPNMSG ;
CALL X10ERR ;

RET
MOV
MOV
MOV
LEA
INT

C10CREA ENDP ; : ; ---------------- D10PROC PROC NEAR


AH,40H ;
BX,01 ; (Handle)
CX,06 ;
DX,PROMPT ;
21H

MOV AH,0AH ;
LEA DX,NAMEPAR ;
INT 21H
CMP NAMELEN,00 ; ?
JNE D20 ; -
RET ; - D20:
MOV AL,20H ;
SUB CH,CH
MOV CL,NAMELEN ;
LEA DI,NAMEREC ;
ADD DI,CX ; +
NEG CX ;
ADD CX,30 ;
REP STOSB ; D90:
CALL F10WRIT ;
CALL E10SCRL ;
RET D10PROC ENDP ; : ; ------------------- E10SCRL PROC NEAR
CMP ROW,18 ;
JAE E10 ; - ,
INC ROW ; -
JMP E10 E10:
MOV AX,0601H ;
CALL Q10SCR E90: CALL Q20CURS ;
RET E10SCRL ENDP ; : ; ------------- IBM PC. . 123

F10WRIT PROC NEAR


MOV AH,40H ;
MOV BX,HANDLE
MOV CX,32 ;30 + 2 CR/LF
LEA DX,NAMEREC
INT 21H
JNC F20 ; ?
LEA DX,WRTMSG ; CALL X10ERR ;
MOV NAMELEN,00 F20:
RET F10WRIT ENDP ; : ; ---------------------- G10CLSE PROC NEAR
MOV NAMEREC,1AH ; (EOF)
CALL F10WRIT
MOV AH,3EH ;
MOV BX,HANDLE
INT 21H
RET G10CLSE ENDP ; () : ; --------------------------- Q10SCR PROC N
MOV BH,1EH ; -
MOV CX,0000
MOV DX,184FH
INT 10H ;
RET Q10SCR ENDP ; : ; ---------------- Q20CURS PROC NEAR
MOV AH,02
MOV BH,00
MOV DH,ROW ;

MOV
INT
RET
MOV
MOV
MOV
INT
MOV
RET

DL,00
10H
Q20CURS ENDP ; : ; ------------------------ X10ERR PROC NEAR ;D
AH,40H ;
BX,01
CX,21 ;
21H
ERRCDE,01 ;
X10ERR ENDP

IBM PC. . 124


CODESG ENDS
END BEGIN

IBM PC. . 125

page 60,132 TITLE HANREAD (EXE) , HANCREAT ; --------------------TACKSG SEGMENT PARA STACK 'Stac '
DW 80 DUP(?) STACKSG ENDS ; --------------------------------------------------- DATASG SEGMENT PARA 'Data' ENDCDE DB 00 HANDLE DW ? IOAREA DB 32 DUP(' ') PATH
NAM DB 'D:\NAMEFILE.SRT',0 OPENMSG DB '*** Open error ***', 0DH, 0AH READMSG DB
'*** Read error ***', 0DH, 0AH 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 AX
MOV AX,DATASG
MOV DS,AX
MOV ES,AX
MOV AX,0600H
CALL Q10SCR ;
CALL Q20CURS ;
CALL E100PEN ; , ; ; DTA
CMP ENDCDE,00 ; ?
JNZ A90 ; - A20LOOP:
CALL F10READ ;
CMP ENDCDE,00 ; ?
JNZ A90 ; - ,
CALL G10DISP ; - ,
JMP A20LOOP ; A90: RET BEGIN ENDP ; : ; ------------- E100PEN PRO
MOV AH,3DH ;
MOV CX,00 ;
LEA DX,PATHNAM
INT 21H
JC E20 ; ?
MOV HANDLE,AX ; -
RET ; E20:
IBM PC. . 126
MOV ENDCDE,01 ; -
LEA DX,OPENMSG ;
CALL X10ERR
RET E100PEN ENDP ; : ; --------------------- F10READ PROC NEAR
MOV AX,3FH ;
MOV BX,HANDLE
MOV CX,32 ;30 , 2 CR/LF
LEA DX,IOAREA
INT 21H
JC F20 ; ?

CMP AX,00 ; ?
JE F30
CMP IOAREA,1AH ; (EOF)?
JE F30 ; -
RET F20:
LEA DX,READMSG ; -
CALL X10ERR ; F30:
MOV ENDCDE,01 ; F90: RET F10READ ENDP ; : ; -------------MOV AH,40H ;
MOV BX,01 ;
MOV CX,32 ;
LEA DX,IOAREA
INT 21H
CMP ROW,20 ; ?
JEA G90 ; -
INC ROW
RET G90:
MOV AX,0601H
CALL Q10SCR ; ()
CALL Q20CURS ;
RET G10DISP ENDP ; () : ; --------------------------- Q10SCR PROC N
MOV BH,1EH ;
MOV CX,0000
MOV DXX,184FH ;
INT 10H
RET Q10SCR ENDP
IBM PC. . 127
; : ; ---------------- Q20CURS PROC NEAR
MOV AH,02 ;
MOV BH,00 ;
MOV DH,ROW ;
MOV DL,00 ;
INT 10H
RET Q20CURS ENDP ; : ; ------------------------ X10ERR PROC NEAR
MOV AH,40H ; DX -
MOV BX,01 ;
MOV CX,20 ;
INT 21H
RET X10ERR ENDP
CODESG ENDS
END BEGIN

IBM PC. . 128

page 60,132 TITLE ASCREAD (COM) ASCII CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H BEGIN: JMP MAIN ; ------------------------------------------------ SEC
TOR DB 512 DUP(' ') ; DISAREA DB 120 DUP(' ') ; ENDCDE DW
HNAM DB 'D:\HANREAD.ASM', 0 ROW DB 00 ; ----------------------------------------------- MAIN PROC NEAR ;
MOV AX,0600H
CALL Q10SCR ;
CALL Q20CURS ;
CALL E10OPEN ; ,
; DTA
CMP ENDCDE,00 ; ?
JNE A90 ; - , A20LOOP: ; -
CALL R10READ ;
CMP ENDCDE,00 ; , ?
JE A90 ; -
CALL G10XPER ; A90: RET ; MAIN ENDP ;
MOV AH,3DH ;
MOV AL,00 ;
LEA DX,PATHNAM
INT 21H
JNC E20 ; CF
CALL X10ERR ; ,
RET E20:
MOV HANDLE,AX ;
RET E10OPEN ENDP ; : ; ------------------------------- G10XP
CLD ; -
LEA SI,SECTOR G20:
LEA DI,DISAREA G30:
IBM PC. . 129
LEA DX,SECTOR+512
CMP SI,DX ; ?
JNE G40 ; - ,
CALL R10READ ; -
CMP ENDCDE,00 ; ?

JE G80 ; -
LEA SI,SECTOR G40:
LEA DX,DISAREA+80
CMP DI,DX ; DISAREA?
JB G50 ; - ,
MOV [DI],0D0AH ; - CR/LF
CALL H10DISP ;
LEA DI,DISAREA G50:
LODSB ; [SI] AL
; SI
STOSB ; AL [DI]
; DI
CMP AL,1AH ; ?
JE G80 ; -
CMP AL,0AH ; ?
JNE G30 ; - ,
CALL H10DISP ; -
JMP G20 G80:
CALL H10DISP ; G90: RET G10XPER ENDP ; : ; ---MOV AH,40H ;
MOV BX,01 ; (Handle)
LEA CX,DISAREA ;
NEG CX ;
ADD CX,DI ;
LEA DX,DISAREA
INT 21H
CMP ROW,22 ; ?
JAE H20 ; -
INC ROW
JMP H90 H20:
MOV AX,0601H ; ()
CALL Q10SCR
CALL Q20CURS H90: RET H10DISP ENDP ; : ; ---------------------- R10RE
MOV AH,3FH ;
IBM PC. . 130
MOV
MOV
LEA
INT
MOV
RET
MOV
MOV
MOV
INT
RET
MOV
MOV
MOV
MOV
INT
RET
MOV
MOV
MOV
LEA

BX,HANDLE ;
CX,512 ;
DX,SECTOR ;
21H
ENDCDE,AX
R10READ ENDP ; () : ; --------------------------- Q10SCR PROC N
BH,1EH ;
CX,0000 ;
DX,184FH
10H
Q10SCR ENDP ; : ; ---------------- Q20CURS PROC NEAR
AH,02 ;
BH,00 ;
DH,ROW
DL,00
10H
Q20CURS ENDP ; : ; --------------------------------- X
AH,40H ;
BX,01 ;
CX,18 ;
DX,OPENMSG

INT 21H
MOV ENDCDE,O1 ;
RET X10ERR ENDP
CODESG ENDS
END BEGIN

IBM PC. . 131

TITLE GETPATH (COM) CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,ES:CODESG
ORG 100H BEGIN: JMP SHORT MAIN ; ---------------------------------------------PATHNAM DB 65 DUP(' ') ; ; ---------------------------------------MOV AH,19H ;
INT 21H
ADD AL,41H ; .
MOV DL,AL ; : 0=A, 1=B ...
CAL B10DISP ; ,
MOV DL,':'
CAL B10DISP ; ,
MOV DL,'\'
CAL B10DISP ;
MOV AH,47H ;
MOV DL,00
LEA SI,PATHNAM
INT 21H A10LOOP:
CMP BYTE PTR [SI],0 ;
JE A20 ; -
MOV AL,[SI] ;
MOV DL,AL ;
CALL B10DISP ;
INC SI
JMP A10LOOP A20: RET ; DOS MAIN ENDP
B10DISP PROC NEAR
MOV AH,02 ; DL -
INT 21H ;
RET B10DISP ENDP
CODESG ENDS
END BEGIN

IBM PC. . 132

TITLE BIOREAD (COM) BIOS CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H BEGIN JMP MAIN ; ------------------------------------------------------- RECDIN DB 512 DUP(' ') ; ENDCDE DB 00 CURADR DW 0304H ; (/
0 ; -------------------------------------------------------- MAIN PROC NEAR
MOV AX,0600H ; A20LOOP:
CALL Q10SCR ;
CALL Q20CURS ;
CALL C10ADDR ;
MOV CX,CURADR
MOV DX,ENDADR
CMP CX,DX ; ?
JE A90 ; -
CALL F10READ ;
CMP ENDCDE,00 ; ?
JNZ A90 ; -
CALL G10DISP ;
JMP A20LOOP ; A90 RET ; MAIN ENDP ;
MOV CX,CURADR ; /
CMP CL,10 ; ?
JNE C90 ; -
CMP SIDE,00 ;, = 0
JE C20
INC CH ; C20:
XOR SIDE,01 ;
MOV CL,01 ; = 1
MOV CURADR,CX C90: RET C10ADDR ENDP ; : ; ----------------------- F1
MOV AL,01 ;
MOV AH,02 ;
LEA BX,RECDIN ;
MOV CX,CURADR ;/
IBM PC. . 133
MOV DH,SIDE ;
MOV DL,01 ; B
INT 13H ;
CMP AH,00 ; ?
JZ F90 ; -
MOV ENDCDE,01 ; :
CALL X10ERR ; F90:
INC CURADR ;
RET F10READ ENDP ; : ; --------------------- G10DISP PROC NEAR
MOV AH,40H ;
MOV BX,01 ;
MOV CX,512 ;
LEA DX,RECDIN
INT 21H
RET G10DISP ENDP ; : ; ------------- Q10SCR PROC NEAR

MOV
MOV
MOV
MOV
INT
RET
MOV
MOV
MOV
INT
RET
MOV
MOV
MOV
LEA
INT
RET
END

AX,0600H ;
BH,1EH ;
CX,0000 ;
DX,184FH
10H
Q10SCR ENDP ; : ; ---------------- Q20CURS PROC NEAR
AH,02 ;
BH,00 ;
DX,0000
10H
Q20CURS ENDP ; : ; --------------------------------- X
AH,40H ;
BH,01 ;
CX,18 ;
DX,READMSG
21H
X10ERR ENDP CODESG ENDS
BEGIN

IBM PC. . 134

TITLE PRTNAME (COM) CODESG SEGMENT PARA PUBLIC 'CODE'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H BEGIN: JMP SHORT MAIN ; --------------------------------------------------- NAMEPAR LABEL BYTE ; MAXNLEN DB 20 ; NAMELEN
; : HEADG DB 'List of Employee Names Page ' PAGECTR DB '01',0AH,0AH FFEED DB
B 'Name? ' ; ---------------------------------------------------- MAIN PROC NEAR
CALL Q10CLR ;
CALL M10PAGE ; A2LOOP:
MOV DX,0000 ; 00,00
CALL Q20CURS
CALL D10INPT ;
CALL Q10CLR
CMP NAMELEN,00 ; ?
JE A30 ; - ,
CALL E10PRNT ; -
;
JMP A20LOOP A30:
MOV CX,01 ; :
LEA DX,FFEED ;
CALL P10OUT ; ,
RET ; DOS MAIN ENDP ; : ; ---------------------- D10INPT PR
MOV AH,40H ;
MOV BX,01 ;
MOV CX,05 ; 5
LEA DX,PROMPT
INT 21H ; DOS
MOV AH,0AH ;
LEA DX,NAMEPAR
INT 21H ; DOS
RET D10INPT ENDP ; : ; --------------------- IBM PC. . 135
E10PRNT PROC NEAR
CMP LINECTR,60 ; ?

JB E20 ; -
CALL M10PAGE ; - E20: MOV CH,00
MOV CL,NAMELEN ;
LEA DX,NAMEFLD ;
CALL P10OUT ;
MOV CX,01 ;
LEA DX,LFEED ;
CALL P10OUT
INC LINECTR ; E10PRNT ENDP ; : ; ------CMP WORD PTR PAGECTR,3130H ; ?
JE M30 ; -
MOV CX,01 ;
LEA DX,FFEED ; -CALL P10OUT ; ,
MOV LINECTR,03 ; M30:
MOV CX,36 ;
LEA DX,HEADG ; M40:
CALL P10OUT
INC PAGECTR+1 ;
CMP PAGECTR+1,3AH ; = .xx3A?
JNE M50 ; - ,
MOV PAGECTR+1,30H ; - ASCII
INC PAGECTR M50: RET M10PAGE ENDP ; : ; ------------------ P10OUT PROC NE
MOV AH,40H ;
MOV BX,04 ;
INT 21H ; DOS
RET P10OUT ENDP ; : ; ------------- Q10CLR PROC NEAR
MOV AX,0600H ;
MOV BH,60H ; (07 /)
MOV CX,0000 ; 00,00
MOV DX,184FH ; 24,79
INT 10H ; BIOS
RET Q10CLR ENDP ; (/):
IBM PC. . 136
; --------------------------------- Q20CURS PROC NEAR ;DX
MOV AH,02 ;
MOV BH,00 ; 0
INT 10H ; BIOS
RET Q20CURS ENDP CODESG ENDS
END BEGIN

IBM PC. . 137

TITLE PRINASK (COM) CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H BEGIN JMP MAIN ; ------------------------------------------------------- PATHPAR LABEL BYTE ; MAXLEN DB 32 ; NAMELEN DB ? ;
; COUNT DW 00 ENDCDE DW 00 FFEED DB 0CH HANDLE DW 0 OPENMSG DB '*** Open error
DB 'Name of file? ' ; --------------------------------------------------------MAIN PROC NEAR ;
CALL Q10SCR ;
CALL Q20CURS ; A10LOOP:
MOV ENDCDE,00 ;
CALL C10PRMP ;
CMP NAMELEN,00 ; ?
JE A90 ; -
CALL E10OPEN ; ,
; DTA
CMP ENDCDE,00 ; ?
JNE A80 ; -
CALL R10READ ;
CMP ENDCDE,00 ; , ?
JE A80 ; -
CALL G10XPER ; A80:
JMP A10LOOP A90: RET MAIN ENDP ; : ; ----------------------MOV AH,40H ;
MOV BX,01
MOV CX,13
LEA DX,PROMPT
INT 21H
MOV AH,0AH ;

LEA
INT
MOV
MOV

DX,PATHPAR
21H
BL,NAMELEN ;
BH,00 ; 00

IBM PC. . 138

MOV FILENAM[BX],0 ; C90 RET C10PRMP ENDP ; : ; --------MOV AH,3DH ;


MOV AL,00 ;
LEA DX,FILENAM
INT 21H
JNC E20 ; CF
CALL X10ERR ; ,
RET E20:
MOV HANDLE,AX ;
MOV AX,2020H
MOV CX,256 ;
REP STOSW ;
RET E100PEN ENDP ; : ; ------------------------- G10XFER PROC NEAR
CLD ; -
LEA SI,SECTOR ; G20:
LEA DI,DISAREA
MOV COUNT,00 G30:
LEA DX,SECTOR+512
CMP SI,DX ; ?
JNE G40
CALL R10READ ; -
CMP ENDCDE,00 ; ?
JE G80 ; -
LEA SI,SECTOR G40:
MOV BX,COUNT
CMP BX,80 ; ?
JB G50 ; -
MOV [DI+BX],0D0AH ; - CR/LF
CALL P10PRNT
LEA DI,DISAREA ; G50:
LODSB ; [SI] AL,
; SI
MOV BX,COUNT
MOV [DI+BX],AL ;
INC BX
CMP AL,1AH ; ?
JE G80 ; -
CMP AL,0AH ; ?
JNE G60 ; - ,
IBM PC. . 139
CALL P10PRNT ; -
JMP G20 G60:
CMP AL,09H ; ?
JNE G70
DEC BX ; - BX:
MOV BYTE PTR [DI+BX],20H ; TAB
AND BX,0FFF8H ; 8

ADD BX,08 ; 8 G70:


MOV COUNT,BX
JMP G30 G80: MOV BX,COUNT ;
MOV BYTE PTR [DI+BX],0CH ;
CALL P10PRNT ; G90: RET G10XFER ENDP ; : ; ----MOV AH,40H ;
MOV BX,04
MOV CX,COUNT ;
INC CX
LEA DX,DISAREA
INT 21H
MOV AX,2020H ;
MOV CX,60
LEA DI,DISAREA
REP STOSW
RET P10PRNT ENDP ; : ; -------------------------- R10READ PROC NE
MOV AH,3FH ;
MOV BX,HANDLE ;
MOV CX,512 ;
MOV DX,SECTOR ;
INT 21H
MOV ENDCDE,AX
RET R10READ ENDP ; : ; --------------- Q10SCR PROC NEAR
MOV AX,0600H
MOV BH,1EH ;
MOV CX,0000 ; ()
MOV DX,184FH
INT 10H
RET Q10SCR ENDP
IBM PC. . 140
; : ; ----------------------------- Q20CURS PROC NEAR
MOV AH,02 ;
MOV BH,00 ;
MOV DX,00
INT 10H
RET Q20CURS ENDP ; : ; ------------------------ X10ERR PROC NEAR
MOV AH,40H ;
MOV BX,01 ;
MOV CX,18 ;
LEA DX,OPENMSG ;
INT 1H
MOV NDCDE,01 ;
RET X10ERR ENDP CODESG ENDS
END BEGIN

IBM PC. . 141

TITLE MACRO1 (EXE)


; -------------------------------------------INIT1 MACRO
ASSUME CS:CSEG,DS:DSEG,SS:STACK,ES:DSEG
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
MOV ES,AX
ENDM ;
; ------------------------------------------- 0000 STACK SEGMENT PARA STACK 'St
ac ' 0000 20 [ ???? ] DW 32 DUP(?) 0040 STACK ENDS
; ------------------------------------------- 0000 DSEG SEGMENT PARA 'Data' 000
0 54 65 73 74 20 6F MESSGE DB 'Test of macro-instruction', 13
66 20 6D 61 63 72
6F 2D 69 6E 73 74
72 65 73 74 69 6F
6E 0D 001A DSEG ENDS
; ------------------------------------------- 0000 CSEG SEGMENT PARA 'Code' 000
0 BEGIN PROC FAR
INIT1 ; 0000 1E + PUSH DS 0001 2B C0 + SUB AX,AX 0003 50 + PUSH AX 0004 B8 --- R
SEG 0007 8E D8 + MOV DS,AX 0009 8E C0 + MOV ES,AX 000B B4 40 MOV AH,40H ; 000D
BX,01 ; 0010 B9 001A MOV CX,26 ; 0013 8D 16 0000 R LEA DX,MESSGE ; 0017 C
001A BEGIN ENDP 001A CSEG ENDS
END BEGIN
Macros:
N a m e Length INIT1. . . . . . . . . . . . . . . . 0004
Segments and Groups:
N a m e Size Align Combine Class CSEG . . . . . . . . . . . . . . . . 001A PARA
NONE 'CODE' DSEG . . . . . . . . . . . . . . . . 001A PARA NONE 'DATA' STACK. .
. . . . . . . . . . . . . . 0040 PARA STACK 'STACK'
IBM PC. . 142

Symbols:
N a m e Type Value Attr BEGIN. . . . . . . . . . . . . . . . F PROC 0000 CSEG L
ength=001A MESSAGE. . . . . . . . . . . . . . . L BYTE 0000 DSEG

IBM PC. . 143

TITLE MACRO2 (EXE)


; ------------------------------------------------

INIT2 MACRO CSNAME,DSNAME,SSNAME


ASSUME CS:CSNAME,DS:DSNAME,SS:SSNAME,ES:DSNAME
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DSNAME
MOV DS,AX
MOV ES,AX
ENDM ;
; ----------------------------------------------- 0000 STACK SEGMENT PARA STACK
'Stac ' 0000 20 [ ???? ] DW 32 DUP(?) 0040 STACK ENDS
; ----------------------------------------------- 0000 DSEG SEGMENT PARA 'Data'
0000 54 65 73 74 20 6F MESSAGE DB 'Test of macro', '$'
66 20 6D 61 63 72
6F 24 000E DSEG ENDS
; ----------------------------------------------- 0000 CSEG SEGMENT PARA 'Code'
0000 BEGIN PROC FAR
INIT2 CSEG,DSEG,STACK 0000 1E + PUSH DS 0001 2B C0 + SUB AX,AX 0003 50 + PUSH A
X 0004 B8 --- R + MOV AX,DSEG 0007 8E D8 + MOV DS,AX 0009 8E C0 + MOV ES,AX 000B
B4 09 MOV AH,09 ; 000D 8D 16 0000 R LEA DX,MESSGE ; 0011 CD 21 INT 21
0014 CSEG ENDS
END BEGIN

IBM PC. . 144

TITLE MACRO3 (EXE) .LALL .SALL


; -----------------------------------------------INIT2 MACRO CSNAME,DSNAME,SSNAME
ASSUME CS:CSNAME,DS:DSNAME,SS:SSNAME,ES:DSNAME
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DSNAME
MOV DS,AX
MOV ES,AX
ENDM
; -----------------------------------------------PROMPT MACRO MESSAGE
;
;; DOS
MOV AH,09 ;
LEA DX,MESSAGE
INT 21H

ENDM
; ----------------------------------------------- 0000 STACK SEGMENT PARA STACK
'Stac ' 0000 20 [ ???? ] DW 32 DUP (?) 0040 STACK ENDS
; ----------------------------------------------- 0000 DATA SEGMENT PARA 'Data'
0000 43 75 73 74 6F 6D MESSG1 DB 'Customer name?', '$'
65 72 20 6E 61 6D
65 3F 24 000F 43 75 73 74 6F 6D MESSG2 DB 'Customer address?', '$'
65 72 20 61 64 64
72 65 73 73 3F 24 0021 DATA ENDS
; ----------------------------------------------- 0000 CSEG SEGMENT PARA 'Code'
0000 BEGIN PROC FAR
.SALL
INIT2 CSEG,DATA,STACK
PROMPT MESSG1
.LALL
PROMPT MESSG2
+ ; 0013 B4 09 + MOV AH,09 ; 001
NDS
END BEGIN

IBM PC. . 145

TITLE MACRO4 (COM) LOCAL


; ------------------------------------------------DIVIDE MACRO DIVIDEND,DIVISOR,QUOTIENT
LOCAL COMP
LOCAL OUT
; AX=, BX=, CX=
MOV AX,DIVIDEND ;
MOV BX,DIVISOR ;
SUB CX,CX ;
COMP:
CMP AX,BX ; < ?
JB OUT ; -
SUB AX,BX ; -
INC CX ; + 1
JMP COMP
OUT:
MOV QUOTIENT,CX ;
ENDM
; ----------------------------------------------- 0000 CSEG SEGMENT PARA 'Code'
ASSUME CS:CSEG,DS:CSEG,SS:CSEG,ES:CSEG 0100 ORG 100H 0100 EB 06 BEGIN: JMP SHOR
T MAIN
; ----------------------------------------------- 0102 0096 DIVDND DW 150 ; 0104 001B
DIVSOR DW 27 ; 0106 ???? QUOTNT DW ? ;
; ----------------------------------------------- 0108 MAIN PROC NEAR
.LALL
DIVIDE DIVDND,DIVSOR,QUOTNT
+ ; AX=, BX=, CX= 0108 A1 0102 R + MOV AX,DIVDND ; 01
X ; < ? 0113 72 05 + JB ??0001 ; - 0115 2B C3 + SUB AX,BX ;
0001: 011A 89 0E 0106 R + MOV QUOTNT,CX ; 011E C3 RET 011F MAIN ENDP 011F C
END BEGIN

IBM PC. . 146

TITLE MACRO5 (EXE) INCLUDE


EDIF
; ----------------------------------------------- 0000 STACK SEGMENT PARA STACK
'Stac ' 0000 20 [????] DW 32 DUP(?) 0040 STACK ENDS
; ----------------------------------------------- 0000 DATA SEGMENT PARA 'Data'
0000 54 65 73 74 20 6F MESSGE DB 'Test of macro','$'
66 20 6D 61 63 72
6F 24 000E DATA ENDS
; ----------------------------------------------- 0000 CSEG SEGMENT PARA 'Code'
0000 BEGIN PROC FAR
INIT CSEG,DATA,STACK 0000 1E + PUSH DS 0001 3B C0 + SUB AX,AX 0003 50 + PUSH AX
0004 B8 --- R + MOV AX,DATA 0007 8E D8 + MOV DS,AX 0009 8E C0 + MOV ES,AX
PROMPT MESSGE 000B B4 09 + MOV AH,09 ; 000D 8D 16 0000 R + LEA DX,MESSGE 0011
21H 0013 CB RET 0014 BEGIN ENDP 0014 CSEG ENDS
END BEGIN

IBM PC. . 147

TITLE MACRO6 (COM) IF IFNDEF


; -----------------------------------------------DIVIDE MACRO DIVIDEND,DIVISOR,QUOTIENT
LOCAL COMP
LOCAL OUT
CNTR = 0
; AX-, BX-, CX-

IFNDEF DIVIDEND
;
CNTR = CNTR +1
ENDIF
IFNDEF DIVISOR
;
CNTR = CNTR +1
ENDIF
IFNDEF QUOTIENT
;
CNTR = CNTR +1
ENDIF
IF CNTR
;
EXITM
ENDIF
MOV AX,DIVIDEND ;
MOV BX,DIVISOR ;
SUB CX,CX ;
COMP:
CMP AX,BX ; < ?
JB OUT ; -
SUB AX,BX ; -
INC CX ; + 1
JMP COMP
OUT:
MOV QUOTIENT,CX ;
ENDM
; ----------------------------------------------- 0000 CSEG SEGMENT PARA 'Code'
ASSUME CS:CSEG,DS:CSEG,SS:CSEG,ES:CSEG 0100 ORG 100H 0100 EB 06 BEGIN: JMP SHOR
T MAIN
; ----------------------------------------------- 0102 0096 DIVDND DW 150 0104
001B DIVSOR DW 27 0106 ???? QUOTNT DW ?
; ----------------------------------------------- 0108 MAIN PROC NEAR
.LALL
DIVIDE DIVDND,DIVSOR,QUOTNT = 0000 + CNTR = 0
+ ; AX-, BX-, CX-
+ ENDIF
+ ENDIF
IBM PC. . 148

+ ENDIF
+ ENDIF 0108 A1 0102 R + MOV AX,DIVDND ; 0108 8B 1E 0104 R + MOV BX,DIVSOR
C3 + CMP AX,BX ; < ? 0113 72 05 + JB ??0001 ; - 0115 2B C3 + SUB A
0000 011A + ??0001: 011A 89 0E 0106 R + MOV QUOTNT,CX ;
DIVIDE DIDND,DIVSOR,QUOT = 0000 + CNTR = 0
+ ; AX-, BX-, CX-
+ IFNDEF DIDND
+ ; = 0001 + CNTR = CNTR +1
+ ENDIF
+ ENDIF
+ IFNDEF QUOT
+ ; = 0002 + CNTR = CNTR +1
+ ENDIF
+ IF CNTR
+ ;
+ EXITM 011E C3 RET 011F MAIN ENDP 011F CSEG ENDS

END BEGIN

IBM PC. . 149

TITLE MACRO7 (COM) IFIDN


; -------------------------------------------MOVIF MACRO TAG
IFIDN <&TAG>,<B>
REP MOVSB
EXITM
ENDIF
IFIDN <&TAG>,<W>
REP MOVSW
ELSE
; B W,
; B
REP MOVSB
ENDIF
ENDM
; ------------------------------------------- 0000 CSIG SEGMENT PARA 'Code'
ASSUME CS:CSEG,DS:CSEG,SS:CSEG,ES:CSEG 0100 ORG 100H 0100 EB 00 BEGIN: JMP SHOR
T MAIN
; ... 0102 MAIN PROC NEAR
.LALL
MOVIF B
+ IFIDN <B>,<B> 0102 F3/A4 + REP MOVSB
+ EXITM
MOVIF W
+ ENDIF
+ IFIDN <W>, <W> 0104 F3/A5 + REP MOVSW
+ ENDIF
MOVIF
+ ENDIF
+ ELSE
+ ; B W,
+ ; B 0106 F3/A4 + REP MOVSB

+ ENDIF 0108 C3 RET 0109 MAIN ENDP 0109 CSEG ENDS


END BEGIN

IBM PC. . 150

+-----------+ +-----------+
| | | |
| | | |
+-----+-----+ +-----+-----+
| |
| |
+------------+------------+ +------+------+
| | | | |
| | | | | +--------+ +--------+ +--------+ +--------+ +--------+ | / 1 | | / 2 | | / 3
/ 1 | | / 2 | +---------+ +---------+ +---------+ +----+----+ +---------+
|
|
+--------+
| / 3 |
+---------+

IBM PC. . 151

+---------------------------------------+
| EXTRN SUBPROG:FAR |
| MAINPROG: . |
| . |
| CALL SUBPROG |
| . |
| . |
+---------------------------------------+
| PUBLIC SUBPROG |
| SUBPROG: . |
| . |
| . |
| RET |
+---------------------------------------+

IBM PC. . 152

page 60,132
TITLE CALLMULL1 (EXE)
EXTRN SUBMUL:FAR
;---------------------------------------------- 0000 STACKSG SEGMENT PARA STACK
'Stac ' 0000 40 [ ???? ] DW 64 DUP(?) 0080 STACKSG ENDS
;---------------------------------------------- 0000 DATASG SEGMENT PARA 'Data'
0000 0140 QTY DW 0140H 0002 2500 PRICE DW 2500H 0004 DATASG ENDS
;---------------------------------------------- 0000 CODESG SEGMENT PARA 'Code'
0000 BEGIN PROC FAR
ASSUME CS:CODESG,DS:DATASG,SS:STACKSG 0000 1E PUSH DS 0001 2B C0 SUB AX,AX 0003
50 PUSH AX 0004 B8 --- R MOV AX,DATASG 0007 8E D8 MOV DS,AX 0009 A1 0002 R MOV
AX,PRICE ; 000C 8B 1E 0000 R MOV BX,QTY ; 0010 9A 0000 --- E
END BEGIN
Segments and Groups:
N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 0016 PARA NONE
'CODE' DATASG . . . . . . . . . . . . 0004 PARA NONE 'DATA' STACKSG. . . . . . .
. . . . . 0080 PARA STACK 'STACK'
Symbols:
N a m e Type Value Attr BEGIN. . . . . . . . . . . . . F PROC 0000 CODESG Lengt
h=0016 PRICE. . . . . . . . . . . . . L WORD 0002 DATASG QTY. . . . . . . . . .
. . . . L WORD 0000 DATASG SUBMUL . . . . . . . . . . . . L FAR 0000 External

page 60,132
TITLE SUBMUL
;---------------------------------------------- 0000 CODESG SEGMENT PARA 'Code'
0000 SUBMUL PROC FAR
ASSUME CS:CODESG
PUBLIC SUBMUL 0000 F7 E3 MUL BX ;AX-, BX- 0002 CB RET ; DX:
IBM PC. . 153
0003 SUBMUL ENDP 0003 CODESG ENDS
END SUBMUL
Segments and groups:
N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 0003 PARA NONE
'CODE'
Symbols:
N a m e Type Value Attr SUBMUL . . . . . . . . . . . . F PROC 0000 CODESG Cloba
l Length=0003
LINK IBM Personal Computer Lin er Version 2.30 (C) Copyright IBM Corp 1981, 198
5 Object Modules: B:CALLMUL1+B:SUBMUL1 Run File: [B:CALLMUL1.EXE]: <return> L
ist File:[NUL.MAP]: CON Libraries [.LIB]: <return>
Start Stop Length Name Class
00000H 00015H 0016H CODESG CODE <--: 2

00020H 00022H
00030H 00033H
00040H 000BFH
Program entry

0003H
0004H
0080H
point

CODESG CODE <-


DATASG DATA
STACKSG STACK
at 0000:0000

IBM PC. . 154

page 60,132
TITLE CALLMUL2 (EXE)
EXTERN SUBMUL:FAR
;--------------------------------------------- 0000 STACKSG SEGMENT PARA STACK
'Stac ' 0000 40 [????] DW 64 DUP(?) 0080 STACKSG ENDS
;--------------------------------------------- 0000 DATASG SEGMENT PARA 'Data'
0000 0140 QTY DW 0140H 0002 2500 PRICE DW 2500H 0004 DATASG ENDS
;--------------------------------------------- 0000 CODESG SEGMENT PARA PUBLIC
'Code' 0000 BEGIN PROC FAR
ASSUME CS:CODESG,DS:DATASG,SS:STACKSG 0000 1E PUSH DS 0001 2B C0 SUB AX,AX 0003
50 PUSH AX 0004 B8 --- R MOV AX,DATASG 0007 8E D8 MOV DS,AX 0009 A1 0002 R MOV
AX,PRICE ; 000C 8B 1E 0000 R MOV BX,QTY ; 0010 9A 0000 --- E
0016 CODESG ENDS
END BEGIN
Segments and Group:
N a m e Size Align Combine Class CODESG . . . . . . . . . . . . .0016 PARA PUBL
IC 'CODE' DATASG . . . . . . . . . . . . .0004 PARA NONE 'DATA' STACKSG. . . . .
. . . . . . . .0080 PARA STACK 'STACK'
Symbols:
N a m e Type Value Attr BEGIN. . . . . . . . . . . . . F PROC 0000 CODESG Lengh
t=0016 PRICE. . . . . . . . . . . . . L WORD 0002 DATASG QTY. . . . . . . . . .
. . . . L WORD 0000 DATASG SUBMUL . . . . . . . . . . . . L FAR 0000 External
page 60,132
TITLE SUBMUL2

;--------------------------------------------- 0000 CODESG SEGMENT PARA PUBLIC


'CODE' 0000 SUBMUL PROC FAR
ASSUME CS:CODESG
PUBLIC SUBMUL 0000 F7 E3 MUL BX ;AX-, BX-
IBM PC. . 155
0002 CB RET ; DX:AX 0003 SUBMUL ENDP 0003 CODESG ENDS
END SUBMUL
Segments and Groups:
N a m e Size Align Combine Class CODESG. . . . . . . . . . . . . 0003 PARA PUBL
IC 'CODE'
Symbols:
N a m e Type Value Attr SUBMUL. . . . . . . . . . . . .F PROC 0000 CODESG Globa
l Length=0003
LINK IBM Personal Computer Lin er Version 2.30 (C) Copyright IBM Corp 1981, 198
5 Object Modules: B:CALLMUL2+B:SUBMUL2 Run File: [B:CALLMUL2.EXE]: <return> L
ist File: [NUL.MAP]: CON Libraries [.LIB]: <return>
Start Stop Length Name Class
00000H 00022H 0023H CODESG CODE <- : 1
00030H 00033H 0004H DATASG DATA
00040H 000BFH 0080H STACKSG STACK
Program entry point at 0000:0000

IBM PC. . 156

page 60,132
TITLE CALLMUL3 (EXE)
;

EXTRN SUBMUL:FAR
PUBLIC QTY,PRICE
;------------------------------------------------ 0000 STACKSG SEGMENT PARA STA
CK 'Stac ' 0000 40 [????] DW 64 DUP(?) 0080 STACKSD ENDS
;------------------------------------------------ 0000 DATASG SEGMENT PARA PUBL
IC 'Data' 0000 0140 QTY DW 0140H 0002 2500 PRICE DW 2500H 0004 DATASG ENDS
;------------------------------------------------ 0000 CODESG SEGMENT PARA PUBL
IC 'Code' 0000 BEGIN PROC FAR
ASSUME CS:CODESG,DS:DATASG,SS:STACKSG 0000 1E PUSH DS 0001 2B C0 SUB AX,AX 0003
50 PUSH AX 0004 B8 --- R MOV AX,DATASG 0007 8E D8 MOV DS,AX 0009 9A 0000 --- E
CALL SUBMUL ; 000E CB RET 000F BEGIN ENDP
000F CODESG ENDS
END BEGIN
Segments and Groups:
N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 000F PARA PUBLI
C 'CODE' DATASG . . . . . . . . . . . . 0004 PARA PUBLIC 'DATA' STACKSG. . . . .
. . . . . . . 0080 PARA STACK 'STACK'
Symbols:
N a m e Type Value Attr BEGIN. . . . . . . . . . . . . F PROC 0000 CODESG Lengt
h=000F PRICE. . . . . . . . . . . . . L WORD 0002 DATASG Global QTY. . . . . . .
. . . . . . . L WORD 0000 DATASG Global SUBMUL . . . . . . . . . . . . L FAR 00
00 External
page 60,132
TITLE SUBMUL
EXTRN QTY:WORD,PRICE:WORD
;------------------------------------------------ 0000 CODESG SEGMENT PARA PUBL
IC 'CODE' 0000 SUBMUL PROC FAR
ASSUME CS:CODESG
PUBLIC SUBMUL
IBM PC. . 157

0000 A1 0000 E MOV AX,PRICE 0003 8B 1E 0000 E MOV BX,QTY 0007 F7 E3 MUL BX ; D
RET 000A SUBMUL ENDP 000A CODESG ENDS
END SUBMUL
Segments and Groups:
N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 000A PARA PUBLI
C 'CODE'
Symbols:
N a m e Type Value Attr PRICE. . . . . . . . . . . . . V WORD 0000 External QTY
. . . . . . . . . . . . . . V WORD 0000 External SUBMUL . . . . . . . . . . . .
F PROC 0000 CODESG Global Length=000A
LINK IBM Personal Computer Lin er Version 2.30 (C) Copyright IBM Corp 1981, 198
5 Object Modules: B:CALLMUL3+B:SUBMUL3 Run File: [B:CALLMUL3.EXE]: <return> L
ist File: [NUL.MAP]: CON Libraries [.LIB]: <return>
Start Stop Length Name Class
00000H 00019H
00030H 00033H
00040H 000BFH
PROGRAM entry

001AH
0004H
0080H
point

CODESG CODE
DATASG DATA
STACKSG STACK
at 0000:0000

IBM PC. . 158

page 60,132
TITLE CALLMULL4 (EXE)
;
EXTRN SUBMUL:FAR
;------------------------------------------------ 0000 STACKSG SEGMENT PARA STA
CK 'Stac ' 0000 40 [ ???? ] DW 64 DUP(?) 0080 STACKSG ENDS
;------------------------------------------------ 0000 DATASG SEGMENT PARA 'Dat
a' 0000 0140 QTY DW 0140H 0002 2500 PRICE DW 2500H 0004 DATASG ENDS
;------------------------------------------------ 0000 CODESG SEGMENT PARA PUBL
IC 'Code' 0000 BEGIN PROC FAR
ASSUME CS:CODESG,DS:DATASG,SS:STACKSG 0000 1E PUSH DS 0001 2B C0 SUB AX,AX 0003
50 PUSH AX 0004 B8 --- R MOV A,DATASG 0007 8E D8 MOV DS,AX 0009 FF 36 0002 R PU
SH PRICE 000D FF 36 0000 R PUSH QTY 0011 9A 0000 --- E CALL SUBMUL ; 0016
017 CODESG ENDS
END BEGIN
Segments and Groups:
N a m e Sise Align Combine Class CODESG . . . . . . . . . . . . 0017 PARA NONE
'CODE' DATASG . . . . . . . . . . . . 0004 PARA NONE 'DATA' STACKSG. . . . . . .
. . . . . 0080 PARA STACK 'STACK'
Symbols:
N a m e Type Value Attr BEGIN. . . . . . . . . . . . . F PROC 0000 CODESG Lengt
h=0017 PRICE. . . . . . . . . . . . . L WORD 0002 DATASG QTY. . . . . . . . . .
. . . . L WORD 0000 DATASG SUBMUL . . . . . . . . . . . . L FAR 0000 External

page 60,132
TITLE SUBMUL 0000 CODESG SEGMENT PARA PUBLIC 'Code' 0000 S
ASSUME CS:CODESG
PUBLIC SUMBUL 0000 55 PUSH BP 0001 8P EC MOV BP,SP
IBM PC. . 159

0003 8B 46 08 MOV AX,[BP+8] ; 0006 8B 5E 06 MOV BX,[BP+6] ; 0009 F7 E3 MU


UL ENDP 000F CODESG ENDS
END
Segments and Groups:
N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 000F PARA PUBLI
C 'CODE'

Symbols:
N a m e Type Value Attr SUBMUL . . . . . . . . . . . . F PROC 0000 CODESG Globa
l Length=000F
LINK IBM Personal Computer Lin er Version 2.30 (C) Copyright IBM Corp 1981, 198
5 Object Modules: B:CALLMUL4+B:SUBMUL4 Run File: [B:CALLMUL4.EXE]: <return> L
ist File: [NUL.MAP]: CON Libraries [.LIB]: <return>
Start Stop Length Name Class
00000H 00019H
00030H 00033H
00040H 000BFH
PROGRAM entry

001AH
0004H
0080H
point

CODESG CODE
DATASG DATA
STACKSG STACK
at 0000:0000

IBM PC. . 160

LOAD"D:BASTEST.BAS
LIST 010 CLEAR ,32768! 020 ' BLOAD 030 ' DEFSEG 040 ' CALL 050 '
"; H 080 INPUT "Rate "; R 090 W = H * R 100 PRINT "Wage = " W 110 NEXT N 120 END
TITLE LINKBAS , BASIC CODESG SEGMENT PARA 'CODE'
ASSUME CS:CODESG CLRSCRN PROC FAR
PUSH BP ; BP
MOV BP,SP ;
MOV AX,0600H ;
MOV BH,07 ;
MOV CX,0000 ;
MOV DX,184FH
INT 10H
POP BP
RET ; CLRSCRN ENDP CODESG ENDS
END

IBM PC. . 161


D>LINK
IBM Personal Computer Lin er Version 2.30 (C) Copyright IBM Corp. 1981, 1985
Object Modules [.OBJ]: LINKBAS Run File [LINKBAS.EXE]: LINKBAS/HIGH List File [
NUL.MAP]: CON Libraries [.LIB]: Warning: no stac segment
Start Stop Length Name Class
00000H 00011H 00012H CODESG CODE D>DEBUG BASIC.COM -R AX=0000 BX=0000 CX=0012 D
X=0000 SP=FFFF BP=0000 SI=0000 DI=0000 DS=1410 ES=1410 SS=1410 CS=1410 IP=0100 N
V UP EI PL NZ NA PO NC 1410:0100 E9E03E JMP 3FE3 -N D:LINKBAS.EXE -L -R AX=FFA3
BX=0000 CX=0012 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=1410 ES=1410 SS=9FE0
CS=9FE0 IP=0000 NV UP EI PL NZ NA PO NC 9FE0:0000 55 -R SS SS 9FE0 :1410 -R CS C
S 9FE0 :1410 -R IP IP 0000 :0100 -G O DEF SEG = &H9EF0 O BSAVE "D:CLRSCREE
N.MOD",0,&H12 O SYSTEM Program terminated normally -Q D>BASIC IBM Personal
Computer Basic Ver4sion D3.10 Copyright IBM Corp. 1981, 1985 61310 Bytes free O
LOAD"D:BASTEST.BAS O 20 BLOAD "D:CLRSCREEN.MOD" 30 DEF SEG = &H9FE0 40 CLR
SCRN = 0
IBM PC. . 162
50 CALL CLRSCRN LIST
10 CLEAR ,32768! 20 BLOAD "D:CLRSCRN.MOD" 30 DEF SEG = &H9FE0 40 CLRSCRN =
0 50 CALL CLRSCRN 60 FOR N = 1 TO 5 70 INPUT "HOURS"; H 80 INPUT "rATE"; R 90 W
= H * R 100 PRINT "WAGE = " W 110 NEXT N 120 END O
program pascall ( input, output );
procedure move_cursor( const row: integer;
const col: integer ); extern;
var
temp_row: integer;
temp_col: integer;
begin
write( 'Enter cursor row: ' );
readln( temp_row );
write( 'Enter cursor column:' );
readln( temp_col );

move_cursor( temprow, temp_col );


write( 'New cursor location' );
end.

TITLE MOVCUR , ;
PUBLIC MOVE_CURSOR ;--------------------------------------------------------- ;
MOVE_CURSOR: ; ; : const row
MOVE_CURSOR PROC FAR
ASSUME CS:CODESEG
IBM PC. . 163
ROWWPAR EQU 8 ; "" COLPAR EQU 6 ; ""
PUSH BP ; BP
MOV BP,SP ; BP
MOV SI,[BP+ROWPAR] ;SI
MOV DH,[SI] ; DL
MOV AH,02 ;
SUB BH,BH ; #0
INT 10H
POP BP ;
RET 4 ; MOVE_CURSOR ENDP CODESEG ENDS
END

00000 (. . 23)
00400 (ROM)
00500 (DOS)
00600 IBMBIO.COM


/
(FAT, )
XXXX0 COMMAND.COM
XXXX0 ( COM EXE)
XXXX0 COM- (256 )
XXXX0 COMMAND.COM
( ).
TITLE EXDOS (EXE) DOS 4BH DIR CSEG GMENT PARA 'Code'
ASSUME CS:CSEG,DS:CSEG,ES:CSEG BEGIN: JMP SHORT MAIN ;-------------------------------------------------------- PARAREA DW ? ;
IBM PC. . 164
DW OFFSET DIRCOM ;
;
DW CSEG
DW OFFSET FCB1 ; FCB2
DW CSEG

DIRCOM DB 17,'/C DIR D:',13,0 FCB1 DB 16 DUP(0) FCB2 DB 16 DUP(0) PROGNAM DB 'D
:COMMAND.COM',0 ; -------------------------------------------------------- MAIN
PROC FAR
MOV AH,4AH ; 64K
MOV BH,100H ;
INT 21H
JC E10ERR ; ?
MOV
MOV
LEA
MOV
MOV
MOV
MOV

DI,2CH ;
AX,[DI] ;
SI,PARAREA ;
[SI],AX ; 1
AX,CS ; DS ES
DS,AX ; CSEG
ES,AX

MOV AH,4BH ;
MOV AL,00 ;
LEA BX,PARAREA ; COMMAND.COM
LEA DX,PROGNAM
INT 21H ; DOS
JC E20ERR ; ?
MOV AL,00 ;
JMP X10XIT 0ERR:
MOV AL,01 ; 1
JMP X10XIT 0ERR:
MOV AL,02 ; 2
JMP X10XIT 0XIT:
MOV AH,4CH ;
INT 21H ; DOS IN ENDP EG ENDS
END

(.) (.)
0-3 0
4-7 1 ( DEBUG)
IBM PC. . 165
8-B 2
C-F 3
10-13
14-17
18-1F
20-23
24-27
28-37
38-3B
3C-3F
40-43
44-47
48-4B
4C-4F
50-53
54-57
58-5B

(NMI)
( DEBUG)
4
5

8
9
A,B,C,D AT
E
F
10 (. . 8,9,10)
11 (. . 9)
12 (. . 2)
13 - (. 18)
14 -
15 . AT
16 (. 9)

5C-5F 17 (. 19)
60-63 18 BASIC (ROM)
64-67 19
68-6B 1A
6C-6F 1B
70-73 1C
74-77 1D
78-7B 1E
7C-7F 1F
80-83 20 DOS
84-87 21 DOS DOS
88-8B 22 DOS
8C-8F 23 DOS Ctrl+Brea
90-93 24 DOS
94-97 25 DOS
98-9B 26 DOS
9C-9F 27 DOS ,
A0-FF 28-3F DOS DOS 100-1FF 40-7F 200-217 80-85
: 00-1F BIOS, 20-FF DOS BASIC

TITLE RESIDENT (COM) ;


INTTAB SEGMENT AT 0H ; :
ORG 9H*4 ; Int 9H, KBADDR LABEL DWORD ; INTTAB ENDS
IBM PC. . 166

;---------------------------------------------------------ROMAREA SEGMENT AT 400H ; BIOS:


ORG 17H ; , KBFLAG DB ? ; Alt + Shift ROMAREA ENDS ;-----------CSEG SEGMENT PARA ;
ASSUME CS:CS
ORG 100H BEGIN: JMP INITZ ;
KBSAVE DD ? ; INT 9 BIOS ; : ; -----------------PUSH AX ; Alt+Left Shift
PUSH BX
PUSH CX ;
PUSH DX
PUSH SI
PUSH DI
PUSH DS
PUSH ES
PUSHF
CALL KBSAV ;
ASSUME DS:ROMAREA
MOV AX,ROMAREA ; DS
MOV DS,AX ;
MOV AL,KB AG ; Alt+Left Shift
CMP AL,00001010B ;Alt+Left Shift ?
JNE EXIT ; -
MOV AX,0600H ;
MOV BH,61H ;
MOV CX,00
MOV DX,18 FH
INT 10H EXIT:
POP ES ;
POP DS
POP DI

POP SI
POP DX
POP CX
POP BX
POP AX
IRET ; COLORS ENDP
; : ; ------------------------- INITZE PROC NEAR ;
IBM PC. . 167
ASSUME DS:INTTAB
PUSH DS ; DOS
MOV AX,INTTAB ;
MOV DS,AX
CLI ;
; :
MOV AX,WORD PTR KBADDR ;
MOV WORD PTR KBSAVE,AX ; BIOS
MOV AX,WORD PTR BADDR+2
MOV WORD PTR KBSAVE+2,AX
MOV WORD PTR KBADDR,OFFSET COLORS ;
MOV WORD PTR KBADDR+2,CS ; BIOS
STI ;
MOV DX,OFFSET INITZE ;
INT 27H ; INITZE ENDP ;
CSEG ENDS
END BEGIN

TITLE SOUND (COM) SOUNSG SEGMENT PARA 'Code'


ASSUME CS:SOUNG,DS:SOUNG,SS:SOUNG
ORG 100H BEGIN: JMP SHORT MAIN ; ----------------------------------------------------- DURTION DW 1000 ; TONE DW 256H ; () ; ------------OC NEAR
IN AL,61H ;
PUSH AX ;
CLI ;
CALL B10SPKR ;
POP AX ;
OUT 61H,AL ;
STI ;
RET MAIN ENDP
B10SPKR PROC NEAR B20: MOV DX,DURTION ; B30:
AND AL,11111100B ; 0 1
OUT 61H,AL ;
MOV CX,TONE ; B40:
LOOP B40 ;
OR AL,00000010B ; 1
OUT 61H,AL ;
MOV CX,TONE ;
IBM PC. . 168
B50:
LOOP B50 ;
DEC DX ;
JNZ B30 ;?

SHL DURTION,1 ; - ,
SHR TONE,1 ;
JNZ B20 ; ?
RET ; - B10SPKR ENDP
SOUNSG ENDS
END BEGIN

IBM PC 98

TITLE RECORD (COM) RECORD 0000 CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG 0100 ORG 100H 0100 EB 02 BEGIN: JMP SHORT
MAIN
; ----------------------------------------------------BITREC RECORD BIT1:3,BIT2:7,BIT3:6 ; 0102 9A AD DEFBITS BITREC <101B,011
; ---------------------------------------------------- 0104 MAIN PROC NEAR 0104
A10: ;: 0104 B7 10 MOV BH,WIDTH BITREC ; (16) 0106 B0 07 MOV AL,WIDTH BIT2 ;

MOV CL,BIT1 ; .0D 010A B1 06 MOV CL,BIT2 ; 06 010C B1 00 MOV CL,BIT3 ; 00 010E C10:
;: 010E B8 E000 MOV AX,MASK BIT1 ; .E000 0111 BB 1FC0 MOV BX,MASK BIT2 ; 1FC0 0114 B
F MOV CX,MASK BIT3 ; 003F 0117 D10: ; BIT2: 0117 A1 0102 R MOV AX,DEFBITS ;
BIT2 ; BIT1 BIT3, 011D B1 06 MOV CL,BIT2 ; 06, 011F D3 E8 SHR AX,C
; , 0124 B1 0D MOV CL,BIT1 ; 13, 0126 D3 E8 SHR AX,CL ;
END BEGIN
Structures and records:
N a m e Widht # fields
Shift Widht Mas Initial
BITREC . . . . . . . . . . . 0010 0003
BIT1 . . . . . . . . . . . . 000D 0003 E000 0000
BIT2 . . . . . . . . . . . . . 0006 0007 1FC0 0000
BIT3 . . . . . . . . . . . . 0000 0006 003F 0000
Segments and Groups:
N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 0129 PARA NONE
'CODE'
Symbols:
N a m e Type Value Attr A10. . . . . . . . . . . . . . L NEAR 0104 CODESG B10.
. . . . . . . . . . . . . L NEAR 0108 CODESG
IBM PC 99
BEGIN. . . . . . . . . . . . . L
. L NEAR 010E CODESG D10. . . . .
. . . . . . . . . . . L WORD 0102
121 CODESG MAIN . . . . . . . . .

NEAR 0100 CODESG C10. . . . . . . . . . . . .


. . . . . . . . . L NEAR 0117 CODESG DEFBITS.
CODESG E10. . . . . . . . . . . . . . L NEAR 0
. . . . N PROC 0104 CODESG Length =0025

IBM PC 100

TITLE DSTRUC (COM) 0000 CODESG SEGMENT PARA 'Code'


ASSUME CS:CODESG,DS:CODESG,SS:CODESG 0100 ORG 100H 0100 EB 29 BEGIN: JMP SHORT
MAIN
; --------------------------------------------PARLIST STRUC ; 0000 19 MAXLEN DB 25 ; 0001 ?? ACTLEN DB ? ; 0002 19 [ 20 ]
') ; 001B PARLIST ENDS
; 0102 19 PARAMS PARLIST <> ; 0103 ?? 0104 19 [ 20 ] 011D 57 68 61 74 20
is name?', 'S'
73 20 6E 61 6D 65
3F 24
; -------------------------------------------- 012B MAIN PROC NEAR 012B B4 09 M
OV AH,09 ; 012D 8D 16 011D R LEA DX,PROMPT 0131 CD 21 INT 21H 0133 B4 0A MOV AH,
R LEA DX,PARAMS 0139 CD 21 INT 21H 013B A0 0103 R MOV AL,PARAMS.ACTLEN ;
; ... 013E C3 RET 013F MAIN ENDP 013F CODESG ENDS
END BEGIN
Structures and records:
N a m e Width # fields
Shift Width Masc Initial PARLIST. . . . . . . . . . . . . 001B 0003
MAXLEN . . . . . . . . . . . . 0000
ACTLEN . . . . . . . . . . . . 0001
NAMEIN . . . . . . . . . . . . 0002
Segments and Groups:
N a m e Size Align Combine Class CODESG . . . . . . . . . . . . . 013F PARA NON
E 'CODE'
Symbols:
N a m e Type Value Attr BEGIN. . . . . . . . . . . . . L NEAR 0100 CODESG MAIN
. . . . . . . . . . . . . N PROC 012B CODESG Length =0014 PARAMS . . . . . . . .
. . . . L 001B 0102 CODESG PROMPT . . . . . . . . . . . . L BYTE 011D CODESG
IBM PC 101
, :
: w = 0 w = 1
000 AL AX
001 CL CX
010 DL DX

011
100
101
110
111

BL
AH
CH
DH
BH

BX
SP
BP
SI
DI

: :
00 ES
01 CS
10 SS
11 DS
r/m mod=00 mod=01 mod=10 mod=1.1 mod=11
w=0 w=1 000 BX+SI BX+SI+disp BX+SI+disp AL AX 001 BX+DI BX+DI+disp BX+DI+disp C
L CX 010 BP+SI BP+SI+disp BP+SI+disp DL DX 011 BP+DI BP+DI+disp BP+DI+disp BL BX
100 SI SI+disp SI+disp AH SP 101 DI DI+disp DI+disp CH BP 110 Direct BP+disp BP
+disp DH SI 111 BX BX+disp BX+disp BH DI

IBM PC 102

A-1 ASCII

000 00h 032 20h sp 064 40h @ 096 60h ` 001 01h 033 21h ! 065 41h A 097
098 62h b 003 03h 035 23h # 067 43h C 099 63h c 004 04h 036 24h $
% 069 45h E 101 65h e 006 06h 038 26h & 070 46h F 102 66h f 007 07h 039 27h ' 0
47h G 103 67h g 008 08h 040 28h ( 072 48h H 104 68h h 009 09h .
4 4Ah J 106 6Ah j 011 0Bh . 043 2Bh + 075 4Bh K 107 6Bh
012 0Ch
4Dh M 109 6Dh m 014 0Eh Shift out 046 2Eh . 078 4Eh N 110 6Eh n 015 0Fh Shift in
047 2Fh / 079 4Fh O 111 6Fh o 016 10h Data line esc 048 30h 0 080 50h P 112 70h
p 017 11h 1 049 31h 1 081 51h Q 113 71h q 018 12h 2 050 32h 2 082 52h
53h S 115 73h s 020 14h 4 052 34h 4 084 54h T 116 74h t 021 15h 053 35h 5 085
u 022 16h 054 36h 6 086 56h V 118 76h v 023 17h 055 37h 7 087 57h
78h x 025 19h End of medium 057 39h 9 089 59h Y 121 79h y 026 1Ah 058 3Ah : 090 5Ah Z

122 7Ah z 027 1Bh Escape 059 3Bh ; 091 5Bh [ 123 7Bh { 028 1Ch . 060 3Ch < 092
4 7Ch | 029 1Dh . 061 3Dh = 093 5Dh 125 7Dh } 030 1Eh . 062 3Eh > 094
27 7Fh

IBM PC 103

B-1 -
+------------+-----------+----------+--------+-------+------+------+-----+
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
+------------+-----------+----------+--------+-------+------+------+-----+
|0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0|
|1 268435456|1 16777216|1 1048576|1 65536|1 4096|1 256|1 16|1 1|
|2 536870912|2 33554432|2 2097152|2 131072|2 8192|2 512|2 32|2 2|
|3 805306368|3 50331648|3 3145728|3 196608|3 12288|3 768|3 48|3 3|
|4 1073741824|4 67108864|4 4194304|4 262144|4 16384|4 1024|4 64|4 4|
|5 1342177280|5 83886080|5 5242880|5 327680|5 20480|5 1280|5 80|5 5|
|6 1610612736|6 100663296|6 6291456|6 393216|6 24576|6 1536|6 96|6 6|
|7 1879048192|7 117440512|7 7340032|7 458752|7 28672|7 1792|7 112|7 7|
|8 2147483648|8 134217728|8 8388608|8 524288|8 32768|8 2048|8 128|8 8|
|9 2415919104|9 150994944|9 9437184|9 589824|9 36864|9 2304|9 144|9 9|
|A 2684354560|A 167772160|A 10485760|A 655360|A 40960|A 2560|A 160|A 10|
|B 2952790016|B 184549376|B 11534336|B 720896|B 45056|B 2816|B 176|B 11|
|C 3221225472|C 201326592|C 12582912|C 786432|C 49152|C 3072|C 192|C 12|
|D 3489660928|D 218103808|D 13631488|D 851968|D 53248|D 3328|D 208|D 13|
|E 3758096384|E 234881024|E 14680064|E 917504|E 57344|E 3584|E 224|E 14|
|F 4026531840|F 251658240|F 15728640|F 983040|F 61440|F 3840|F 240|F 15| +-----------+-----------+----------+--------+-------+------+------+-----+ .| 8 | 7 | 6 | 5 |
4 | 3 | 2 | 1 |
+------------+-----------+----------+--------+-------+------+------+-----+

You might also like