Sunteți pe pagina 1din 3

Universitatea Tehnică a Moldovei

Facultatea Calculatoare Informatică şi Microelectronică


Departamentul Ingineria Software şi Automatică

Raport
Lucrarea de laborator nr. 4

Disciplina: Arhitectura calculatoarelor


Tema: „Programe liniare”

A îndeplinit: St. Gr.

A controlat: lect. sup. Colesnic Victor

Chişinău 2
Scopul lucrării:
Lucrarea prezintă instrucțiunile pentru transferuri de date, instrucțiuni în aritmetica binară şi în
aritmetica BCD.

Mersul lucrării:
Condiție: Conform variantei elaborați programul :

Expresia:

1. Microsoft (R) Macro Assembler Version 14.00.23026.0     04/01/19 10:17:12  
2. ..\ch05\32 bit\colors.asm                    Page 1 - 1  
3.   
4.   
5.                              INCLUDE Irvine32.inc  
6.                   C ; Include file for Irvine32.lib             (Irvine32.inc)  
7.                   C   
8.                   C ;OPTION CASEMAP:NONE        ; optional: make identifiers case-sensitive  
9.                   C   
10.                   C INCLUDE SmallWin.inc        ; MS-Windows prototypes, structures, and constants 
 
11.                   C .NOLIST  
12.                   C .LIST  
13.                   C   
14.                   C INCLUDE VirtualKeys.inc  
15.                   C ; VirtualKeys.inc  
16.                   C .NOLIST  
17.                   C .LIST  
18.                   C   
19.                   C   
20.                   C .NOLIST  
21.                   C .LIST  
22.                   C   
23.  00000000           .data  
24.  00000000 49 6E 74 72 6F    mes1 byte "Introduceti valoarea X:",0  
25.        64 75 63 65 74  
26.        69 20 76 61 6C  
27.        6F 61 72 65 61  
28.        20 58 3A 00  
29.  00000018 49 6E 74 72 6F    mes2 byte "Introduceti valoarea Y:",0  
30.        64 75 63 65 74  
31.        69 20 76 61 6C  
32.        6F 61 72 65 61  
33.        20 59 3A 00  
34.  00000030 52 65 7A 75 74    mes3 byte "Rezutatul este:",0  
35.        61 74 75 6C 20  
36.        65 73 74 65 3A  
37.        00  
38.  00000040 00000000      vrx  dword 0  
39.  00000044 00000000      vry  dword 0  
40.  00000048 00000000      rez  dd 0  
41.   
42.  00000000           .code  
43.  00000000           main PROC  
44.  00000000  BA 00000000 R    mov edx,OFFSET mes1  
45.  00000005  E8 00000000 E    call WriteString ; afisarea mes1  
46.  0000000A  E8 00000000 E    call ReadDec ; introducerea de la tastatura  
47.  0000000F  A3 00000040 R    mov vrx,eax ; salvarea valorii in variabila vrx  
48.   
49.  00000014  BA 00000018 R    mov edx,OFFSET mes2  
50.  00000019  E8 00000000 E    call WriteString ; afisarea mes2  
51.  0000001E  E8 00000000 E    call ReadDec ; introducerea de la tastatura  
52.  00000023  A3 00000044 R    mov vry,eax ; salvarea valorii in variabila vry  
53.   
54.                 ;controlam conditiile  

2
55.  00000028  33 C0        xor eax,eax  
56.  0000002A  BA 00000000      mov edx,0  
57.   
58.  0000002F  A1 00000044 R    mov eax,vry  
59.  00000034  66| BB 0002      mov bx,2  
60.  00000038  66| F7 E3        mul bx ; calcul Y*2  
61.  0000003B  39 05 00000040 R cmp vrx,eax  ;compararea X cu 2Y  
62.  00000041  72 16        jb con1 ; salt la con1, daca X<2Y  
63.   
64.  00000043  A1 00000044 R    mov eax,vry  ;realizam expresia 2Y-60  
65.  00000048  66| BB 0002      mov bx,2  
66.  0000004C  66| F7 E3        mul bx  
67.  0000004F  83 E8 3C     sub eax,60  
68.  00000052  A3 00000048 R    mov rez,eax  
69.  00000057  EB 1A        jmp ex ; salt neconditionat la ex  
70.   
71.  00000059  A1 00000040 R    con1: mov eax,vrx  ; realizam expresia X/8+32-Y  
72.  0000005E  66| BB 0008      mov bx,8  
73.  00000062  66| F7 F3        div bx  
74.  00000065  83 C0 20     add eax,32  
75.  00000068  2B 05 00000044 R sub eax,vry  
76.  0000006E  A3 00000048 R    mov rez,eax  
77.   
78.  00000073  BA 00000030 R    ex: mov edx,OFFSET mes3  
79.  00000078  E8 00000000 E    call WriteString ; afisarea mesajului mes3   
80.  0000007D  E8 00000000 E    call WriteInt ; afisarea rezultatului cu semn  
81.  00000082  E8 00000000 E    call Crlf ; din rand nou  
82.                       
83.                     exit  
84.  00000087  6A 00       *        push   +000000000h  
85.  00000089  E8 00000000 E   *        call   ExitProcess  
86.  0000008E           main ENDP  
87.                 END main      
88. Microsoft (R) Macro Assembler Version 14.00.23026.0        04/01/19 10:17:12  
89. ..\ch05\32 bit\colors.asm                    Symbols 2 - 1  

Concluzie
În urma efectuării lucrării de laborator nr. 3 s-a continuat familiarizarea cu operațiile aritmetice
punându-le în practica rezolvării a unei probleme liniare care realizează o verificare, după care în funcție de
condiția care o satisface, execută una din ecuații cu două necunoscute, din sistem. S-au utilizat mai multe
tipuri de date – db, dd, dw, etc. Totodată s-au utilizat și instructiuni precum add, mov, imul, div, etc. și s-au
pus în practică cunoștințele referitor la modurile de adresare a operanzilor. În concluzie s-a familiarizat cu
limbajul Assembler.