.


:




:

































 

 

 

 


AKSION-

1.

16- (POH) (, , , DX, SI, DI, SP, ).


AX () [Accumulator eXchange],

BX () [Base eXchange],

CX () [Counter eXchange],

DX ( ) [Data eXchange],

SI ( ) [Source Index],

DI ( ) [Destination Index],

BP ( ) [Base Pointer],

SP ( ) [Stack Pointer].


.

, .

.

AX - -, . , AX. AX. AX: | AH | AL |

BX - , "" . BX: | BH | BL |

CX - . CX: | CH | CL |

DX - - , DX:AX. DX: | DH | DL |

SP - , . SS .

BP - ( , ).

SI - .

DI - .

8- : *H - (High) , *L (Low).
2.

.

FLAGS, 16 , , 1 1 .

(CF, OF, AF, SF, ZF, IF, DF).

CF (Carry Flag). 1, ( ), 0. , 0FFFFh 1, , , , 0000h CF = 1.

OF (Overflow Flag). 1, . , , ( ) .

AF (Auxiliary carry Flag). 1, ( ) . - .

SF (Sign Flag). .

ZF (Zero Flag). 1, .

IF (Interrupt enable Flag). 1 , . .

DF (Direction Flag). 1, , DF = 0 .

.

STC [SeT Carry] . CF 1.

CLC [CLear Carry] . CF 0.

CMC [CoMplement Carry] . F.

STD [ SeT Direction ] . DF 1, DI SI .

CLD -[CLear Direction] . DF 0, DI SI .

LAHF [ Load Flags into AH ] . FLAGS , SF (7 ), ZF (6 ), AF (4 ), PF (2 ) CF (0 ). 1 1, 3 5 - 0.

SAHF [Store AH into Flags] . SF, ZF, AF, PF CF 7, 6, 4, 2 0 . 1, 3 5 .

CLI [ CLear Interrupt ] . IF 0. .

STI [ SeT Interrupt ] . IF 1, CLI.

.

OF, SF, ZF CF , DF .

PUSHF POPF.

PUSHF [ PUSH Flags ] FLAGS ( SP 2).

POPF [ POP Flags ] (POPF) FLAGS ( SP 2).


3.

.

( flat ). , , 16- , .

( SEGMENT ENDS).

SEGMENT ENDS.

_ segment readonly . ''..._ ends

, , .

SEGMENT .

READONLY. , MASM , . .

. , . :

BYTE ;

WORD ;

DWORD , 4;

PARA , 16 ( );

PAGE , 256.

.

. :

- PUBLIC ( MEMORY) , , ;

- STACK , PUBLIC, , , STACK, ;

- COMMON , , , , , PUBLIC STACK, ;

- AT , . , AT, , 16. : segment at 40h , 0400h. , , ;

- PRIVATE ( ) .

. USE16 USE32. , USE16, 64 , 16-. , 32- 32- , . USE32 4 , 32-. , USE16 , .MODEL .386 .

, . , PRIVATE, .

( ) - .

(CS, DS, SS, ES, FS, GS). .

Intel .

DS,ES,GS,FS , .

CS [Code Segment] , , , , , , . , , , .. CS.

SS [Stack Segment] .

ASSUME.

assume :...

ASSUME , . , , SEG NOTHING, ASSUME . , , .

GROUP.

_ group _...

, , , . ( , SEG), .


4.

( ).[ 16 ]

, .

. . , , AX BX,

mov ax,bx

. ( , ) ,

mov ax,2 AX 2. . , , . , , ES, 0001, mov ax,es:0001 AX. , , . , , ES, word_var , mov ax,es:word_var word_var . DS, , DS . .

. , . , AX , DS, BX: mov ax,[bx] ( BX, SI, DI BP)

. : mov ax,[bx+2] | mov ax,[bp]+2 | mov ax,2[bp] AX , , DS, 2 , , BX. ( BX, BP, SI, DI ( ))

. , , , . : mov ax,[bx+si+2] | mov ax,[bx][si]+2 | mov ax,[bx+2][si] | mov ax,[bx][si+2] | mov ax,2[bx][si] AX , , BX SI, 2. BX + SI, BX + DI, BP + SI BP + DI. , , .


5.

.

, . .

(ORG, ALIGN EVEN).

org

. ORG 100h COM, 100h.

align

. . , NOP.

