Programare în Limbaj de Asamblare

Curs
8.2/10 (6 voturi)
Conține 14 fișiere: doc
Pagini : 138 în total
Cuvinte : 36728
Mărime: 405.35KB (arhivat)
Publicat de: Ernest Marinescu
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: prof. Ioan Jianu
cursuri de programare in limbaj de asamblare pe procesor INTEL 8086

Extras din curs

2. INSTRUCTIUNI ARITMETICE SI LOGICE

2.1. Instructiuni de mutare

Instructiunile de mutare realizeaza transferul datelor intre registre, intre registre si memorie, intre registre si stiva. Transferurile se pot executa intre registre de aceeasi lungime, iar la transferul intre registre si memorie lungimea este data de registrul folosit.

Instructiunile de mutare nu modifica indicatorii de conditie.

Toate mutarile se pot face pe 1,2,4 sau 8 octeti. Mutarile sunt de forma:

MOV destinatie, sursa - unde ca argumente putem avea combinatiile:

reg,reg - transfer intre registre pe 1, 2, 4 octeti

reg,const - încarcare imediata constanta intr-un registru

mem, const - încarcare imediata constanta intr-o adresa de memorie

reg,mem - încarcare continut adresa de memorie într-un registru

mem,reg - memorare continut registru într-o locatie de memorie

mem,mem - !! este o combinatie interzisa fiindca nu pot fi doua adrese în instructiune

Prin mem vom întelege o locatie de memorie specificata prin orice mod de adresare (directa, indirecta, indexata). La indexare se pot folosi numai registrele SI si DI, iar la adresarea cu baza se pot folosi numai BX si BP. La toate adresarile se foloseste un registru de segment implicit sau explicit. Registrele segment implicite sunt:

CS - pentru instructiunile de salt în program

DS - pentru toate datele utilizate

SS - pentru adresarea stivei prin SP (Stack Pointer) sau când baza este BP.

Exemple:

MOV CL,DH - reg-reg pe 1 octet unde orice combinatie este posibila

MOV SI,DX - reg-reg pe 2 octeti aproape orice combinatie este posibila

MOV EDX,EBX - reg-reg pe 4 octeti

MOV BP,3420 - încarcare imediata constanta intr-un registru pe 2 octeti

MOV ECX,3420 - încarcare imediata constanta intr-un registru pe 4 octeti

MOV b/[4200],54 - încarcare imediata const. intr-o adresa de mem. pe 1 octet

MOV w/[4200],54 - încarcare imediata const. intr-o adresa de mem. pe 2 octeti

In memorie constanta 0054 se va memora pe cei 2 octeti inversati 5400.

Inversarea se produce la orice memorare de registru si la orice citire din memorie.

MOV BX,[3450] - încarcare continut adresa de memorie intr-un reg. pe 2 oct.

MOV EBX[3450] - încarcare continut adresa de memorie intr-un reg pe 4 oct.

MOV [2400],DS - memorare continut registru într-o locatie de memorie

MOV X,DX - memorare continut reg. într-o locatie de memorie in ASM

MOV [BX],DX - memorare continut reg. într-o locatie de memorie indirect

MOV DX,X[SI] - încarcare reg. din memorie cu adresa indexata din tabel X

MOV CX,[BX+SI+5]- încarcare reg. din memorie cu adresa indirecta si indexata

Când nu se poate da implicit prin registru lungimea în AFD se precizeaza explicit prin:

b/ - byte (1 octet) si w/ - word(2octeti).

În limbajul de asamblare (ASM sauTASM) lungimea explicita a operanzilor se da prin:

MOV byte ptr[BP+5],25 - încarcare imediata in memorie pe 1 octet

MOV word ptr[BP+5],25 - încarcare imediata in memorie pe 2 octeti (word)

MOV dword ptr[BP+5],25 - încarcare imediata in memorie pe 4 octet (double word)

MOV qword ptr[BP+5],25 - încarcare imediata in memorie pe 8 octet (quadword)

MOV tbyte ptr[BP+5],25 - încarcare imediata in memorie 10 octeti(ten byte la VF)

XCHG operand1,operand2 (XChange)

- Instructiune de interschimbare operand1 cu operand2

Pentru operand1 si operand 2 se pastreaza toate posibilitatile de la instructiunea MOV.

Ex: MOV AX,DX - se schimba continutul registrelor AX cu DX

MOV BX,X - se schimba continutul registrelor AX cu variabila X

