Sunteți pe pagina 1din 14

Arhitectura microprocesoarelor ndrumar de laborator

Corneliu Burileanu

Lucrarea nr. 2

LUCRAREA Nr. 2 INSTRUCIUNI DE TRANSFER DE DATE I OPERAII CU IRURI PENTRU MICROPROCESOARELE COMPATIBILE INTEL x86 (IA-32) N MODUL REAL 1. Scopul lucrrii
Scopul prezentei lucrri este familiarizarea cu modurile de adresare, cu instruciunile de transfer de date elementare i structurate specifice microprocesoarelor compatibile Intel (IA-32) funcionnd n modul real (particulariznd pentru Intel 8086), precum i prezentarea unor directive de asamblare.

2. Memoriu de instruciuni
Convenii: s: d: AL|AX: mem: surs; destinaie; acumulatorul implicit de 8 sau de 16 bii; coninutul unei locaii de memorie sau coninutul a dou locaii de memorie succesive, adresate cu unul dintre modurile de adresare permise pentru memoria de date, cu excepia adresrii imediate; coninutul a dou locaii de memorie succesive adresate cu unul dintre modurile de adresare permise pentru memoria de date, cu excepia adresrii imediate; coninutul a patru locaii de memorie succesive adresate cu unul dintre modurile de adresare permise pentru memoria de date, cu excepia adresrii imediate; un registru oarecare de 8 sau de 16 bii, exceptnd registrele segment; un registru de 8 bii; un registru de 16 bii, exceptnd registrele segment; un registru segment (CS, SS, DS, ES); un operand de 8 sau 16 bii care face parte din formatul instruciunii (adresare imediat); un operand de 8 bii care face parte din formatul instruciunii (adresare imediat);
1

mem16:

mem32:

r | ri | rj: r8: r16: rs: data: data8:

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu

Lucrarea nr. 2

data16: disp8: disp16: adr: adr8: adr32: port: AE:

un operand de 16 bii care face parte din formatul instruciunii (adresare imediat); deplasament pe 8 bii (face parte din formatul instruciunii); deplasament pe 16 bii (face parte din formatul instruciunii); o adres complet (pe 16 bii); o adres scurt (pe 8 bii); o adres logic exprimat pe patru octei succesivi; adresa (numrul de ordine) unui port de intrare/ieire, pe 8 bii; adresa efectiv.

Pentru fanioane: x: 1: 0: ?: blanc:

fanionul se schimb n conformitate cu rezultatul operaiunii; fanionul este setat necondiionat; fanionul este resetat necondiionat; fanionul este afectat impredictibil; fanionul nu este afectat.