even

EVEN , NOP, . , , , . BYTE, .

CS IP.

CS [Code Segment] . , , , , , , .

IP [Instruction Pointer] ( ), , - . , , , .. CS IP.


6.

.

.MODEL

.model , ,

:

>TINY [] , 64 . ;

>SMALL [] , ( , ). ;

>COMPACT [] , , ( );

>MEDIUM [] , , , ;

>LARGE HUGE [ ] , ;

>FLAT [] , TINY, 32- , , , , , 4 .

, C, PASCAL, BASIC, FORTRAN, SYSCALL STDCALL. , , .

, NEARSTACK ( ) FARSTACK. .

. .

, , SEGMENT ASSUME. , , , ENDS , .

.CODE

.code _

_TEXT segment word public CODE

TINY, SMALL COMPACT

name_TEXT segment word public CODE

MEDIUM, HUGE LARGE (name , ). .CODE , , , NAME_TEXT.

.stack

.STACK

STACK segment para public stack

. 1 .

.data

_DATA segment word public DATA.data?

:

_BSS segment word public BSS

, , .

.const

:

CONST segment word public CONST

, .

.fardata _

:

_ segment para private FAR_DATA

, , . , FAR_DATA.

.fardata? _

:

_ segment para private FAR_BSS

FARDATA, . , FAR_BSS.

, .DATA,.DATA?,.CONST,.FARDATA .FARDATA?, , .STACK, FARSTACK, .CODE TINY FLAT FLAT DGROUP . DS ( SS, FARSTACK, CS TINY) , ASSUME.


7.

. .

, , . , , (, , ..), , . :

_ d*

D* :

DB ;

DW (2 );

DD (4 );

DF 6 ( 16- : 32- );

DQ (8 );

DT 10 (80- , FPU).

, ( ), ? DUP, . , .

?, . , DUP, DUP (). , :

table_512w dw 512 dup(?)

512 , table_512w. DUP , , DUP.

.

text_string db 'Hello world!'

12 ASCII- Hello world!, text_string , mov al,text_string AL 48h ( H).

 

. , 10- (0 - , 1 - ). DT. , . , , . , . , H, , - . . "-", , H. 20 . 80, , . , -1234 , :

number DT 80000000000000001234H

 

 


8.

(ASCIIZ-) .

String_ASCIIZ db Hello World,0

String_ASCII_with_ counter db 11,Hello World

.

D

.

D


9.

, , . . .

.

STRUC .

struc ends

, , . :

<>

, . (). :

point struc; x dw 0; y dw 0; 0,0,0z dw 0color db 3 dup(?); point endscur_point point <1,1,1,255,255,255>; mov ax,cur_point.x; "x"

, . ().

color struc; color.red db?green db?blue db?color endspoint strucx dw 0y dw 0z dw 0clr color <>point ends cur_point point <> mov cur_point.clr.red,al; ; cur_point.

.

, .

union ends

, , , . , , , , . . .

.

, . 8, 16 32 . , .

RECORD _

_ : _: = [,_: = ]

.


10.

.

, , , .

, , .

: 2 + 2 , (2 2) +. , . , 2 + 2 4.

, , , , .

<> ( ). , , , , :

message1 equ <foobar>

() ( ). , , . mov al, 2*(3+4); mov al,14

: + (), (), * (), / ( ), MOD ( ). . mov al,90 mod 7; mov al,6

, , .

: AND (), NOT (), OR (), XOR ( ), SHL ( ), SHR ( ). .

mov ax,1234h AND 4321h; mov ax,0220h

: EQ (), GE ( ), GT (), LE ( ), LT (), NE ( ). , , ..errnz $ gt 65535; 64

:

SEG ;

OFFSET ;

THIS (MASM TASM);

PTR ;

LARGE 32- (TASM WASM);

SMALL 16- (TASM WASM);

SHORT 8- .

SEG OFFSET :

mov dx, offset msg; DX msg

THIS , :

mov al, this byte-1; AX .

PTR , , :

mov dword ptr [si],0; 4 DS:SI

LARGE, SMALL SHORT , :

jmp large dword ptr old_address; old_address 32- jmp small dword ptr old_address; old_address 16- 16- .jmp short short_label; short_label , +128/-127 , JMP.

:

. () ;

: () ;

[] ( ) ;

? ;

DUP () .