Instructiunea NOP este echivalenta cu XCHG AX,AX

Adresarea stivei (PUSH si POP)

Stiva este o zona de memorie adresata prin registrul SP care indica elementul din vârful stivei (top). In stiva se ia din vârful stivei si apoi se incrementeaza SP.

Când se pune în stiva întâi se decrementeaza SP si dupa aceea se memoreaza valoarea.

PUSH reg16 - pune în stiva un registru pe 16 biti (PUSH BX)

POP reg16 - încarca din stiva un registru pe 16 biti (POP BX)

PUSH reg32 - pune în stiva un registru pe 32 biti (PUSH EBX)

POP reg32 - încarca din stiva un registru pe 32 biti (POP EBX)

PUSH mem - pune în stiva continutul unei locatii de memorie pe 16 biti

Este foarte utila la transmiterea parametrilor spre subprograme (PUSH X).

PUSH constanta - pune în stiva o constanta pe 16 biti

PUSHA - pune în stiva toate registrele pe 16 biti (AX;BX;CX,...)

POPA - încarca toate registrele pe 16 biti din stiva (starea programului)

PUSHAD - pune în stiva toate registrele pe 32 biti (EAX;EBX;ECX,...)

POPAD - încarca toate registrele pe 32 biti din stiva

PUSHF - pune în stiva registrul FLAGS (indicatorii de conditie)

POPF - încarca di stiva registrul FLAGS

PUSHFD - pune în stiva registrul EFLAGS

POPFD - încarca di stiva registrul FLAGS

Preview document

