Sunteți pe pagina 1din 13

Ministerul Educației, Culturii și Cercetării

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică și Microelectronică
Departamentul Ingineria Software și Automatică

RAPORT

despre lucrarea de laborator nr.1


la disciplina Arhitectura Calculatoarelor
TEMA: Elaborarea programelor în limbajul
de asamblare MASM în Visual Studio

A elaborat: st. gr. TI-172, Adasanu Gicu

A verificat: lector universitar Mihai Potlog

CHIȘINĂU 2019
CUPRINS:

Sarcina lucrării………………………………………………………………………...…… 3
Indicații teoretice………………………………………………………………...…………. 3
Mersul lucrării……………………………………………………………………………… 4
Concluzia…………………………………………………………………………………… 13
Sarcina lucrării:

De elaborat și de rulat aplicațiile scrise în limbajul de asamblare MASM utilizând regiștrii pe 16, 32
și 64 de biți.

Indicații teoretice:

Pentru executarea lucrării, este necesar de a instala aplicația Microsoft Visual Studio și Irvine_7th.
Pentru a lansa un program în Assembler este necesar de a crea un fișier cu extensia .asm. În scop de
inițiere în acest limbaj, este bine să se studieze codurile deja existente în fișierul Irvine.
Un fișier .asm are următoarea structură:
 .data – directivă care marchează începutul segmentului de date,

 main PROC – indică începutul procedurii main în care este inclus tot codul programului,

 main ENDP – indică sfârșitul procedurii,
 END main – indică sfârșitul programului.

Figura 1 – Arhitectura generală a procesorului pe 64 de biți


Mersul lucrării:

Se instalează pachetul MVS de pe site-ul oficial Microsoft.

Figura 2 – Descărcarea Microsoft Visual Studio Community 2017

Se instalează fișierul Irvine_7th_Edition.msi

Figura 3 – Fișierul Irvine_7th_Edition.msi

Se lansează aplicația Visual Studio, apoi se creează un proiect nou C++ pentru consolă.

Figura 4 – Crearea unui nou proiect


Pentru a continua, este necesar de a șterge fișierele inutile și de a configura aplicația pentru a o putea
lansa:

Figura 5 – Ștergerea fișierelor inutile


Figura 6 – Adăugarea unui fișier existent
Mai urmează încă câteva configurați:
Pentru a lansa programul, se tastează Local Windows Debugger.

Figura 7 – Lansarea aplicației


În urmare obținem fereastra de execuție a programului:

Figura 8 – Fereastra de executare a aplicației

Lansarea aplicațiilor pe 16, 32 și 64 biți:


Caz 1: Lansăm o aplicație pe 16 biți. Deoarece arhitectura procesorului computerului utilizat este
structurată pe 64 biți, aplicația nu poate fi executată.
Figura 9 – Eroare la executarea aplicației pe 16 biți

Caz 2: Lansăm o aplicație pe 32 biți.

Figura 10 – Lansarea codului colors.asm

Aici se observă execuția reușită a codului sursă, fiind inclusă biblioteca cu instrucțiuni Irvine32.inc.
Codul sursă:
; Library Test #1: Integer I/O (TestLib1.asm)
; Tests the Clrscr, Crlf, DumpMem, ReadInt,
; SetTextColor, WaitMsg, WriteBin, WriteHex,
; and WriteString procedures.

INCLUDE Irvine32.inc
.data
arrayD DWORD 1000h,2000h,3000h
prompt1 BYTE "Enter a 32-bit signed integer: ",0
dwordVal DWORD ?

.code
main PROC
; Set text color to yellow text on blue background:
mov eax,yellow + (blue * 16)
call SetTextColor
call Clrscr ; clear the screen

; Display the array using DumpMem.


mov esi,OFFSET arrayD ; starting OFFSET
mov ecx,LENGTHOF arrayD ; number of units in dwordVal
mov ebx,TYPE arrayD ; size of a doubleword
call DumpMem ; display memory
call Crlf ; new line

; Ask the user to input a signed decimal integer.


mov edx,OFFSET prompt1
call WriteString
call ReadInt ; input the integer
mov dwordVal,eax ; save in a variable

; Display the integer in decimal, hexadecimal, and binary.


call Crlf ; new line
call WriteInt ; display in signed decimal
call Crlf
call WriteHex ; display in hexadecimal
call Crlf
call WriteBin ; display in binary
call Crlf
call WaitMsg ; "Press any key..."

; Return console window to default colors.


mov eax,lightGray + (black * 16)
call SetTextColor
call Clrscr
exit
main ENDP
END main
Caz 3: Lansăm o aplicație pe 64 biți. Pentru a putea executa acest fel de aplicații, este nevoie de
anumite configurații, pe care este mai ușor să le descărcăm din internet
(http://kipirvine.com/asm/gettingStartedVS2017/Project64_VS2017.zip). Fișierul se dezarhivează în
directoriul de lucru (Figura 11).

Figura 11 – Directoriul de lucru pentru aplicația pe 64 biți

Deschidem fișierul Project64.sln prin intermediul Visual Studio:


Figura 12 – Deschiderea fișierului Project64.sln

Includem în proiect oricare fișier .asm de 64 biți din directoriul Irvine – Examples – ... . Lansând
proiectul curent, obținem suma a două numere întregi, 5 și 6:

Figura 13 – Execuția aplicației de adunare a doua numere întregi


Codul sursă:
ExitProcess proto ;definirea funcțiilor
WriteInt64 proto

.data ;declararea și inițierea variabilei


sum qword 0

.code
main proc
mov rax,5 ;se introduce numărul 5 în memorie
add rax,6 ;se adaugă 6
mov sum,rax ;rezultatul se atribuie variabilei sum
call WriteInt64 ;se afișează suma
mov ecx,0 ;codul de returnare
call ExitProcess
main endp
end
Concluzia:

Efectuând lucrarea de laborator nr. 1, am reușit să fac cunoștință cu limbajul de asamblare MASM.
Deoarece toate operațiile au fost efectuate în mediul de programare Visual Studio, am apreciat pe larg
comoditatea lucrului cu el. Totodată, am observat că limbajul de asamblare necesită să fie studiat foarte
atent și minuțios, deoarece instrucțiunile sale nu sunt atât de intuitive ca și la limbajele clasice.

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

  • Lab 3 AMOO
    Lab 3 AMOO
    Document9 pagini
    Lab 3 AMOO
    Gheorghe Felicia
    Încă nu există evaluări
  • MANUAL dpcPS. Ed.2
    MANUAL dpcPS. Ed.2
    Document587 pagini
    MANUAL dpcPS. Ed.2
    Gheorghe Felicia
    Încă nu există evaluări
  • Tema 1 Dpcps
    Tema 1 Dpcps
    Document55 pagini
    Tema 1 Dpcps
    Gheorghe Felicia
    Încă nu există evaluări
  • NUME
    NUME
    Document2 pagini
    NUME
    Gheorghe Felicia
    Încă nu există evaluări
  • Rusu Felicia CV PDF
    Rusu Felicia CV PDF
    Document2 pagini
    Rusu Felicia CV PDF
    Gheorghe Felicia
    Încă nu există evaluări
  • FGH
    FGH
    Document3 pagini
    FGH
    Gheorghe Felicia
    Încă nu există evaluări
  • Копия RC-EXAM-2
    Копия RC-EXAM-2
    Document33 pagini
    Копия RC-EXAM-2
    Gheorghe Felicia
    Încă nu există evaluări
  • AC Lab1
    AC Lab1
    Document13 pagini
    AC Lab1
    Gheorghe Felicia
    Încă nu există evaluări