Sunteți pe pagina 1din 18

Arhitectura Calculatoarelor (lucrare de laborator 1)

Elaborare

LUCRAREA DE LABORATOR 1
programelor n limbajul de asamblare MASM n Visual Studio

1.1 SCOPUL LUCRARII


Lucrarea urmrete familiarizarea studenilor cu regitrii microprocesoarelor de 16, 32 i 64 bii, cu
mediul de dezvoltare a programelor scrise pus la dispoziie de ctre produsul Visual Studio al firmei
Microsoft. Se prezinta setrile mediului Visual Studio necesare pentru a crea, rula i depna aplicaii
elaborate in limbaj de asamblare MASM utiliznd regitri pe 16, 32 i 64 bii.
1.2 Regitrii de baz utilizate n programarea n limbajul MASM
Fiecare program la execuie obine anumite resurse ale microprocesorului. Aceste resurse (regitri)
sunt necesare pentru executarea i pstrarea n memorie a instruciunilor i datelor programului, a
informaiei despre starea curent a programului i a microprocesorului.
Microprocesoarele pe 32 bii funcioneaz n diferite moduri, ce determin mecanismele de
protecie i de adresare a memoriei: modul real 8086 (pe 16 bii), modul virtual 8086 (V8086), modul
protejat pe 32 bii (inclusiv protejat pe 16 bii). Modul de funcionare a microprocesorului este impus
de sistemul de operare (SO) n conformitate cu modul definit de aplicaii (task-uri).
n microprocesoarele pe 64 bii au fost introduse noi moduri de funcionare:
Modul pe 64 bii (64-bit mode) acest mod susine adresarea virtual pe 64 bii i
extensiile regitrilor pe 64 bii. n acest mod este folosit numai modelul plat de memorie
(un segment comun pentru cod, date i stiv).
Modul de compatibilitate (compatibility mode) permite SO s execute aplicaii pe 32 i 16
bii. Pentru aplicaii microprocesorul reprezint un microprocesor pe 32 bii cu toate
atributele modului protejat, cu mecanismele de segmentare i paginare.
Sistemele Windows pe 64 bii nu susin modul real pe 16 bii (simularea lui). n acest caz este
necesar utilizarea DosBox-ului.
Microprocesoarele pe 64 bii reprezint seturi de regitri disponibili programatorilor.

Figura 1.1
n figura 1.1 sunt prezentai regitrii de uz general. Microprocesoarele pe 64 bii conin i alte
seturi de regitri care vor fi discutate la orele de curs.
Regitrii pe 64 bii sunt indicai cu prefixul R (REX). Adresarea la fiecare din 16 regitri se petrece
ca la un registru pe 64-, 32-, 16- sau 8 bii (se folosesc numai biii inferiori). Structura i destinaia
regitrilor va fi detaliat n subcapitolele urmtoare, n descrierea modurilor de compatibilitate.

Arhitectura Calculatoarelor (lucrare de laborator 1)

1.2.1 Modul de compatibilitate pe 16 bii


Pentru modul de compatibilitate pe 16 bii (modul 8086), sunt utilizai numai prile inferioare pe
16 bii (figura 1.2) ai regitrilor microprocesoarelor pe 64 (32) bii, setul de regitri este urmtorul:

