Professional Documents
Culture Documents
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
.
,
------------------------------------------------------------
.
. ,
;
,
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. ,
.
, - , ..
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
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
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)
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 :
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
, :
, 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]
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 :
IBM PC. 2 39
24 04B22 AL,
: ||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 .
------------------------------------------------------------
A (Assemble) DEBUG
A 100 [Return]
:0100.
IBM PC. 2 41
MOV AL,25
MOV BL,32
ADD AL,BL
RET
. Return
, .
U
U (Unassemble) .
U 100,106 [ Return]
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]
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
, .
------------------------------------------------------------
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
4. --------------------------------------------
: , .
------------------------------------------------------------
, ,
------------------------------------------------------------
.3.2. ,
EDLIN :EXASM1.ASM [Return]
IBM PC. 4 80
,
PRINT B:EXASM1.ASM [Return]
EXASM.ASM -
--------------------------------------------------------
EXASM1.ASM
OBJ- , .
1. OBJ- ,
.
----R. 2. , ,
()
;
,
,
. 3. EXE-
.
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
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
FLDC , (?).
CODESG - ,
0004 B8 --- R MOV AX,DATASG
0007 8E D8 MOV DS,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.
5. -----------------------------------------------------------
: .
------------------------------------------------------------
, -
, ..
MOV AL,20H
20 .
------------------------------------------------------------
: -,
[] Dn
(
),
,
.
" " 3.
: DB (), DW (), DD ( ),
DQ ( ) DT ( ). , :
FLD1 DB 25
,
IBM PC. 5 105
FLDB DB ?
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. .
a .
. 0 9
. . . 0 F
. 0 1
. 0 7
. ASM.
, , ,
. 5.1
(DB) -----------------------------------------------------------
, , DB (
DB .
. 5.1 FLD3DB, FLD4DB, FLD5DB FLD8DB. F
(DW) -----------------------------------------------------------
DW , ( ).
DW .
. 5.1 FLD1DW FLD2DW . FLD3DW
FLD4DW . ,
DW, DD DQ . ,
(DD) --------------------------------------------------
DD , c ( ).
. 5.1 FLD3DD . FLD4DD
DD . ,
DD .
(DQ) ---------------------------------------------
DQ , ( ).
1152921504606846976
DT , .
. 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
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
.
, EXE-. LINK
COM-. COM-
EXE COM- ----------------------------------------------
. EXE- , COM-
. EXE , DS
. EXE- DS.
EXE2BIN B:CALC,B:CALC.COM
EXE , EXE.
EXE-, , ,
COM- ------------------------------------------------------------
ORG 100H
.
. JMP
.
:
MASM [ ]
LINK [ ]
EXE2BIN B:EXCOM1,B:EXCOM1.COM
DEL B:EXCOM1.OBJ,B:EXCOM1.EXE ( OBJ EXE-)
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-.
7. ---------------------------------------------------
: ( )
------------------------------------------------------------
. ,
,
,
: JMP
: LOOP
: Jnnn (,,)
: CALL
JMP.
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
- . 109.
JMP -128 +127 SHORT.
A50:
...
JMP A50
. (
JMP A90
...
A90:
NEAR FAR, 3- .
JMP SHORT A90
...
A90:
, , ,
LOOP ------------------------------------------------------------
JMP . 7.1 .
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
.
PF (Parity Flag) - . p
ZF (Zero Flag) - . a
SF (SIgn Flag) - . (
TF (Trap Flag) - . ,
IF (Interrupt Flag) - .
DF (DIrection Flag) - .
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
, 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
(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 ,
, 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
------------------------------------------------------------
, , , 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
. -,
: --------------------------------------------------
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
, , AL 1100 0101, BH 01
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 ,
: --------------------------------------------
AND AH,11011111B
, ( a z), .
BX
----------------------------------------------------------- -------------------
----------------------------------------. 7.6. .
-------------------------------------------------------
,
- ;
- ;
- ;
- 8 ( ) 16 ( );
- ( ) ( ).
1 c ,
CF .
; ()
; ()
;
;
SHR:
MOV CL,03 ; AX:
MOV AX,10110111B ; 10110111
SHR AX,1 ; 01011011 ; 1
SHR AX,CL ; 00001011 ; 3
SHR AX 1 .
SAR:
,
ROR
ROL
RCR
RCL
;
;
;
;
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
,
.
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 .
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.
8. I: ------------------------------------------- I:
: ,
------------------------------------------------------------
, o
INT ().
INT 10H,
(-, BW),
: INT ------------------------------------------------------------
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
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
256 ASCII ,
. 8.1 COM-, ASCI
----------------------------------------------------------- ----------------------------------------------------------. 8.1. ASCII
. 08 . 0D
IBM PC. 8 176
. : (.8.1),
(.00), " "
.
, . ,
, . LABEL
NAMEPAR LABEL BYTE ; :
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
MOV B30 ,
MOV WORD PTR[NAMEFLD],2020H ;
,
: DOS -----------------------------------
, DOS 2.0 (
0
1
2
3
4
( ) CON
( ) CON
( ) CON
/ AUX
LPT1 PRN
,
INAREA DB 20 DUP (' ') ;
MOV AH,3FH ;
MOV BX,00 ;
MOV CX,20 ;
LEA DX,INAREA ;
INT 21H ; DOS
, ) 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
------------------------------------------------------------
4, . B000
- 2 (25 80 );
- 2 -, , ,
/
16 (
------------------------------------------------------------
, , (
;
.
0000 0000 00 ( )
0000 0111 07 ()
1000 0111 87 ()
0000 1111 0F ()
0111 0000 70 ()
1111 0000 F0 (. )
, ,
BIOS INT 10H ------------------------------------------------------------
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)
-
-
- -
, 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: / .
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
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 - , .
: , ---------------------------------------------------
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
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=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, ,
- ,
- 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.
, 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?
EXIT2 ; -
AH,02 ;
BH,00 ;
DX,00 ; 0,0
10H ; BIOS
-,
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.
.
1.
( ),
.
2. ,
,
.
.
3. RGB-,
- ,
.
, RGB-
.
(AH=0).
, . ,
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 ;
1. ( ROM)
100 160 (..
). 16
,
"".
Motorola 6845 CRT.
: .3D4 3D5.
2.
200 320 .
(..
).
IBM PC. 10 231
3. 200 640 .
16 ,
-
(BW) . 8
(.. ).
, - .
, 0 3. 4
C1 C0 0 1
0
0
1
1
0
1
0
1
INT 10H. p, , ,
BIOS 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 .
: -------------------------------
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
, ,
:
- 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;
" ".
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: ...
DF , MOVSB DI
D10MVSW (.11.1) MOVSW,
LODS: ------------------------------------------------------------
LODS AL AX .
LODS , REP
, LODSB:
MOV AL,[SI]
INC SI
STOS () AL AX
STOS REP -
JCXZ LABEL2
LABEL1: MOV [DI],AL
INC/DEC DI ;
LOOP LABEL1
LABEL2: ...
CMPS ( DS:SI)
----------------------------------------------------------- ----------------------------------------------------------. 11.1. .
, JEAN JOAN.
IBM PC. 11 246
J
E
A
N
:
:
:
:
J
O
A
N
(E O)
SCAS CMPS , ()
IBM PC. 11 247
( p ES:DI) AL AX.
SCAS , , ,
.11.1 H10SCAS NAME1 "m".
REPNE SCASB
STRLEN EQU 15 ; STRING
STRING DB 'The time&is now'
...
CLD
MOV AL,'&' ;
MOV CX,STRLEN ; STRING
LEA DI,STRING ; STRING
REPNE SCASB ;
MOVSB MOVSW
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. .
------------------------------------------------------------
) 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
.
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. .
.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 -
------------------------------------------------------------
, , , 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
MUL IMUL .
MUL MULTR
MULTR (DB), AL
MUL CL ;-: AL, . AX
MUL BX ;-: AX, . DX:AX
IBM PC. 12 267
: MUL
MULtiplication - ) .
IMUL .80 ( ) .40 (
IMUL .8000 ( ) .2000 (
IMUL BYTE1
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
2 2
2 1
1 2
1 1
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
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
----------------------------------------.15.5. .
: IDIV
. 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 , ,
, .
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
: , ,
,
,
-----------------------------------------------------------
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. 13 1
- ASCII-
, BASIC Pascal,
ASCII- ------------------------------------------------------------
, , ASCII-, , SAM
IBM PC. 13 2
. 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 ;
IBM PC. 13 4
AAM ; .. 0405
OR AX,3030H ; ASCII-- 3435
MUL 45 (.002D) AX, AAM
.13.2 - -
, ,
----------------------------------------------------------- -------------------
----------------------------------------.13.2. ASCII-.
ASCII-
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
----------------------------------------------------------- -------------------
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
, .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(?)
:
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.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
.
, ,
------------------------------------------------------------
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
, 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 ? )
? )
, .
DOS,
DOS (FCB .
, , ""
. 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 (
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
: | 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
DTA FCB.
00 .
01 , .
02 DTA .
03 , , .
DOS.
FCB
: FCB ----------------------------------- .16.2 , ,
:
BEGIN ,
E10OPEN DTA
F10READ .
, ,
, G10DISP. E10OPEN ,
, 32 (.20),
DTA.
299 , 300- .
, ,
( 33-36) FCB.
DTA ,
MOV AH,21H ;
LEA DX,FCBname ;
INT 21H ; DOS
.
00
01
02
03
- DTA
, .
, .
, ,
| 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
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
DOS , . DOS
, 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
: ) , ) , )
, ) . 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 ,
, )
)
(
).
( ) . (zero)
----------------------------------------------------------- AX ,
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, ,
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
DOS , ,
: -------------------------------- .17.3 , , (.
,
ASCII- ( ASCII) ------------------------------------------------------- .
<tab>MOV<tab>AH,09<return>
----------------------------------------------------------- -------------------
---------------------------------------- .17.3.
ASCII- :
094D4F560941482C30390D0A
, 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 - .
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
( ),
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
.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.
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
AH = 03:
( 512
AH = 04:
, ,
AH = 05:
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 .
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 .
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
. .
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 ------------------------------------------------------------
JNZ errormsg ; -
AH=1 AH=2 .
7
6
5
4
3 /
0
IBM PC. 19 8
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. .
---------------------------------------------------
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
.
DOS21 MACRO DOSFUNC
MOV AH,DOSFUNC
INT 21H
ENDM
:
LEA DX,NAMEPAR
DOS21 0AH
, , 02 AH
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
INCLUDE
IBM PC. 20 25
PURGE
(&) ------------------------------------------------------------
(&) ()
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-)
IBM PC. 20 28
IFIDN <-1>,<-2>
,
.
. IFDIF<-1>,<-2>
,
.
.
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
PUBLIC ,
PUBLIC [, ... ]
( )
.
: EXTRN PUBLIC ---------------------------------
IBM PC. 21 5
, 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 0200
8B 1E 0000
, MOV
,
, , ,
IBM PC. 21 8
. -
23 ,
------------------------------------------------------------
, .21.6, SUBMUL
BP ,
BP SP,
| 0000 | 1600 | D213 | 4001 | 0025 | 0000 |C213 |
| | | | | | |
SP: 72 74 76 78 7A 7C 7E
IBM PC. 21 9
----------------------------------------------------------- ----------------------------------------------------------.21.6. .
BP
RET "" .
IP
(1600). SP 2, 74 76.
CS (D213). SP 2 76 78.
.
RET 4
4 (
BASIC- -----------------------------------
: 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 ( , ).
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- ------------------------------------------------------------
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
.
IBM PC. 23 55
,
BIOS (Basic Input/Output System) ROM
------------------------------------------------------------
INTR .
, , INT 12H, ,
, CS IP.
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 16H . ,
INT 17H . .
INT 19H . 1
INT 1AH .
AH=00 . CX , DX
AH=01 . CX ( ) D
02 06 AT.
INT 1FH .
DOS ------------------------------------------------------------
IBM PC. 23 60
IBMDOS.COM ,
ROM
+-----------+ +----------+ +----------+
|| | DOS | | DOS | +----+ +----------+
| / ||IBMDOS.COM||IBMBIO.COM||BIOS|||
+-----------+ +----------+ +----------+ +----+ +----------+
IBM PC. 23 61
( INT 20H).
.
.
. .
. .
IBM PC. 1
1 ---------------------------------------------------------- ASCII-
. 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
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
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
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 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
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
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
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
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
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 ;
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
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
IBM PC. . 90
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
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
IBM PC. . 98
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
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
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
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
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
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
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
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
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
INT 21H
CMP AL,00 ; ?
JNZ A30 ; -
MOV
MOV
LEA
INT
RET
FCBRCSZ,0020H ;
AH,1AH
DX,DSKRECS ; DTA
21H
E20:
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
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
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
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
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
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
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
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
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
LEA
INT
MOV
MOV
DX,PATHPAR
21H
BL,NAMELEN ;
BH,00 ; 00
Symbols:
N a m e Type Value Attr BEGIN. . . . . . . . . . . . . . . . F PROC 0000 CSEG L
ength=001A MESSAGE. . . . . . . . . . . . . . . L BYTE 0000 DSEG
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
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
+-----------+ +-----------+
| | | |
| | | |
+-----+-----+ +-----+-----+
| |
| |
+------------+------------+ +------+------+
| | | | |
| | | | | +--------+ +--------+ +--------+ +--------+ +--------+ | / 1 | | / 2 | | / 3
/ 1 | | / 2 | +---------+ +---------+ +---------+ +----+----+ +---------+
|
|
+--------+
| / 3 |
+---------+
+---------------------------------------+
| EXTRN SUBPROG:FAR |
| MAINPROG: . |
| . |
| CALL SUBPROG |
| . |
| . |
+---------------------------------------+
| PUBLIC SUBPROG |
| SUBPROG: . |
| . |
| . |
| RET |
+---------------------------------------+
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
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
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
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
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
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
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
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
SHL DURTION,1 ; - ,
SHR TONE,1 ;
JNZ B20 ; ?
RET ; - B10SPKR ENDP
SOUNSG ENDS
END BEGIN
IBM PC 98
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 . . . . . . . . .
IBM PC 100
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 |
+------------+-----------+----------+--------+-------+------+------+-----+