Laborator 1 - Tehnici de Programare Assembler

Previzualizare laborator:

Extras din laborator:

Exemplu 1. Acest program prezinta citeva tehnici de adresare specifice procesoarelor din familia 8086/88:

title ex1

.model small

.stack 10h

.data

alfa dw 3 dup(?)

.code

begin:

mov ax,@data ;Initializarea registrului

mov ds,ax ;de segment ds

mov ax,17 ;Adresarea imediata a operandului sursa care este o constanta zecimala

mov ax,10001b ;Sursa este o constanta binara

mov ax,11h ;sursa este o constanta hexazecimala

mov alfa,ax ;Adresarea directa a operandului destinatie

mov cx,ax ;Interschimba continuturilor

mov ax,bx ;registrelor ax si bx

mov bx,cx

xchg ax,bx ;Acelasi effect cu secventa anterioara

mov si,2

mov alfa[si],ax ;Adresare relative cu registrul si a operandului destinatie

mov si,2

mov bx,offset alfa ;Adresarea imediata a operandului sursa (adresa variabilei alfa) ; ;datorita operandului OFFSET

lea bx,alfa ;Aceasta instructiune are acelasi effect cu cea anterioara cu toate ca sursa este ;adresata direct

mov cx,[bx][si] ;Adresare bazata indexata a sursei

mov cx,alfa+2 ;Aceasta instructiune are acelasi efect cu cea anterioara, sursa fiind insa adresata ;direct

mov cx,alfa[2] ;Notatii echivalente pentru

mov cx,[alfa+2] ;instructiunea anterioara

mov di,4

mov byte ptr [bx][di],55h ;Se va folosi aceasta varianta cind se doreste o adresare la nivel de ;octet

mov byte ptr alfa+4,55h ;Aceasta instructiune are acelasi efect cu cea anteriora, destinatiea fiind insa ;adresata direft. Deci alfa este definit cu DW, operatiea este realizata la nivel de ;octet.

mov si,2

mov bx,3

mov alfa[bx][si],33h ;Adresare bazata indexata relative a operandului destinatie

mov alfa[bx+si],33h ;Notatii echivalente pentru

mov [alfa+bx+si],33h ;instructiunea anterioara.

mov [bx][si].alfa,33h

mov [bx][si]+alfa,33h

end begin

Exemplu 2: Se considera un vector de trei componente fiecare componenta avind dimensiunea de un cuvint. Sa se permute circular elementele vectorului cu o pozitzii la stinga.

title ex2

dosseg

.model small

.stack 10h

.data

vect dw 100h,200h,300h

.code

start: mov ax,@data ;Initializarea registrului

mov ds,ax ;de segment ds

mov dx,vect ;Salvare in dx a primei componente a vectorului

mov ax,vect+2 ;Transfera a doua

mov vect,ax ;componenta in prima

mov ax,vect+4 ;Transfera a treia

mov vect+2,ax ;componenta in a doua

mov vect+4,dx ;Transfera prima componenta in ultima.

end start

Exemplu 3: Sa se incarce intr-o variabula pointer valoarea propriei adrese, sub forma de offset si segment.

title ex3

.model small

.stack 10h

.data

var_ptr dd ?

.code

begin: mov ax,@data ;Initializare registru

mov ds,ax ;de segment ds

mov ax,offset var_ptr ;In ax se muta adresa var_ptr

mov word ptr var_ptr,ax ;Continutul ax se depune pe operandul de tip cuvint

;Operatorul OFFSET selecteaza componenta de offset unei variabile

mov ax,seg var_ptr

mov word ptr var_ptr+2,ax

;Operatorul SEG selecteaza componenta de segment a adresei unei variabile. O transfera in ax dupa care continutul ;ax se depune pe operatorul de tip cuvint dublat.

end begin

Exemplu 4: Se considera un vector de trei componente cuvinte. Sa se introduca valoarea 55h in actetii superiosi ai elementelor vectorului.

title exe4

.model small

.stack 10h

.data

val equ 55h

vect dw 111h,222h,333h

.code

start:

mov ax,@data ;Initializarea registrului

mov ds,ax ;de segment ds

mov al,val ;Se incarca valoarea dorita in registrul al

mov byte ptr vect[1],al ;Se transfera

Observații:

UNIVERSITATEA DE STAT DIN MOLDOVA

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Laborator 1 - Tehnici de Programare Assembler.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
9/10 (2 voturi)
Nr fișiere:
1 fisier
Pagini (total):
12 pagini
Imagini extrase:
12 imagini
Nr cuvinte:
3 096 cuvinte
Nr caractere:
16 160 caractere
Marime:
21.23KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Laborator
Domeniu:
Calculatoare
Predat:
la facultate
Materie:
Calculatoare
Profesorului:
Cerbu O
Sus!