Documente Academic
Documente Profesional
Documente Cultură
RAPORT
Disciplina: Arhitectura Calculatorului
A verificat: M. Potlog
Chiinu 2017
Scopul lucrrii:
Lucrarea urmrete familiarizarea studenilor cu regitrii microprocesoarelor pe 16, 32 i 64 de bi i,
cu mediul de dezvoltare a programelor scrise in limbaj de asamblare pus la dispozitie de catre produsul Turbo-
Assembler al firmei Borland.Se prezint setrile TASM necesare pentru a elabora, rula i depana aplicaiile
elaborate,utiliznd regitri pe 16, 32 i 64 de bii.
Sarcina lucrrii:
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);
Continutul referatului Referatul va conine:
- tema i scopul lucrrii,
- codurile surs .asm (Ex. 16,32 de bii) comentate;
- fiierele -listing (Ex. 16,32 de bii);
- paii rulrii programelor n Debug;
- Concluzii.
Indicaii teoretice:
Introducere
Pachetul de programe Turbo-Assembler pune la dispozitia utilizatorului toate instrumentele necesare
pentru dezvoltarea programelor in limbaj de asamblare. Macroasamblorul TASM produce module obiect
relocabile din fisiere sursa in limbaj de asamblare. Pentru aceste module obiect se pot edita legaturile cu
programul TLINK in scopul crearii de programe executabile sub sistemul de operare DOS. Pachetul cuprinde:
1. macroasamblorul TASM;
2. editorul de legaturi TLINK;
3. bibliotecarul TLIB;
4. depanatorul simbolic TD.
Realizarea lucrarii:
Programele au fost asamblate in sistemul de operare Windows 7.
Codul sursa a fost scris in editorul Notepad
Asamblarea a avut loc cu ajutorul instrumentelor oferite de compania Borland Turbo Assambler(TASM)
2) Cu ajutorul comenzii tlink /v 16biti.obj fisierul obiect a fost convertit in fiser executabil.
Unde:
/v este informatia simbolica pentru debuger
3) Cu ajutorul comenzii 16biti adica denumirea fisierului .exe lansam in executie programul.
16biti.asm
3
Figura 1 obtinerea fisierului de tip .exe
Pentru a rula programul in Turbo Debuger dupa pasii efectuati mai sus trebuie sa introducem in linia
de comanda td 16biti.exe dupa ce va aparea urmatoarele imagini:
4
5
16biti.LST
DGROUP Group
STACK 16 0100 Para Stack STACK
_DATA 16 000E Word Public DATA
_TEXT 16 0017 Word Public CODE
32biti.ASM
.data
Promt DB 'Doresti sa devii programator?(da/nu)-[y/n]$' ; este dat un sir
Dad DB 13,10,'Vei deveni!',13,10,'$' ; daca raspunzi afirmativ
Nud DB 13,10,'Vei deveni filosof!',13,10,'$' ; daca raspunzi negativ
IsDad:
mov dx,OFFSET Dad ; in dx-offsetul sirului Dad
jmp ex ; salt la eticheta ex
IsNud:
mov dx,OFFSET Nud
ex:
mov ah,9 ; afisarea sirului
int 21h ; intreruperea
mov ah,4ch ; sfarseste programul
mov al,0 ; returneaza 0
int 21h
END main
8
9
10
32biti.LST
Turbo Assembler Version 3.0 03/06/17 21:43:16 Page 1
32biti.asm
11
1 0000 .model small ; marimea modelului
2 0000 .stack 100h ; segmentul de stiva
3
4 0000 .data
5 0000 44 6F 72 65 73 74 69+ Promt DB 'Doresti sa devii programator?(da/nu)-[y/n]$' ; este dat un sir
6 20 73 61 20 64 65 76+
7 69 69 20 70 72 6F 67+
8 72 61 6D 61 74 6F 72+
9 3F 28 64 61 2F 6E 75+
10 29 2D 5B 79 2F 6E 5D+
11 24
12 002B 0D 0A 56 65 69 20 64+ Dad DB 13,10,'Vei deveni!',13,10,'$' ; daca raspunzi afirmativ
13 65 76 65 6E 69 21 0D+
14 0A 24
15 003B 0D 0A 56 65 69 20 64+ Nud DB 13,10,'Vei deveni filosof!',13,10,'$' ; daca raspunzi negativ
16 65 76 65 6E 69 20 66+
17 69 6C 6F 73 6F 66 21+
18 0D 0A 24
19
20 0053 .code ; segmentul de cod
21 0000 main: ; procedura
22 0000 B8 0000s mov ax,@data ; instructiunea incarca in registrul AX adresa seg. de date
23 0003 8E D8 mov ds,ax ; instr. incarca in registrul seg. DS adresa seg. de date din AX
24 0005 BA 0000r mov dx,OFFSET Promt ; in dx-deplasamentul sirului Prompt
25 0008 B4 09 mov ah,9 ; afiseaza sirul
26 000A CD 21 int 21h ; apelul intreruperii
27 000C B4 01 mov ah,1 ; introduce de la tastatura un caracter
28 000E CD 21 int 21h
29
30
31 0010 3C 79 cmp al,'y' ; compara continutul registrului al cu codul ASCII pentru lit. y
32 0012 74 04 jz IsDad ; sare la eticheta IsDad,daca rezultatul compararii e nul
33 0014 3C 6E cmp al,'n' ; compara pentru litera n
34 0016 74 06 jz IsNud ; sare la eticheta IsNud
35
36 0018 IsDad:
37 0018 BA 002Br mov dx,OFFSET Dad ; in dx-offsetul sirului Dad
38 001B EB 04 90 jmp ex ; salt la eticheta ex
39 001E IsNud:
40 001E BA 003Br mov dx,OFFSET Nud
41
42 0021 ex:
43 0021 B4 09 mov ah,9 ; afisarea sirului
44 0023 CD 21 int 21h ; intreruperea
45 0025 B4 4C mov ah,4ch ; sfarseste programul
46 0027 B0 00 mov al,0 ; returneaza 0
47 0029 CD 21 int 21h
48
49 END main
Turbo Assembler Version 3.0 03/06/17 21:43:16 Page 2
Symbol Table
DGROUP Group
STACK 16 0100 Para Stack STACK
_DATA 16 0053 Word Public DATA
_TEXT 16 002B Word Public CODE
13
Concluzii:
n urma realizrii lucrrii de laborator nr. 1, am fcut cunotiin cu instrumentele oferite de Turbo-
Assembler Editare astfel am creat 2 fisiere sursa numite 16biti.asm si 32biti.asm cu editorul de
DOS apelat din linia de comanda: C:\>edit 16biti.asm
Apoi am construit fisierul obiect si am verificat codul din sursa: C:\> tasm 16biti.asm
La sfirsit am rulat executabilul in Debugger: C:\> td fisier
Bibliografia:
Indicaiile metodice oferite de V. Colesnic
http://www.itcsolutions.eu/category/programming/assembler-8086/?
14