Programare în Limbaj de Asamblare - Pagina 1
Programare în Limbaj de Asamblare - Pagina 2
Programare în Limbaj de Asamblare - Pagina 3
Programare în Limbaj de Asamblare - Pagina 4
Programare în Limbaj de Asamblare - Pagina 5
Programare în Limbaj de Asamblare - Pagina 6
Programare în Limbaj de Asamblare - Pagina 7
Programare în Limbaj de Asamblare - Pagina 8
Programare în Limbaj de Asamblare - Pagina 9
Programare în Limbaj de Asamblare - Pagina 10
Programare în Limbaj de Asamblare - Pagina 11
Programare în Limbaj de Asamblare - Pagina 12
Programare în Limbaj de Asamblare - Pagina 13
Programare în Limbaj de Asamblare - Pagina 14
Programare în Limbaj de Asamblare - Pagina 15
Programare în Limbaj de Asamblare - Pagina 16
Programare în Limbaj de Asamblare - Pagina 17
Programare în Limbaj de Asamblare - Pagina 18
Programare în Limbaj de Asamblare - Pagina 19
Programare în Limbaj de Asamblare - Pagina 20
Programare în Limbaj de Asamblare - Pagina 21
Programare în Limbaj de Asamblare - Pagina 22
Programare în Limbaj de Asamblare - Pagina 23
Programare în Limbaj de Asamblare - Pagina 24
Programare în Limbaj de Asamblare - Pagina 25
Programare în Limbaj de Asamblare - Pagina 26
Programare în Limbaj de Asamblare - Pagina 27
Programare în Limbaj de Asamblare - Pagina 28
Programare în Limbaj de Asamblare - Pagina 29
Programare în Limbaj de Asamblare - Pagina 30
Programare în Limbaj de Asamblare - Pagina 31
Programare în Limbaj de Asamblare - Pagina 32
Programare în Limbaj de Asamblare - Pagina 33
Programare în Limbaj de Asamblare - Pagina 34
Programare în Limbaj de Asamblare - Pagina 35
Programare în Limbaj de Asamblare - Pagina 36
Programare în Limbaj de Asamblare - Pagina 37
Programare în Limbaj de Asamblare - Pagina 38
Programare în Limbaj de Asamblare - Pagina 39
Programare în Limbaj de Asamblare - Pagina 40
Programare în Limbaj de Asamblare - Pagina 41
Programare în Limbaj de Asamblare - Pagina 42
Programare în Limbaj de Asamblare - Pagina 43
Programare în Limbaj de Asamblare - Pagina 44
Programare în Limbaj de Asamblare - Pagina 45
Programare în Limbaj de Asamblare - Pagina 46
Programare în Limbaj de Asamblare - Pagina 47
Programare în Limbaj de Asamblare - Pagina 48
Programare în Limbaj de Asamblare - Pagina 49
Programare în Limbaj de Asamblare - Pagina 50
Programare în Limbaj de Asamblare - Pagina 51
Programare în Limbaj de Asamblare - Pagina 52
Programare în Limbaj de Asamblare - Pagina 53
Programare în Limbaj de Asamblare - Pagina 54
Programare în Limbaj de Asamblare - Pagina 55
Programare în Limbaj de Asamblare - Pagina 56
Programare în Limbaj de Asamblare - Pagina 57
Programare în Limbaj de Asamblare - Pagina 58
Programare în Limbaj de Asamblare - Pagina 59
Programare în Limbaj de Asamblare - Pagina 60
Programare în Limbaj de Asamblare - Pagina 61
Programare în Limbaj de Asamblare - Pagina 62
Programare în Limbaj de Asamblare - Pagina 63
Programare în Limbaj de Asamblare - Pagina 64
Programare în Limbaj de Asamblare - Pagina 65
Programare în Limbaj de Asamblare - Pagina 66
Programare în Limbaj de Asamblare - Pagina 67
Programare în Limbaj de Asamblare - Pagina 68
Programare în Limbaj de Asamblare - Pagina 69
Programare în Limbaj de Asamblare - Pagina 70
Programare în Limbaj de Asamblare - Pagina 71
Programare în Limbaj de Asamblare - Pagina 72
Programare în Limbaj de Asamblare - Pagina 73
Programare în Limbaj de Asamblare - Pagina 74
Programare în Limbaj de Asamblare - Pagina 75
Programare în Limbaj de Asamblare - Pagina 76
Programare în Limbaj de Asamblare - Pagina 77
Programare în Limbaj de Asamblare - Pagina 78
Programare în Limbaj de Asamblare - Pagina 79
Programare în Limbaj de Asamblare - Pagina 80
Programare în Limbaj de Asamblare - Pagina 81
Programare în Limbaj de Asamblare - Pagina 82
Programare în Limbaj de Asamblare - Pagina 83
Programare în Limbaj de Asamblare - Pagina 84
Programare în Limbaj de Asamblare - Pagina 85
Programare în Limbaj de Asamblare - Pagina 86
Programare în Limbaj de Asamblare - Pagina 87
Programare în Limbaj de Asamblare - Pagina 88
Programare în Limbaj de Asamblare - Pagina 89
Programare în Limbaj de Asamblare - Pagina 90
Programare în Limbaj de Asamblare - Pagina 91
Programare în Limbaj de Asamblare - Pagina 92
Programare în Limbaj de Asamblare - Pagina 93
Programare în Limbaj de Asamblare - Pagina 94
Programare în Limbaj de Asamblare - Pagina 95
Programare în Limbaj de Asamblare - Pagina 96
Programare în Limbaj de Asamblare - Pagina 97
Programare în Limbaj de Asamblare - Pagina 98
Programare în Limbaj de Asamblare - Pagina 99
Programare în Limbaj de Asamblare - Pagina 100
Programare în Limbaj de Asamblare - Pagina 101
Programare în Limbaj de Asamblare - Pagina 102
Programare în Limbaj de Asamblare - Pagina 103
Programare în Limbaj de Asamblare - Pagina 104
Programare în Limbaj de Asamblare - Pagina 105
Programare în Limbaj de Asamblare - Pagina 106
Programare în Limbaj de Asamblare - Pagina 107
Programare în Limbaj de Asamblare - Pagina 108
Programare în Limbaj de Asamblare - Pagina 109
Programare în Limbaj de Asamblare - Pagina 110
Programare în Limbaj de Asamblare - Pagina 111
Programare în Limbaj de Asamblare - Pagina 112
Programare în Limbaj de Asamblare - Pagina 113
Programare în Limbaj de Asamblare - Pagina 114
Programare în Limbaj de Asamblare - Pagina 115
Programare în Limbaj de Asamblare - Pagina 116
Programare în Limbaj de Asamblare - Pagina 117
Programare în Limbaj de Asamblare - Pagina 118
Programare în Limbaj de Asamblare - Pagina 119
Programare în Limbaj de Asamblare - Pagina 120
Programare în Limbaj de Asamblare - Pagina 121
Programare în Limbaj de Asamblare - Pagina 122
Programare în Limbaj de Asamblare - Pagina 123
Programare în Limbaj de Asamblare - Pagina 124
Programare în Limbaj de Asamblare - Pagina 125
Programare în Limbaj de Asamblare - Pagina 126
Programare în Limbaj de Asamblare - Pagina 127
Programare în Limbaj de Asamblare - Pagina 128
Programare în Limbaj de Asamblare - Pagina 129
Programare în Limbaj de Asamblare - Pagina 130
Programare în Limbaj de Asamblare - Pagina 131
Programare în Limbaj de Asamblare - Pagina 132
Programare în Limbaj de Asamblare - Pagina 133
Programare în Limbaj de Asamblare - Pagina 134
Programare în Limbaj de Asamblare - Pagina 135
Programare în Limbaj de Asamblare - Pagina 136
Programare în Limbaj de Asamblare - Pagina 137
Programare în Limbaj de Asamblare - Pagina 138
Programare în Limbaj de Asamblare - Pagina 139
Programare în Limbaj de Asamblare - Pagina 140