LENGTH table dw 0,1,2,3,4,5,6,7; 8 .table_count = length table; table_count = 8SIZE table_size = size table; table_size = 16

.

, , , , .


11.

(MOV, XCHG, LEA, LDS, LSS, LES, LFS, LGS, XLATB, PUSH, POP, IN, OUT, CBW, CWD). , .

MOV , ; : .

. , . MOV , mov ax,bx = b; , , , . MOV : ( ), , ( , ). , ( CS) . , . MOV , MOV ( ) PUSH/POP.

XCHG 1, 2; : .

2 1, 1 2. XCHG .

xchg eax,ebx; , :; temp = eax; eax = ebx; ebx = temp; xchg al,al; LEA , ; : . lea mov , . , , lea , ( ) , .lds ,; : ds; lss ,; : ss.les ,; : es; lfs ,; : fs;lgs ,; : gs; . , , . , , . . , , . .XLATB; AL ES:BX , AL. XLATB ASCII- :

mov al,0Ch

mov bx, offset htable

xlatb

, ES,

htable db "0123456789ABCDEF"

AL 0h, ASCII- ѻ. , , , DAS, XLAT .

PUSH ; : .

. , , . SS:[SP] SP (2 4).

POP ; : .

, , SP 2 4 . POP , PUSH. , , CS ( CS , RET), .

IN , : .

-, , . AL, . , DX, 255.

OUT , : .

(AL, ) -, . , DX.

CBW; : .

CBW , AL, , , :

mov al,0F5h; AL = 0F5h = 245 = -11

cbw; = 0FFF5h = 65 525 = -11

CWD; : .

CWD A , ( 0 15) , ( 16 31) DX. DX , , .


12.

(ADD, ADC, SUB, SBB, CMP, MUL, IMUL, DIV, IDIV, NEG). , .

, , OF, SF, ZF, AF, CF, PF .

ADD , .

, , . , , , , . ADD , , CF ( ), OF ( ) SF ( ), , .

ADC , .

ADD, , , F.

SUB , .

. , , , , . SUB , , .

SBB , .

SUB, , CF.

CMP , .

. (, ) ( ; ), , CF, OF, SF, ZF, AF PF.

MUL - .

( ) AL, , ( ) , DX:AX, . (, DX) ( ), CF OF 0, 1. (SF, ZF, AF PF) .

IMUL .

IMUL ,

IMUL , 1, 2

, :

>IMUL : ( ) AL, ( ), , DX:AX .

>IMUL , : (, ) (), .

>IMUL ,1,2: 1 ( ) 2 (), ().

, , . , . OF CF , , , ( ) ( ). SF, ZF, AF PF IMUL .

DIV .

AL, ( ) ( ) AL, , , DX . , . CF, OF, SF, ZF, AF PF , #DE ( ) 0 .

IDIV .

AL, ( ) ( ) AL, , , DX . , , . CF, OF, SF, ZF, AF PF , #DE ( ) 0 .

NEG .

, ( ), . , . , CF 0, 1. (OF, SF, ZF, AF, PF) .


13.

(AND, OR, XOR, NOT, TEST). , .

AND , .

Ȼ ( ) (, ; ) . 1, 1, 0 . AND , ,

and al,00001111b

AL, . OF CF , SF, ZF PF , AF .

OR , .

Ȼ ( ) (, ; ) . 0, 0, 1 . OR , ,

or al,00001111b

, AL 1. OR OF CF , SF, ZF PF , AF .

XOR , .

Ȼ ( ) (, ; ) . 1, , , . XOR , :

xor ,;

xor ,b

xor b,

xor ,b;

,

mov ax,0

xchg ax,bx

NOT .

( ), , 1, , 1, 0. .

TEST , .

Ȼ ( ) (, ; ) SF, ZF PF , ( OF CF , AF ). TEST, , (Jcc), (CMOVcc) (SETcc).


14.

(SHL, SHR, SAL, SAR, RCL, RCR, ROL, ROR). , .

SHL , - ;

SHR , - ;

SAL , - ;

SAR , - .

( ) ( ) ( ) ( CL, , 0 31), 1 ( ) ( ) 2. , 0010b (2) 1 0100b (4). SAL SHL ( ) CF, , . SHR : CF, 1 , . 2. SAR SHR, , , , , 11111100b (-4) 11111110b (-2). SAR, , 2, , IDIV, , . , -9 4 IDIV, -2 ( -1), -9 2, -3. 1 1, .