Figura 1.2
Toi regitrii sunt de 16 bii. O serie de regitri (AX, BX, CX, DX) sunt disponibili i la nivel de
octet, prile mai semnificative fiind AH, BH, CH i DH, iar cele mai puin semnificative, AL, BL, CL
i DL. Denumirile regitrilor sunt:
AX - registru acumulator
BX - registru de baz general
CX - registru contor
DX - registru de date
BP - registru de baz pentru stiv (base pointer)
SP - registru indicator de stiv (stack pointer)
SI - registru index surs
DI - registru index destinaie
Registrul notat FLAGS cuprinde flagurile (bii indicatori) procesorului, sau bistabililor de condiie,
iar registrul IP (instruction pointer) este registrul de instruciuni.
Regitrii de date (AX, BX, CX, DX) pot fi folosii pentru memorarea datelor, ns unele din acetea
sunt folosii special pentru alte scopuri. De exemplu registrul CX este folosit ca contor n instruciunea
LOOP de ciclare, care l modific implicit i-i testeaz valoarea, registrul DX este folosit n
instruciunile de mprire si nmulire, iar registrul BX este folosit pentru adresarea datelor
(operanzilor).
n modul 8086 unui program scris n limbaj de asamblare se aloc patru zone de lucru n
memorie: o zon pentru date, o zon pentru instruciuni, o zon special pentru stiv i o zon
suplimentar pentru date. Fiecare din aceste zone pot avea pn la 64K octei i poart denumirea de
segment. Astfel exist segmentul de date (Data Segment), segmentul de instruciuni, cod (Code
Segment), segmentul de stiv (Stack Segment) si segmentul suplimentar de date (Extra Segment).
Este posibil ca cele 4 segmente sa fie suprapuse total sau parial. Adresele de nceput ale
acestor segmente se afl n 4 regitri segment:
Denumirile regitrilor de segment sunt:
CS - registru de segment de cod (code segment)
DS - registru de segment de date (data segment)
SS - registru de segment de stiv (stack segment)
ES - registru de segment de date suplimentar (extra segment)
Se observ c denumirile regitrilor de segment corespund zonelor principale ale unui program
executabil. Astfel, perechea de regitri (CS:IP) va indica totdeauna adresa urmtoarei instruciuni care
se va executa, iar perechea (SS:SP) indic totdeauna adresa vrfului stivei. Regitrii DS i ES conin
adresele segmentelor de date i sunt folosite pentru a accesa date.

Arhitectura Calculatoarelor (lucrare de laborator 1)

Dac segmentul de date ncepe de la locaia de memorie 1234h atunci DS va conine valoarea
1234h. Exist instruciuni pentru ncrcarea adreselor de memorie n regitrii segment.
Regitrii pointer (SP si BP) se folosesc pentru calculul offset-ului (distanei fa de nceputul unui
segment) din cadrul segmentului. Cei doi regitri pointer sunt: pointerul de stiva SP (Stack Pointer) si
pointerul de baza (Base Pointer). SP si BP sunt regitri de 16 biti.
Registrul SP reine adresa efectiv (offset-ul) a vrfului stivei. Adresa fizic a vrfului stivei SS:SP
este dat de perechea de regitri SS si SP, registrul SS conine adresa de nceput al segmentului de stiva
iar SP conine offset-ul din acest registru (adic distana in octei de la nceputul registrului de stiva):
stiva

SP

Varfulstivei
offset

SS

Baza stivei

Registrul BP este folosit la calculul offset-ului din interiorul unui segment. De exemplu poate fi
folosit ca pointer al unei stive proprii, dar nu a procesorului. Este folosit n principal pentru adresarea
bazat indexat a datelor.
Regitrii de index, de 16 biti sunt: SI (Source Index) si DI (Destination Index). Regitrii de
index sunt folosii pentru accesul la elementele unui tablou sau a unei tabele. Aceti regitri sunt
folosii ndeosebi n prelucrarea irurilor de caractere.
Registrul de instruciuni (Instruction Pointer) conine offsetul curent n segmentul de cod.
Adic adresa efectiv a urmtoarei instruciuni de executat din segmentul de cod curent. Dup
executarea instruciunii curente, microprocesorul preia din IP adresa urmtoarei instruciuni de
executat i incrementeaz corespunztor valoarea lui IP, cu numrul de octei ai codului instruciunii ce
va fi executat. Uneori acest registru se numete numrtor de program.
Registrul de flaguri (fanioane) (bistabili de condiie) al modului 8086 are configuraia din
figura 1.3. O serie de flaguri sunt flaguri de stare: acestea sunt poziionate la 0 sau la 1 ca urmare a
unor operaii aritmetice sau logice, conin informaii despre ultima instruciune executat. Celelalte
flaguri controleaz anumite operaii ale procesorului.
Din cei 16 bii ai registrului sunt folosii 9 bii: 0, 2, 4, 6 11.
Aproape toate instruciunile limbajului de asamblare afecteaz biii de stare.
Semnificaia fagurilor este urmtoarea:
CF (Carry Flag, bistabil de transport) - semnific un transport sau un mprumut din/n bitul cel
mai semnificativ al rezultatului, de exemplu la operaii de adunare sau de scdere.

