( 16 ) , . 16- , , ( ). , :
mov ax,5
mov dx,9
add ax,dx
5 AX, 9 - DX, . (14) AX. AX DX CX, SI .
, , .
AX (). , (, ).
8 AX AL, 8 - AH. . , AX , . AH 0, AL AL 1.
mov ah,0
mov al,ah
inc al
AX 1. BX, CX DX 16- , 8-.
BX (). 16- , BX, , . , AL 9:
mov ax,0
mov ds,ax
mov bx,9
mov al,[bx]
, BX, DS 0 ( AX). . , BX , DS.
AX, CX DX, BX , - BH BL.
CX - . , 10 . :
mov cx,10
Begin:
< , >
sub cx,1
jnz Begin
Begin JNZ , CX 0. CX Begin, CX 0, - SUB CX,1 JNZ.
|
|
- , 8086 , . LOOP. LOOP () 1 CX , CX 0 ( ). :
mov cx,10
Begin
< , >
loop Begin
CX . AX, BX DX, CX , 8- - CH CL.
DX - , - IN OUT. , DX - 256 65535. , 1000 62:
mov al,62
mov dx,1000
out dx,al
DX . 32- 16- , 16 DX. DX. 16 AX. AX.. , 16- , 16 DX ( 16 AX).
AX, BX DX, DX , 8- - DH DL.
BX, SI , -
. :
mov ax,0
mov ds,ax
mov si,20
mov al,[si]
8- , 20, AL. SI . :
mov ax,0
mov ds,ax
mov si,20
mov al,[si]
lodsb
, SI, AX, SI 1. (, ). , , , , .
DI SI ,
. . :
mov ax,0
mov ds,ax
mov di,1024
add bl,[di]
lodsb
8- , 1024, -
BL. DI SI. SI , (), DI (). , SI DS, DI ES. ( SI DI ( ), DS.) :
|
|
cld
mov dx,0
mov es,dx
mov di,2048
stosb
STOSB AL ( , DI), DI 1.
-
BX, SI DI, BP , . BX, SI DI DS (, DI, ES), BP SS ( ).
, SS.
:
push bp
mov bp,sp
mov ax,[bp+4]
AX . BP , .
SP . " , - . - , " " (FIFO). , .
SP . - , . , , "" (pushing) . , PUSH . , , () , "" (popping) ( POP).
SP 1000:
mov ax,1
push ax
mov bx,2
push bx
pop ax
pop bx
SP SP ( ), .
. , ( ). , (, ), , . , . SP, , , .
( IP) , . , , , . , , , , , , . , .
|
|
. ( ).
, . CS, , .
: 1 . 1 20- . 16- . 16- BX. 16- 20- ? , . 16- 16- 20- .
: 4 ( 16),
mov ax,1000h
mov ds,ax
mov si,201h
mov dl,[si]
DS 1000h, SI 201h. : - 1000:201h. ( ":" 16.
, 1 ":". , , .
@Dat, . :
.MODEL SMALL
.DATA
var1 DW 0
.CODE
mov ax,@data
mov ds,ax
END
DS , , Var1.
8086 . , 64 , 64 - , 16- . ( 64 ) , , , .
, , ( ), . , , , . , 100 ES, :
mov ax,es
add ax,100
mov es,ax
, , 64 .
|
|
,
":". , 100h ":": 0:100h, 1:F0h, 2:E0h .., ":" 100h.
, . CS , DS , SS - , ( ) ES - , , .
CS 64, , . , , , IP, ( ":") CS:IP. , , CS.
DS ,
64 , . , BX, SI DI. , : , .
ES 64 , . , - , , . 64 . , .
, . , , , , ES:DI. , ES , , .
SS , 64, . , SP ( , , ), , SP .
BP . BP ,
- IBM PC. DOS , . " ", DOS 1. DOS AH INT 21h. AL. , :
mov ah,1
int 21h
DOS AL. , DOS , , .
DOS 2 . 2 AH DL, DOS INT 21h. :
mov ah,1
int 21h
mov ah,2
mov dl,al; AL DL
int 21h;
. , - .
DOS, DOS 4Ch ( 76 , ). , :
|
|
.MODEL SMALL
.STACK 100h
.DATA
.CODE
EhcoLoop:
mov ah,1; DOS
int 21h;
cmp al,13; ENTER?
jz EchoDone; ,
mov dl,al; DL
mov ah,2; DOS
int 21h;
jnz EchoLoop;
EchoDone:
mov ah,4ch; DOS
int 21h;
END
- , . , , . , , 5, :
.MODEL SMALL
.STACK 200h
.DATA
FactorialValue DW?
Factorial DW?
.CODE
FiveFactorial PROC
mov ax,@Data
mov ds,ax
mov [FactorialValue],1
mov [Factorial],2
mov cx,4
FiveFactorialLoop:
mov ax,[FactorialValue]
mul [Factorial]
mov [FactorialValue],ax
inc [Factorial]
loop FiveFactorialLoop
ret
FiveFactorial ENDP
END
FactorialValue Factorial 16- . . FiveFactorial - ( ), . . , FiveFactorialLoop :
mov ax,[FactorialValue],
LOOP .
, . , , , , .. . MOV ( ) . , , .
0, 1, 2 . , . . ( .) , , , . 8086 :
mov ax,bx
MOV BX AX.
. ( ) ( ) , . , , . , , .
:
mov al,ax
push dl
xchg al,dl
ror dx,cl
in al,dx
inc sl
:
mov al,1
add [BaseCount],cx
cmp si,[bx]
. , . , (), - (). , . , :
mov cx,1
mov dx,2
sub dx,cx
CX 1, DX - 2, -
DX CX (1) DX. SUB CX , (). DX - , . SUB () , " CX DX".
, . SI 4, , SI 0, :
CountByFourLoop:
dec si
dec si
dec si
dec si
jnz CountByFourLoop
:
CountByFourLoop:
sub si,1
jnz CountByFourLoop
(-) , . , A 65, :
sub al,'A'
sub al,65
, , .
- , - ( , ). -, , , . 5, :
mov ax,5
push ax
SP. , BP, MOV. , :
mov ax,[bp+4]
AX BP+4.
PUSH POP. PUSH , POP . , :
mov ax,1
push ax
pop bx
( 1) AX , 1 BX.
XCHG. , . , :
xchg ax,dx
AX DX, :
push ax
mov ax,dx
pop dx
ADD SUB 8- 16- . 32- , ADC SBB.
, ( ), , . , 1, (10000h) 16 . ADC ADD, ( ). , , ( ) ADD, - ADC, . , CX:BX, , , DX:AX:
add ax,bx
adc dx,cx
DoubleLong1 DoubleLong2:
mov ax,[DoubleLong1]
add [DoubleLong2],ax
mov ax,[DoubleLong1+2]
adc [DoubleLong2+2],ax
mov ax,[DoubleLong1+4]
adc [DoubleLong1+4],ax
mov ax,[DoubleLong1+6]
adc [DoubleLong2+6],ax
SBB , ADC. SBB , , . , , CX:BX, , DX:AX:
sub ax,bx
sbb dx,cx
ADC SBB , , /, , . , CX:BX DX:AX :
add ax,bx;
sub si,si; SI ( 0)
adc dx,cx; ...
; ,
;
;
;
8086 . , , .
MUL 8- 16- , 16- 32- .
8- AL, 8- . MUL 16- AX. , :
mov al,25
mov dh,40
mul dh
AL DH, (1000) AX.
16- . AX, 16- . 32- MUL DX:AX, ( ) 16 AX, ( ) 16 - DX. , :
mov ax,1000
mul ax
AX 1000,
, ( 1000000) DX:AX.
, , , IMUL 8- 16- . , , IMUL MUL. , :
mov al,-2
mov ah,10
imul ah
AX -20.
32- 16-, 16- 8-. 16- 8-.
16- 8- AX. 8- 8- . DIV 8- AL, 8- - AH. , :
mov ax,51
mov dl,10
div dl
5 (51/10) AL, 1 (
51/10) - AH. 8- . , 16- 8- 255. , 0 ( 0). :
mov ax,0fffh
mov bl,1
div bl
0 ( , 0 , 0 ).
32- 16- DX:AX. 16- 16- . , :
mov ax,2
mov dx,1; DX:AX 10002h
mov bx,10h
div bx
1000h ( 10002h 10h) AX, 2 ( ) - DX.
, , . DIV, - IDIV. , :
.DATA
TestDivisor DW 100
.CODE
mov ax,-667
cwd; DX:AX -667
idiv [TestDivisor]
-6 AX -67 DX.