ղ PC
' 8086/8088 : , , , , () . , . :
- (Intel);
- ' (ROM 40);
- ' (RAM 512 );
- -.
, (), , ' .
, ', , "" 20 .
"" ' , . 8088 16- , . 8088 8086, : 8088 8- ( 16- ) , , ' . . 80286 80386 8086.
. 1 : () (ز). , ز . - (), () . ֳ , ( , ).
(ز): , : -, ز , ' -. -, ' 1 .
ز . , ', ز . 4 , , ز " " , .
, ز . ' /. . , ز '. , .
|
|
'
, ' '. ' () ROM (read-only memory). ROM , ( ) . ROM " " .
ROM : ' ROM ' (RAM) (, DOS). , ROM BIOS (Basic Input/Output System) /.
', , RAM (Random Access Memory) , ', , . RAM .
, RAM ', ' . , ROM DOS RAM. ( DOS, DOS). DOS DOS . RAM. DOS ', () . RAM , . RAM. RAM.
'. - 64 , RAM ': 4 64K = 256K. - . , , .
RAM ', ROM - . ³ ' ', 256K RAM ' . RAM , 640 , DOS. ROM 768 / . ROM, 960 ', , .
RAM - '.
' 00 - '. '. 1025. ' - 0401 . - 04 - 01. ' : , - . , 0401h ' 5612 5613, :
|
|
|01| |04|
5612, 5613
, ' . , , ' .
.1. .
, , - , 16 . - 64 , , . :
1. . , . , , , . (CS) .
2. . , , . (DS) .
3. . , . (SS) .
, (ES), . .
' . . (16-) 0000h FFFFh 0 65535. - , ' . , 0, - 01 65535.
, , . 045F ' 0032. , 045F, 045F0, . ij ' :
DS: 045F0
: 0032
: 04622
8086/8088 ' ? 16 . , . FFF0h 65520 ( ) . , , . . nnnn, ' , ( . ), . nnnn0. , . FFFF0 1048560 . , . F 1111, .
80286 24 , FFFFF0 16 , 80386 .
8086/8088 14 , , , ' . (16 ) . :
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
80286 80386 , 16-. ֳ .
CS, DS, SS ES
64 ', . , .
|
|
1. CS. . (IP) , . CS.
2. DS. . , , .
3. SS. .
4. ES. '. ES ' DI. ES, .
: AX, BX, CX DX
" ". , . ˳ (high), a - (low). , CX : CH CL, . CX, CH CL, :
MOV CX,00
MOV CH,00
MOV CL,00
1. AX. AX -, . , , AX. , AX.
AX: | AH | AL |
2. BX. BX . , "" . - .
BX: | BH | BL |
3. CX. CX . ³ . CX .
CX: | CH | CL |
4. DX. DX . ³ - , DX AX.
DX: | DH | DL |
- 8-, 16- .
: SP BP
SP BP . г .
1. SP. ', . ' SS .
2. BP. : .
: SI DI
.
1. SI. . SI ' DS.
2. DI. . DI ' ES.
: IP
IP , . , , DOS DEBUG .
|
|
' 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 , D .
.EXE
.EXE :
TTLE .EXE
STACK SEGMENT PARA STACK 'STACK'
db 200h DUP (?)
STACK ENDS
DATA SEGMENT WORD 'DATA'
HelloMessage db 'Hello, world',13,10,'$'
DATA ENDS
CODE SEGMENT WORD 'CODE'
ASSUME cs:CODE, ds:DATA
ProgramStart:
push ds;initialize stack segment
sub ax,ax;initialize stack segment
push ax;initialize stack segment
mov ax,Data;initialize data segment
mov ds,ax;initialize data segment
mov dx,OFFSET HelloMessage;DS:DX ponts to the HelloMessage
mov ah,09;DOS strng prnt functon
nt 21h;prnt the HelloMessage
mov ah,4Ch;DOS termnate program functon
nt 21h;end of the program
CODE ENDS
END ProgramStart
Turbo-Assembler .
' (Program Segment Prefx, PSP), . PSP 256 , . ϳ PSP . : ES DS PSP, CS - , SS - . IP ( END).
:
DS PSP, , DS . , (, ). DS , ( , , , AX). :
push ds;store DS in stack
sub ax,ax;zero AX
push ax;store zero in stack
mov ax,Data;store Data segment address in DS
mov ds,ax
' .EXE :
64KB.
RET DS, , DOS.
() - . . .
.EXE ‑ :
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
HelloMessage db 'Hello, world', 13, 10, '$'
|
|
.CODE
push ds;initialize stack segment
sub ax,ax
push ax
mov ax,@data
mov ds,ax;set DS to pont to the data segment
mov ah,9;DOS prnt strng functon
mov dx,OFFSET HelloMessage;pont to "Hello, world"
nt 21h;dsplay "Hello, world"
mov ah,4ch;DOS termnate program functon
nt 21h;termnate the program
END
Turbo-Assembler .EXE- :
C:\>TASM\tasm flename.asm <Enter>
- flename.obj. ' /l /la flename.lst, .
C:\>TASM\tlnk flename.obj <Enter>
- flename.exe, .