1 OF: SAL/SHL 1, ( ), 0, . SAR OF 0, SHR OF . OF . SF, ZF, PF , AF ( , , ).

8086 1 CL , 5, 80186 .

RCL , ;

RCR , ;

ROL , ;

ROR , .

( ) , ( CL, , 0 31). 1 ROR (ROL) () , (), () . RCR RCL , CF , .

 


15.

- (, DAA, AAS, DAS, AAD, ). , .

AAA ASCII- .

- AL. , 1. . , 05 06 000Bh, 0101h ( 11). CF OF 1, AL , . OF, SF, ZF PF .

DAA BCD- . [BCD=Binary-Coded Decimal=- ]

ADD (ADC, INC XADD) AL - , AL - , . , AL 19h,

inc al

daa

, AL 20h ( 1Ah, INC). AF CF , , SF, ZF PF , OF .

AAS ASCII- .

- AL SUB SBB. , 1. CF OF 1, AL , . OF, SF, ZF PF .

DAS BCD- .

SUB (SBB DEC) AL - , AL - , . , AL 20h,

dec al

das

, AL 19h ( 1Fh, DEC).

AF CF , , SF, ZF PF , OF .

AAD -ASCII- .

- , , , . , 25 5:

mov ax,0205h; 25

mov bl,5

aad; 19h

div bl; = 0005

SF, ZF PF , OF, AF CF .

AAM ASCII- .

- , MUL, - ( AL). :

mov al,5

mov bl,5; 5 5

mul bl; - 0019h

aam; 0205h

SF, ZF PF OF, AF CF .


16.

. (Jcc) (JMP) . ., .

JMP .

JMP , - . ( , , ), , .

:

> short ( ) -127 +128 JMP;

> near ( ) , JMP;

> far ( ) . , , CS;

> . , .

short near JMP IP, . , IP, MOV. JMP , IP, . , .

, ( ), JMP IP CS, 16 CS 16 IP.

J cc .

, ( short near), . , , Jcc , , . , , JE, , . Jcc 8- .

Jcc , , , Jcc JMP, , :

cmp ,0 jne local_1 jmp far_label; , = 0ll_1: . () . , , , . , , , . , . , . , . code segment jmp DS:go_addr; FF 26 dddd go:; code ends data segment go_addr dw go; () data ends () . , , , 2 , ( ) . . : codel segment assume CS:codel,DS:data jmp DS:go_addr; FF 2E dddd codel ends code2 segment assume CS:code2 go:; code2 ends data segment go_addr dd go; data ends LOCALS . . , , , . TASM "@@" , LOCALS. , MODEL STACK . , , , .
17. (LOOP). . LOOP 1 short ( , -128 +127 LOOP), . , . , ADD 10 :

mov cx,0Ah

loop_start: add ax,cx

loop loop_start

LOOP

dec ecx

jz

LOOP .

(LOOPE/LOOPZ LOOPNE/LOOPNZ). LOOPE - , LOOPZ - , LOOPNE - , LOOPNZ - , , short, . LOOPE LOOPZ ZF, LOOPNE LOOPNZ ZF . LOOPcc , ZF ( ) . , DS:SI ES:DI (. ), ( = 0) ASCII- 13 ( ): mov cx,str_lengthmove_loop: stosb lodsb cmp al,13 loopnz move_loop JCXZ. JCXZ - , = 0 , CX . . , , , LOOPNE, = 0, 65 535 .
18.

(CALL) (RET) . .

CALL - .

, . ( ), , . , , , CALL. , JMP, . IP, CALL , IP , . CALL , , , . CALL , V86 , CS IP JMP.

RET - .

RETN ( , ) IP, , , CALL. RETF IP CS, . RET, RETN RETF , , . RET , , , , .

( PROC ENDP).

, , , .. CALL, , RET. , .

proc USES ; TASM proc USES ; MASM/WASM... ret endp PROC . NEAR FAR, , RET RETN RETF. , NEAR TINY, SMALL COMPACT. .MODEL, . PROC , . , . USES , . PUSH, RET POP,


<== | ==>
|
:


: 2015-10-01; !; : 857 |


:

:

.
==> ...

1414 - | 1386 -


© 2015-2024 lektsii.org - -

: 0.293 .