Figura 1.3 - Registrul de flaguri al procesorului 8086


PF (Parity Flag, flag de paritate) - este poziionat n aa fel nct numrul de bii egali cu 1 din
octetul cel mai puin semnificativ al rezultatului, mpreun cu flagul PF, s fie impar; altfel
formulat, suma modulo 2 (XOR) a tuturor biilor din octetul c.m.p.s. i a lui PF s fie 1.
AF (Auxiliarry Carry Flag, bistabil de transport auxiliar) - indic un transport sau un mprumut
din/n bitul 4 al rezultatului.
ZF (Zero Flag, bistabil de zero) - este poziionat la 1 dac rezultatul operaiei este 0.

Arhitectura Calculatoarelor (lucrare de laborator 1)

SF (Sign Flag, bistabil de semn) - este poziionat la 1 dac b.c.m.s. al rezultatului (bitul de
semn) este 1.
OF (Overflow Flag, bistabil de depire) - este poziionat la 1 dac operaia a condus la o
depire de domeniu a rezultatului (la operaii cu sau fr semn).
TF (Trap Flag, bistabil de urmrire) - dac este poziionat la 1, se foreaz o ntrerupere, pe un
nivel predefinit, la execuia fiecrei instruciuni; acest fapt este util n programele de depanare, n
care este posibil rularea pas cu pas a unui program.
IF (Interrupt Flag, bistabil de ntreruperi) - dac este poziionat la 1, procesorul ia n
consideraie ntreruperile hardware externe; altfel, acestea sunt ignorate.
DF (Direction Flag, bistabil de direcie) - precizeaz sensul (cresctor sau descresctor) de
variaie a adreselor la operaiile cu iruri de octei sau de cuvinte.
Flagurile CF, PF, AF, ZF, SF i OF sunt numite flaguri de stare (aritmetice). Flagurile TF, IF i DF sunt
numite flaguri de control.
1.2.2 Modul de compatibilitate pe 32 bii (microprocesor de 32 bii)
Pentru modul de compatibilitate pe 32 bii , sunt utilizate numai prile inferioare pe 32 bii (figura
1.4) ai regitrilor microprocesoarelor pe 64 de bii i setul de regitri utilizat n lucrrile de laborator
este urmtorul:

Figura 1.4
Microprocesoarele de 32 bii sunt compatibile ca arhitectur cu cele de 16 bii, prin aceea ca
regitrii de 16 bii se regsesc ca subregitri ai regitrilor de 32 de bii. Pentru accesarea regitrilor de
32 bii a fost adugat un set de instruciuni.
Regitrii din figur, de exemplu al, ah, ax , indic regitri pe 8 i 16 bii ai registrului extins
eax pe 32 bii (prefix e (Extended)).
Regitrii generali ax, bx, cx, dx, si, di, bp i sp de 16 bii fac parte din regitrii generali de 32 bi i ai
microprocesoarelor de 32 bii extini: eax, ebx, ecx, edx, esi, edi, ebp si esp. Primii 16 bi i din aceti
regitri sunt regitri generali ai microprocesoarelor de 16 biti.
Analog regitrii IP si FLAGS de 16 bii sunt extini la 32 bii in cazul regitrilor EIP i ELAGS
de 32 bii. Registrul FLAGS se regsete n primii 16 bii ai registrului EFLAGS.
Regitrii segment au fost pstrai de 16 bii, dar s-au adugat doi noi regitri FS i GS.
Pe lng aceti regitri, microprocesoarele de 32 (64) de bii dispun de ali regitri de control,
de gestionare a adresei, de depanare i de test, care difer de la un tip de procesor la altul fiind folosite

Arhitectura Calculatoarelor (lucrare de laborator 1)

n principal de programele de sistem.