Pentru calculul numrului de stri : cAE - timpul de calcul al adresei efective, i anume - adresare direct: AE=disp8|disp16 6 stri; - adresare indexat: AE=(SI)|(DI)+ disp8|disp16 9 stri; - adresare indirect implicit: AE=(SI)|(DI 5 stri; - adresare relativ la baz direct, fr deplasament: AE=(BX) 5 stri; - adresare relativ la baz direct, cu deplasament: AE=(BX)+disp8|disp16 9 stri; - adresare relativ la baz indexat: AE=(BX)+(SI)|(DI)+disp8|disp16 12 stri; - adresare relativ la baz implicit: AE=(BX)+(SI)|(DI) 8 stri; - adresare n stiv direct, fr deplasament: AE=(BP) 5 stri; - adresare n stiv direct, cu deplasament: AE=(BP)+disp8|disp16 9 stri; - adresare n stiv indexat: AE=(BP)+(SI)|(DI)+disp8|disp16 12 stri; - adresare n stiv implicit: AE=(BP)+(SI)|(DI) 8 stri; - pentru redirecionarea segmentului se mai adaug 2 stri.

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu

Lucrarea nr. 2

2.1. Instruciuni de transfer de date


Copiaz sursa MOV d,s la destinaie OF DF IF TF SF ZF AF PF CF

Descrierea formal a semanticii, n general: (d) (s).


Descrierea formal a semanticii (BX) ALFA ((SS)0H + (BP) + (DI)) 55H (AL) ((DS)0H + (SI)), (AH) ((DS)0H + (SI) + 1) mem, AL|AX MOV [BX+SI+10H],AL ((DS)0H + (BX) + (SI) + 10H) (AL) r1, r2 MOV AX,SP (AX) (SP) r, mem MOV BH,[BX+1000H] (BH) ((DS)0H + (BX) + 1000H) mem, r MOV [2000H],DL ((DS)0H + 2000H) (DL) rs*, r16 MOV ES,CX (ES) (CX) rs*, mem16 MOV SS,[DI] (SS) ((DS)0H +(DI)+1) ((DS)0H + (DI)) r16, rs MOV CX,CS (CX) (CS) mem16, rs MOV [SI],DS ((DS)0H +(SI)+1) ((DS)0H+(SI)) (DS) * registrul segment nu poate fi CS Operanzi Exemple
r, data mem, data AL|AX, mem MOV MOV MOV BX,ALFA [BP+DI],55H AX,[SI]

PUSH

Transfer n stiv de la surs

OF DF IF TF SF ZF AF PF CF

Descrierea formal a semanticii, n general: (SP) (SP) - 2 ((SS)0H + (SP) + 1) (s)h ((SS)0H + (SP)) (s)l
Operanzi
r16 mem16 PUSH PUSH

Exemple
BP [DI+100H]

rs

PUSH

SS

Descrierea formal a semanticii (SP) (SP) - 2 ((SS)0H+(SP)+1) ((SS)0H+(SP)) (BP) (SP) (SP) - 2 ((SS)0H+(SP)+1) ((DS)0H +(DI) +101H) ((SS)0H + (SP)) ((DS)0H +(DI) +100H) (SP) (SP) - 2 ((SS)0H+(SP)+1) ((SS)0H+(SP)) (SS)

PUSHF

Transfer n stiv registrul de fanioane

OF DF IF TF SF ZF AF PF CF

Descrierea formal a semanticii:

(SP) (SP) - 2 ((SS)0H + (SP) + 1) (F)h ((SS)0H + (SP)) (F)l


3

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu Transfer din stiv la destinaie

Lucrarea nr. 2

OF DF IF TF SF ZF AF PF CF

POP d

Descrierea formal a semanticii, n general: (d)l ((SS)0H + (SP)) (d)h ((SS)0H + (SP) + 1) (SP) (SP) + 2
Operanzi
r16 POP

Exemple
CX

mem16

POP

[F0F0H]

rs (nu CS)

POP

SS

Descrierea formal a semanticii (CL) ((SS)0H + (SP)) (CH) ((SS)0H + (SP) + 1) (SP) (SP) + 2 ((DS)0H +F0F0H) ((SS)0H + (SP)) ((DS)0H +F0F1H) ((SS)0H + (SP) + 1) (SP) (SP) + 2 (SS) ((SS)0H+(SP)+1) ((SS)0H+(SP)) (SP) (SP) + 2

POPF

Transfer din stiv registrul de fanioane

OF DF IF TF SF ZF AF PF CF x x x x x x x x

Descrierea formal a semanticii:

(F)l ((SS)0H + (SP)) (F)h ((SS)0H + (SP) + 1) (SP) (SP) + 2

XCHG

d,s

Transfer sursa la destinaie i destinaia la surs

OF DF IF TF SF ZF AF PF CF

Descrierea formal a semanticii, n general: (d) (s)


Operanzi
r16 r1, r2 r, mem XCHG XCHG XCHG XCHG

Exemple
DX AX este NOP CH,CL BX,[BX+DI]

Descrierea formal a semanticii


(AX) (DX) (AX) (AX) NOP (CH) (CL) (BL) ((DS)0H + (BX) + (DI)) (BH) ((DS)0H + (BX) + (DI) + 1)

OF DF IF TF SF ZF AF PF CF XLAT Translateaz

Descrierea formal a semanticii:

(AL) ((DS)0H + (BX) + (AL))

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu ncarc(AH)cu octetul inferior al registrului F

Lucrarea nr. 2

OF DF IF TF SF ZF AF PF CF

LAHF

Descrierea formal a semanticii:

(AH) (F)l

SAHF

ncarc octetul inferior al registrului F cu (AH)

OF DF IF TF SF ZF AF PF CF x x x x

Descrierea formal a semanticii:

(F)l (AH)

IN

d,s

Transferul unui octet sau cuvnt de la un port n acumulator

OF DF IF TF SF ZF AF PF CF

Descrierea formal a semanticii, n general: (AL) | (AX) (s).


Operanzi
AL|AX, port AL|AX, DX IN IN

Exemple
AL,0FH AX,DX

Descrierea formal a semanticii


(AL) (0FH) (AX) ((DX) + 1) ((DX))

OUT

d,s

Transferul unui octet sau cuvnt din acumulator la un port

OF DF IF TF SF ZF AF PF CF

Descrierea formal a semanticii, n general: (d) (AL) | (AX).


Operanzi
port, AL|AX DX, AL|AX OUT OUT

Exemple
10H,AL DX,AX

Descrierea formal a semanticii


(10H) (AL) ((DX) + 1) ((DX)) (AX)

LDS

d,s

ncarc un registru de 16 bii i reg. segment de date

OF DF IF TF SF ZF AF PF CF

Descrierea formal a semanticii, n general: (r16) (mem32)l (DS) (mem32)h


Operanzi
r16, mem32 LDS

Exemple
SI,[10H]

Descrierea formal a semanticii


(SI) ((DS)0H + 11H) ((DS)0H + 10H) (DS) ((DS)0H+13H) ((DS)0H + 12H)

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu ncarc un registru de 16 bii i registrul ES

Lucrarea nr. 2

OF DF IF TF SF ZF AF PF CF

LES

d,s

Descrierea formal a semanticii, n general: (r16) (mem32)l (ES) (mem32)h


Operanzi
r16, mem32 LES

Exemple
DI,[DI]

Descrierea formal a semanticii (DI) ((DS)0H +(DI) +1) ((DS)0H +(DI)) (ES) ((DS)0H+(DI)+3)((DS)0H+(DI)+2)

LEA

d,s

ncarc un registru de 16 bii cu o adres efectiva

OF DF IF TF SF ZF AF PF CF

Descrierea formal a semanticii, n general: (r16) AE a locaiei mem


Operanzi
r16, mem16 LEA

Exemple

Descrierea formal a semanticii

BX,[BX+DI+10H] (BX) (BX) + (DI) + 10H adresa fizic: AF = (DS)0H +(BX) +(DI) +10H adresa efectiv : AE = (BX) +(DI) +10H

Not: Singurele instruciuni care afecteaz fanioanele sunt POPF i LAHF.

2.2. Operaii de transferuri de iruri


Pentru aceste instruciuni sursa i destinaia se gsesc implicit astfel: sursa - n segmentul format cu DS, cu adresa efectiv SI; destinaia - n segmentul format cu ES, cu adresa efectiv DI. Operaiile cu iruri permit urmtoarele prefixe de repetabilitate:

REP

Repet necondiionat primitiva de operaie cu iruri pe care o precede

OF DF IF TF SF ZF AF PF CF

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu

Lucrarea nr. 2

Operanzi

REPE | REPZ

Operanzi

REPNE|REPNZ

Operanzi

Octei Exemple REP MOVSB 9 1 Repet ct timp OF DF IF TF SF ZF AF PF CF "egal" | ct timp "zero" primitiva CMPS sau SCAS Nr.de stri Octei Exemple REPE CMPSB 9 1 Repet ct timp OF DF IF TF SF ZF AF PF CF "ne-egal"| ct timp "non-zero" primiti-va CMPS sau SCAS Nr.de stri Octei Exemple REPNE SCASW 9 1

Nr.de stri

Primitivele operaiilor de transferuri de iruri sunt:


Transfer o compoOF DF IF TF SF ZF AF PF CF nent a irului surs n irul destinaie Operanzi Nr.de stri Octei Exemple MOVSB ; pe octei 18 1 MOVSW ; pe cuvinte 18 1 Obs.: Primitiva MOVS poate fi nsoit de prefixul de repetabilitate REP; acesta adaug 9 stri. MOVS

Descrierea formal a semanticii: ((ES)0H + (DI)) ((DS)0H + (SI)) [((ES)0H + (DI) + 1) ((DS)0H + (SI) + 1)] if (DF) = 0 then (DI) (DI) + N (SI) (SI) + N else (DI) (DI) - N (SI) (SI) - N cu N=1 pentru octet i N=2 pentru cuvnt.

LODS

Operanzi

ncarc componenOF DF IF TF SF ZF AF PF CF tele unui ir n acumulator Nr.de stri Octei Exemple LODSB ; pe octei 12 1 LODSW ; pe cuvinte 12 1

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu

Lucrarea nr. 2

Descrierea formal a semanticii: (AL) ((DS)0H + (SI)) | (AX) ((DS)0H + (SI) + 1)((DS)0H + (SI)) if (DF) = 0 then (SI) (SI) + N else (SI) (SI) - N cu N=1 pentru octet i N=2 pentru cuvnt.

ncarc componentOF DF IF TF SF ZF AF PF CF le unui ir din acumulator Operanzi Nr.de stri Octei Exemple STOSB ; pe octei 11 1 STOSW ; pe cuvinte 11 1 Obs.: Primitiva STOS poate fi nsoit de prefixul de repetabilitate REP; acesta adaug 9 stri. STOS

Descrierea formal a semanticii: ((ES)0H + (DI)) (AL) | ((ES)0H + (DI) + 1) ((ES)0H + (DI)) (AX) if (DF) = 0 then (DI) (DI) + N else (DI) (DI) - N cu N=1 pentru octet i N=2 pentru cuvnt.

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu

Lucrarea nr. 2

3. Directive de asamblare i cuvinte rezervate n TASMB


ORG ASSIGN LOCATION COUNTER Sintaxa: ORG adr. Efect: instruciunea urmtoare va fi plasat la adresa adr. DIRECTIV

DB DEFINE BYTE DIRECTIV Sintaxa: [simbol] DB data,[data,[data,.....]]. Efect: rezerv spaiu, sub forma de byte, n memorie pentru date. Simbol, dac exist, va avea ca valoare adresa la care a fost plasat primul byte. DW DEFINE WORD DIRECTIV Sintaxa: [simbol] DW data,[data,[data,....]]. Efect: rezerv spaiu, sub form de word, n memorie pentru date. Simbol, dac exist, va avea ca valoare adresa la care a fost plasat primul word. EQU CREATE SYMBOL DIRECTIV Sintaxa: simbol EQU expresie Efect: asamblorul atribuie lui simbol valoarea obinut prin evaluarea expresiei. Expresie poate fi o data, sau o combinaie de data prin semnele + si -. Odat folosit EQU pentru un simbol, acest simbol nu mai poate fi modificat n cursul programului. OFFSET OFFSET OF EXPRESSION Sintaxa: OFFSET simbol. Efect: obine adresa pentru simbol. BYTE PTR CHANGE TYPE OF VARIABLE Sintaxa: BYTE PTR simbol Efect: convertete simbol n tip byte. WORD PTR CHANGE TYPE OF VARIABLE Sintaxa: WORD PTR simbol Efect: convertete simbol n tip word. OPERATOR

OPERATOR

OPERATOR

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu

Lucrarea nr. 2

4. Mod de lucru recomandat


Pentru exersarea instruciunilor de transfer se propun n anex trei programe, astfel: - Programul 1 reprezint o serie de instruciuni MOV care transfer date ntre registre i ntre registre i memorie. - Programul 2 realizeaz salvarea unui registru i a unei locaii de memorie n stiv, interschimbul datelor i apoi refacerea registrului i a locaiei de memorie. Dup aceasta, programul seteaz, conform acumulatorului, indicatorii de condiii i i modific individual. - Programul 3 iniializeaz zone de memorie cu texte, pe care le va copia n alte zone de memorie prin intermediul instruciunilor de transferuri de iruri. Se recomand editarea i asamblarea fiecrui program propus i apoi, cu ajutorul utilitarului AFD, execuia instruciune cu instruciune urmrindu-se modificarea registrelor i a memoriei. Observaie: cifrele care apar la nceputul fiecrei linii nu fac parte din program, fiind nite numere ghid pentru urmrirea programului.

5. Desfurarea lucrrii
5.1. Se lanseaz turbo-asamblorul TASMB i se editeaz textul din Anexa 1 sub numele prog1.asm. 5.2. Se asambleaz programul pe disc (cu opiunea de asamblare F8-com file), obinndu-se fiierul prog1.com. 5.3 Se obine lista simbolurilor (comanda S) i se noteaz adresele acestora. 5.4. Se prsete turbo-asamblorul. 5.5. Se lanseaz debugger-ul AFD i se ncarc fiierul prog1.com (cu comanda L prog1.com). 5.6. Se execut programul pas cu pas (prin folosirea succesiv a comenzii F2) i se urmrete evoluia locaiilor de memorie sau registrelor implicate, conform indicaiilor din Anexa 1. 5.7. Se repet punctele 5.1. - 5.6. pentru programele 2 i 3 (prog2 i prog3) din Anexele 2 i 3.

10

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu

Lucrarea nr. 2

ANEXA 1
Programul 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 org mov mov mov mov mov mov mov mov mov mov mov mov mov mov 100h bx,cs ds,bx ax,const dx,ax ;seteaza segmentul de ;date egal cu segmentul de cod ;imediat in acumulator ;din acumulator in ;registrul DX var,89abh ;imediat in memorie ax,var ;din memorie in acumulator ax,[var] ;adresare directa ax,140h ;imediat in acumulator ax,[140h] ;din memorie in acumulator byte ptr var,ah ;din acumulator in memorie ;- adresare directa bx,offset var ;incarca in BX adresa lui var bp,bx ;incarca BP cu BX ;- adresare tip registru si,4 ;imediat in registrul index SI al,[bx+si-2] ;din memorie in acumulator ;- adresare relativa la baza, ;indexata di,2 ;imediat in registrul index DI [bp+di],dl ;din registrul DH in memorie ;- adresare in stiva implicita [bp][si],al ;din registrul AL in memorie ;- adresare in stiva implicita cuv,11h ;incarca in locatia de memorie ;cu adresa cuv octetul 011h ;-adresare imediata word ptr cuv,3456h;incarca in locatiile de memorie ;cu adresele cuv si cuv+1, ;octetii 034h si 056h ;- adresare imediata 20h

16 17 18 19

mov mov mov mov

20

mov

21 22 var 23 const 24 cuv

int dw equ db

0 0abcdh 0

Elemente de observat pentru fiecare dintre urmtoarele instruciuni (n AFD se recomand fixarea zonei doi de afiare a memoriei la adresa DS:13F): 2-3 4 6 7-10 11 Vezi CS, BX i DS. Vezi AX i DX. Vezi memoria la adresa lui var. Vezi AX i codul instruciunilor. Vezi memoria la adresa lui var.

11

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu

Lucrarea nr. 2

12-13 14 15 16 17-20

Vezi BX i BP. Vezi SI. Vezi memoria la adresa BX+SI-2 i AL. Vezi DI. Vezi DL, AL, DX i memoria.

ANEXA 2
Programul 2
1 2 3 4 org mov mov mov 100h bx,cs ds,bx temp,0aabbh ;seteaza segmentul de date ;egal cu segmentul de cod ;pune in locatiile de memorie ;cu adresa temp si temp+1 ;cuvantul 0aabbh ;pune in registrul DX ;cuvantul 0ccddh ;pune in stiva continutul ;lui DX si al locatiilor de ;memorie cu adresa temp ;si temp+1 ;interschimba continutul lui DX ;cu cel al locatiilor de memorie ;reface din stiva continutul lui ;DX si al locatiilor de memorie ;cu adresa temp si temp+1 ;incarca acumulatorul cu 0d5h ;incarca fanioanele cu ;continutul lui AH ;se actioneaza asupra ;fanionului CF: ;clear, set, complement ;incarca in AH fanioanele

5 6 7

mov push push

dx,0ccddh dx temp

8 9 10 11 12 13 14 15 16 17 18 temp

xchg pop pop mov sahf clc stc cmc lahf int dw

dx,temp temp dx ah,11010101b

20h ?

Elemente de observat pentru fiecare dintre urmtoarele instruciuni (n AFD se recomand fixarea zonei doi de afiare a memoriei la adresa DS:124): 4-5 6-7 8 9-10 11-12 13-15 16 Vezi DX i memoria la adresa temp. Vezi SP i stiva. Vezi DX i memoria la adresa temp. Vezi SP, DX, stiva i memoria la adresa temp. Vezi AL i fanioanele. Vezi fanionul de transport CF. Vezi fanioanele i AL.
12

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu

Lucrarea nr. 2

ANEXA 3
Programul 3
1 2 3 4 5 6 7 8 9 10 11 12 org mov mov mov mov mov mov 100h bx,cs ds,bx bx,6000h es,bx si,offset sursa di,offset dest ;seteaza segmentul de ;date egal cu segmentul de cod ;seteaza segmentul ES la 6000h

13

14 15 16 17 18 19 20 21 22 sursa db sursa1 dest

;incarca in SI, DI adresele de ;inceput ale sirurilor sursa, ;respectiv destinatie lodsb ;incarca in AL continutul ;locatiei cu adresa DS:SI stosb ;incarca in memorie la adresa ;ES:DI continutul lui AL movsb ;transfera byte din sursa movsb ;in destinatie de doua ori mov di,5+offset dest ;incarca in registrul index DI ;adresa elementului 5 ;al sirului destinatie mov si,offset sursa+5 ;incarca in registrul index SI ;adresa elementului 5 ;al sirului sursa std ;seteaza fanionul de directie DF movsw ;transfera word din sursa movsw ;in destinatie de doua ori cld ;sterge fanionul de directie DF lea si,sursa1 ;incarca in SI si DI adresa lea di,dest ;efectiva a simbolurilor ; sursa1 si dest mov cx,dest-sursa1 ;incarca in CX lungimea ;sirului sursa1 repnz movsb ;transfera sursa1 in dest int 20h 'exemplu ' ;zona de definire date. db 'test string' db 10 dup(?)

Elemente de observat pentru fiecare dintre urmtoarele instruciuni: 4-5 6-7 8-9 Vezi BX i ES. Vezi SI i DI. Vezi AL, DF, SI, DI, memoria la adresele sursa i dest. Pentru a vizualiza irul surs, se seteaz zona 1 de afiare a memoriei n segmentul format cu DS i avnd adresa efectiv dat de adresa simbolului sursa. Pentru a vizualiza irul destinaie se seteaz zona 2 de afiare a memoriei n segmentul format cu ES i avnd adresa efectiv dat de adresa simbolului dest.

13

Arhitectura microprocesoarelor ndrumar de laborator


Corneliu Burileanu

Lucrarea nr. 2

10-11 12-13 14 15-16 17 18-20 21

Vezi DF, SI, DI, memoria. Vezi SI, DI. Vezi DF. Vezi DF, SI, DI, memoria. Vezi DF. Vezi SI, DI, CX. Vezi DI, SI, memoria.

14

S-ar putea să vă placă și