Conținut arhivă zip

  • Programare in Limbaj de Asamblare
    • Curs10_fis.doc
    • Curs11_ LOG.doc
    • Curs1_I86.doc
    • Curs2_Instr.doc
    • Curs3_inm.doc
    • Curs4_Jmp.doc
    • Curs5_sir.doc
    • Curs6_param.doc
    • Curs7_pmem.doc
    • Curs8_rentr.doc
    • Curs9_mac.doc
    • fisiere.doc
    • LAB_8087.DOC
    • LAB_80871.doc

Alții au mai descărcat și

Probleme Rezolvate Laborator MAP

.include "m32def.inc" .dseg VAR1: .byte 1 VAR2: .byte 1 VAR3: .byte 1 SUMA1: .byte 1 SUMA2: .byte 1 .cseg RESET: ; Initializare stiva...

Programarea Calculatoarelor și Limbaje de Programare

MODULUL 1. ALGORITMI 1.1. GENERALITATI Termenul de produs program desemneazã atât programul sursã propiu-zis cât ºi documentaþia necesarã pentru...

Programarea Calculatorului

Scopul lucrării: Evidenţierea nivelului de cunoştinţe a fiecărui student la informatică, în mod deosebit algoritmizarea, pentru elaborarea unui...

Medii de Programare

O baza de date trebuie sa satisfaca cinci conditii esentiale13: - O buna reprezentare a realitatii înconjuratoare, adica baza de date trebuie sa...

Visual C++

Dupa cum multi dintre noi cunosc ,atomul este format din particule materiale si anume un nucleu incarcat electric pozitiv si mai multi electroni...

Programare în Java Script

Java - Sectiunea 3 Reducerea efectului de palpaire la crearea animatiilor Efectul suparator de palpaire a imaginii in cazul animatiilor, se poate...

Curs C++

Limbajele C si C++ sunt limbaje de programare de nivel înalt. Limbajul C a aparut în anii 1970 si a fost creat de Dennis Ritchie în...

Te-ar putea interesa și

Proiect microcontrolere - semaforizare a unei intersecții

TEMA PROIECTULUI Proiectul îşi propune cunoaşterea şi înţelegerea principiului de semaforizare a unei intersecţii. Pentru exemplificare s-a pus la...

Ceas programabil cu alarmă - aplicații ale CI digitale - PIC 16F84

Introducere Realizarea lucrării “Ceas programabil cu alarmă” a fost întâmpinată cu mult entuziasm şi aceasta nu numai datorită faptului că...

Generator de Cod Morse

PREFATĂ În perioada de început a procesărilor auotomate, programatorii scriau instructiunile care reprezentau programe pentru calculator ca...

Medii de Programare Pentru Microcontrollere

1.TEMA 1. Deplasarea unui text dat pe afişor, care să conțină minim 8 caractere, la alegere, cu posibilitatea de comandă de pe tastatura unui PC...

Înmatriculări Auto

I. INTRODUCERE Zi de zi vedem pe stradă o mulţime de maşini. După cum bine stim, indiferent de marcă, mărime, utilizare sau proprietar, fiecare...

Structură de date secvențială

Sarcina de lucru De a implementa tipul abstract de date “Secvența” și de elaborat funcțiile ce vor opera cu acesta secventa. Tipul abstract de...

Programare în Limbaj de Asamblare

1. Structura unui calculator numeric de tip John von Neumann 2. Ce sunt asambloarele? Descrieti etapele procesului de asamblare. Asambloarele...

Programarea Microcontrollerelor în Limbaj de Asamblare

1. Denumirea lucrarii: Programarea microcontrollerelor in limbaj de asamblare 2. Obiectivele lucrarii - Familiarizarea cu un cross assembler -...

Ai nevoie de altceva?