Semnificaia regitrilor segment n cazul microprocesoarelor de 32 bii a fost modificat, ele
sunt folosite ca selectoare de segment. n acest caz ele nu indic o adres de segment, ci un descriptor
de segment care precizeaz adresa de baz a segmentului, dimensiunea acestuia i drepturile de acces
asociate acestuia. Astfel adresa de baz poate fi specificat pe 32 bii iar dimensiunea unui segment s
fie de pn la 4 GB.
1.3 Configurarea Visual Studio pentru aplicaii pe 32 de bii
Instalai Visual Studio 2010 (2013). VS 2010 i Visual C ++ 2010 Express includ versiunea
respectiv a Microsoft Assembler. Putei verifica dac Microsoft Assembler este instalat prin localizarea
fiierului ml.exe n directorul de instalare Visual Studio, calea C: \ Program Files \ Microsoft Visual
Studio 10.x \ vc \ bin (n Windows versiunea 64 bii - C: \ Program Files (x86)\ Microsoft Visual
Studio 10.x \ vc \ bin).
Dac se utilizeaz Visual Studio Express, este necesar s efectuai urmtoarele: meniul Tools,
selectai Settings, i selectai Expert Settings.
Instalai fiierul Irvine_6th_Edition_VS2010.msi (Irvine_7th_Edition.msi pentru Visual
Studio 2013) care conine o mulime de exemple i biblioteci necesare elaborrii programelor. Implicit el
se instaleaz n folderul C:\Irvine. Dac nu avei acces la scriere pe discul C, putei instala n folderul
(directorul) permis, de exemplu pe stick USB, f:\MASM10. Dac instalai pe stick este necesar s creai
un proiect nou (vezi ANEXA A).
Este util rularea aplicaiei pe 32(64) bii fr depnare. Pentru aceasta este necesar s adugm o
nou comand pentru meniul Debug: Start Without Debugging. Procedura este urmtoarea:
Din meniul Tools, , selectai Customize.
Selectai butonul Commands.
Selectai Menu bar (radio button).
Facei clic pe butonul Add Command.
Selectai Debug din Categories list.
Selectai Start Without Debugging n caseta din dreapta.
Executai clic pe butonul OK.
Executai clic pe butonul Close.
Setarea Tab Size n 5
Selectai Options din meniul Tools. Selectai Text Editor, Selectai All Languages, i
selectai Tabs: Setai Tab Size i Indent Size to 5 (figura 1.5). Clic OK.

Arhitectura Calculatoarelor (lucrare de laborator 1)

Figura 1.5
Dac ai instalat pe disc C:\Irvine, n Visual Studio selectai File> Open> Project/Solution i selectai
calea spre fiierul C:\Irvine (locul instalrii Irvine_6th_Edition_VS2010.msi):
C:\Irvine > Examples > ch3 > Project > Project.sln
n fereastra Solution Explorer va aprea Project.
Executai clic dublu stnga pe Project i va aprea programul Main.asm. Executai clic dublu stnga pe
programul Main.asm i va aprea o nou fereastr pentru editare, cu coninutul programului Main.asm
(figura 1.6).
Dac nu apare, executai clic dreapta pe Project i selectai Add> Existing Item i selectai calea spre
exemplul de program surs Main.asm
C:\Irvine > Examples > ch3 > Project > Main.asm i executai clic Add (figura 1.6).

Figura 1.6
n meniul Build, selectai Build Project. n fereastra de ieire pentru Visual Studio, n partea de jos a
ecranului, vor aprea mesajele de dezvoltare (asamblare i editarea legturilor (link)) a programului
(figura 1.7) .

Arhitectura Calculatoarelor (lucrare de laborator 1)

Figura 1.7
n meniul Debug, selectai Start Without Debugging. Va aprea o fereastr cu rezultatul
execuiei programului afiarea unui text MASM program example (figura 1.8).

Figura 1.8
Pentru depnarea programului pas cu pas, executai clicuri F10 (figura 1.9), sgeata galben indic
urmtorul rnd din program care va fi executat. Putei afia starea regitrilor microprocesorului selectnd
meniul Debug, selectai Windows i Registers. Pentru afiarea strii variabilelor selectai meniul
Debug, selectai Windows, Watch>Watch1.

Arhitectura Calculatoarelor (lucrare de laborator 1)

Figura 1.9
1.4 Elaborarea aplicaiilor pe 16 bii
Pentru a elabora aplicaii de 16-bii, este necesar s adugai dou comenzi n meniul Visual
Studio Tools. Pentru a aduga o comand, selectai External Tools din meniul Tools. n fereastra aprut
executai clic pe butonul Add i introducei o nou linie de comand cu titlul Build 16-bit ASM (figura
1.10). n linia Command - C:\Irvine\make16_vs2013.bat, calea spre fiierului make16_vs2013.bat.
Arguments i Initial directory le putei seta executnd clic pe butoanele (dreapta), clic Aply.

Figura 1.10
executai clic pe butonul Add i introducei o nou linie de comand cu titlul Run 16-bit ASM
(figura 1.11). n linia Command - cmd.exe. Arguments i Initial directory le putei seta executnd clic
pe butoanele (dreapta), clic Aply. (Close on exit nu se bifeaz)

Arhitectura Calculatoarelor (lucrare de laborator 1)

Figura 1.11
Deseori aplicaiile pe 16-bii nu ruleaz direct n versiunile Windows pe 64 de bii , deoarece
acceseaz direct hardware-ul i memoria de sistem. n acest caz se folosete utilitarul DOSBox.
Descrcai i instalai DOSBox. Iar linia de comand cu titlul Run 16-bit ASM modificai conform
figurii 1.12. n linia Command indicai calea spre DOSBox.exe . Bifai Prompt for arguments.

Figura 1.12
n fereastra aprut introducei denumirea fiierului cu extensia .exe
Pentru ca rndurile codului s fie numerotate selectai Tools> Options> Text Editor> All Languages >
i bifai, n fereastra din dreapta, Line Numbers.

Arhitectura Calculatoarelor (lucrare de laborator 1)

1.5 Dezvoltarea programelor pe 16, 32 bii


Exemplu de program pe 16 bii:
;exemplu de program pe 16 biti
INCLUDE Irvine16.inc
.DATA
Promt DB 'Doresti sa devii programator?(da/nu)-[y/n]$'
Dad DB 13,10,'Vei deveni!',13,10,'$'
Nud DB 13,10,'Vei deveni filosof!',13,10,'$'
.CODE

;directiv ce declar nceputul segmentului de cod

main PROC

;se indic procedura cu numele main

mov ax,@data

;Initializarea segmentului de date ds

mov ds,ax

;cu adresa datelor

mov dx,OFFSET Promt

;n dx- deplasamentul (offset) sirului Promt

mov ah,9

;functia MSDOS, codul funciei 9 afisarea sirului

Int 21h

; ntreruperea 21h apel la serviciul MSDOS

mov ah,1

; functia MSDOS, codul funciei 1 introducerea de


la tastatur(codul tastei)

Int 21h

;codul tastei in registrul al

cmp al,'y'

;compararea coninutului registrului al cu codul


ASCII a literei y

jz IsDad

;salt condiionat (jz-jump if zero), dac rezultatul


comparrii este zero, salt la eticheta IsDad

cmp al,'n'

;compararea- din al se scade codul ASCII a literei n

jz IsNud

;da, rezultatul comparrii este zero, salt la eticheta


IsNud

IsDad: mov dx,OFFSET Dad

; n dx- offsetul sirului Dad

Jmp SHORT Disp

Salt necondiionat la eticheta Disp

IsNud: mov dx,OFFSET Nud

; n dx- offsetul irului Nud

Disp: mov ah,9

;functia MSDOS afisarea sirului

Int 21h

;apel la serviciul MSDOS

mov ah,1

; asteptarea unui clic

Int 21h
Exit

; apel la procedura de iesirea din program, din fisierul


Irvine16.inc

10

Arhitectura Calculatoarelor (lucrare de laborator 1)

main ENDP

; sfritul procedurii main

END main

;finalizarea programului/ punctul de intrare in program

11

Se remarca urmatoarele:
1. Fiierul Irvine16.inc conine un set de proceduri, macro-uri ce completeaz codul surs necesare
pentru dezvoltarea programelor n Visual Studio;
2.Directiva .DATA marcheaz nceputul segmentului de date. In cazul nostru acest segment contine 3
iruri de caractere, fiecrui caracter i se atribuie cte un byte (DB) n memorie, cu offset Prompt, Dad i
Nud, valorile13,10 sunt tratate ca comenzi sfritul rndului (LF), din rnd nou (CR);
3. main PROC indic nceputul procedurii main n care este inclus tot codul programului, main
ENDP indic sfritul procedurii. Directiva END main indic sfritul programului (numit si punctul de
intrare in program), tot codul plasat dup aceast directiva va fi ignorat de asamblor;
4.Primele doua instruciuni iniializeaz registrul ds. Simbolul @data reprezint numele segmentului
creat cu directiva .DATA (sau adresa segmentului, adresa primului octet din acest segment);
5.Continutul variabilelor Prompt, Dad i Nud de tip ir de caractere se afieaz pe ecran utiliznd
funcia MSDOS cu codul 9. irurile pot fi de asemenea afiate pe ecran cu funcia MSDOS cu codul 40h;
6.ntreruperea Int 21h apeleaz serviciul MSDOS (DOS Services), iar int 10h la serviciul BIOS, ca
funcia apelat s fie executat, codul ei este necesar s fie ncrcat n registrul al.
ablonul (template) unui program pe 16 bii este urmtorul:
;This program
; Last update:
INCLUDE Irvine16.inc
.data
; aici definiti datele necesare
.code
main PROC
mov ax,@data
mov ds,ax
;aici plasati codul program
exit
main ENDP
END main
Exemplu de program pe 32 bii:
INCLUDE Irvine32.inc
.data
Promt DB 'Doresti sa devii programator?(da/nu)-[y/n]',0
Dad DB 13,10,'Vei deveni!',13,10,0
Nud DB 13,10,'Vei deveni filosof!',13,10,0
.code
main PROC
mov edx,OFFSET Promt
call WriteString
call ReadChar
cmp al,'y'
jz IsDad

Arhitectura Calculatoarelor (lucrare de laborator 1)

12

cmp al,'n'
jz IsNud
IsDad: mov edx,OFFSET Dad
call WriteString
jmp ex
IsNud: mov edx,OFFSET Nud
call WriteString
ex:
exit
main ENDP
END main
Se remarca urmatoarele:
1. Se observ, c este acelai program dar elaborat ca o aplicaie pe 32 bii, n care se utilizaez
procedurile din Irvine32.inc, pentru dezvoltarea programelor n Visual Studio;
2. Definirea irurilor de caractere se finalizeaz cu zero, offset-ul irurilor se ncarc n registrul edx
(pe 32 bii).
3. Cu instruciunea call se apeleaz dou proceduri WriteString afiarea irului i ReadCharintroducerea unui caracter de la tastatur. Pentru afiarea unui ir de caractere, offset-ul irului este
necesar s fie ncrcat n registrul edx i apoi apelat procedura (funcia). Dup apelarea
procedurii ReadChar, n registrul al se va introduce codul tastei.
Exemplu de program pe 64 bii (Visual Studio 2013):
Instalai fiierul Irvine_7th_Edition.msi pentru Visual Studio 2013
Selectai n Visual Studio proiectul C:\Irvine\Examples\Project64\Project64.sln i adugai un exemplu
de program din C:\Irvine\Examples\ch3\64 bit\AddTwoSum_64.asm.
; AddTwoSum_64.asm - Ch3 example.
ExitProcess proto
.data
sum qword 0
.code
main proc
mov rax,5
add
rax,6
mov sum,rax
mov ecx,0
call ExitProcess
main endp
end
Se remarca urmatoarele:
1. Este un program ce adun dou numere ntregi i rezultatul este salvat n variabila sum pe 64 bii
(qword).
2. Procedura de ieire din program ExitProcess, i alte proceduri utilizate, este necesar s le
declarm la nceputul programului, ExitProcess proto.

Arhitectura Calculatoarelor (lucrare de laborator 1)

13

1.6 MODUL DE LUCRU


1.Se vor asambla si rula exemplele de programe prezentate obinndu-se fiiere .EXE, ele se afl n
Project, cu numele Project.exe ;
2.Se vor obine i se vor analiza fiierele listing ale programelor Project.lst;
3.Se va rula sub Debug pas cu pas (clic F10) exemplele de programe actualiznd Registers i
Watch1(pentru variabile);
1.7 Continutul referatului
Referatul va conine:
- tema i scopul lucrrii,
- codurile surs .asm (Ex. 16,32 bii) comentate;
- fiierele -listing (Ex. 16,32 bii);
- paii rulrii programelor n Debug;
- Concluzii.
Dac utilizai Professional, Ultimate i Premium
Visual Studio Professional, ediiile Ultimate i Premium suporta mai multe limbaje de programare i
tipuri de aplicaii. Configurarea C ++ ca limbaj de programare se recomand pentru programarea n limbaj
de asamblare, astfel se recomand urmtoarele etape:
1) Selectai din meniul Tools > Import and Export Settings.
2) Selectai butonul "Import selected environment settings".
3) Selectai butonul "No, just import..." .
4) Selectai "Visual C++" din lista Default Settings i executai clic pe butonul Next .
5) Executai clic pe butonul Finish , apoi clic pe butonul Close.

Arhitectura Calculatoarelor (lucrare de laborator 1)

14

Anexa A Crearea unui nou proiect n Visual C ++ 2010 Express


Selectai din meniu File> New>Project. n fereastra aprut figura A.1 selectai n caseta dreapta
Visual C++> Win32, mijloc Win32 Console Application, jos Name numii proiectul, de
exemplu Project10, n Location indicai calea spre f:\MASM10\Laborator unde vei salva proiectul
i lucrrile de laborator. Clic OK.

Figura A.1
n fereastra aprut executai clic Application Settings, bifai Empty project (figura A.2). Clic Finish.

Figura A.2
n fereastra Solution Explorer, eliminai fiierele Header Files, Resource Files, and Source Files,
ele nu sunt necesare. n aceeai fereastr, executai clic dreapta pe numele de proiect i selectai
selectai Build Customizations. Va aprea o nou fereastr (figura A.3), bifai caseta de selectare
MASM i executai clic pe butonul OK.

Arhitectura Calculatoarelor (lucrare de laborator 1)

15

Figura A.3
Clic dreapta Project10, selectati Properties. Clic pe Configuration Properties. n
Configuration Properties gsii intrarea Linker.
Selectai General > Additional Library Directories i introducei linia f:\MASM10;%
(AdditionalLibraryDirectories), n exemplul nostru, astfel linker-ul va gsi fiierul bibliotec
Irvine32.lib (figura A.4). Clic Apply.

Figura A.4
Tot n Linker selectai Input>Additional Dependencies i adugai fiierul irvine32.lib;
(figura A.5).
Numele fiierelor s fie separate prin punct i virgul. Clic Apply.

Arhitectura Calculatoarelor (lucrare de laborator 1)

16

Figura A.5
Tot n Linker selectai Debugging (depanare). Verificai dac opiunea Generate Debug Info
este setat Yes (figura A.6).

Figura A.6
Tot n Linker selectai System. Verificai dac opiunea SubSystem este setat Console (figura
A.7).
Executai clic OK.

Arhitectura Calculatoarelor (lucrare de laborator 1)

17

Figura A.7
Executai clic dreapta pe Project i selectai Add> Existing Item i selectai calea spre exemplul
de program surs AddSub.asm
f:\MASM10> Examples > ch3 > AddSub.asm i executai clic Add (figura A.8)

Figura A.8
n fereastra Solution Explorer va aprea AddSub.asm.
Executai clic dreapta pe Project i selectai Properties > Configuration properties >
Microsoft Macro Assembler> General
Modificai Include Paths cu calea spre fiierul de pe stick F:\MASM10. Aceasta indic calea spre
fiierele cu extensia ".inc" (figura A.9). Clic Apply.

Arhitectura Calculatoarelor (lucrare de laborator 1)

18

Figura A.9
Selectai Listing File din list i n linia Assembled Code Listing File (figura A.10), adugai $
(ProjectName).lst. Clic Apply, OK.

Figura A.10

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