Sunteți pe pagina 1din 8

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei

Catedra Automatica i Tehnologii Informaionale

RAPORT
Lucrare de laborator Nr.3
la Arhitectura Calculatoarelor
Tema:Programe Liniare

A efectuat:

A verificat: V. Colesnic

Chisinau 2016
Scopul Lucrrii:
Lucrarea prezint instruciunile pentru transferuri de date,instruciunile n aritmetica binar i n
aritmetica BCD.

Sarcina Lucrrii:
Conform variantei elaborai 2 variante de program :
a)cu introducerea datelor de la tastatur i afiarea rezultatelor pe ecran.
b)cu generarea datelor de intrare, utiliznd procedurile Random32, RandomRange.

10 2( 4) + , > + 100
={
/ 91 , + 100

a)cu introducerea datelor de la tastatur i afiarea rezultatelor pe ecran.


Codul sursa al programului
INCLUDE Irvine32.inc
.data
mes1 byte "Introduceti valoarea X:",0
mes2 byte "Introduceti valoarea Y:",0
mes3 byte "Rezutatul este:",0
vrx dword 0
vry dword 0
rez dd 0

.code
main PROC
mov edx, OFFSET mes1
call WriteString ; afisarea mes1
call ReadDec ; introducerea de la tastatura
mov vrx, eax ; salvarea val in var vrx

mov edx, OFFSET mes2


call WriteString ; afis mes2
Call ReadDec ; intro de la tast
mov vry, eax ; slav val in var vry

mov edx, 0

mov eax, vrx


add eax, 100 ; calcul x + 100
cmp vry, eax; compararea y cu x + 100
jg con1 ; salt la con 1 daca y > x + 100

mov eax, vry ; realizam expresia y / x - 91


mov ebx, vrx
div ebx
sub eax, 91
mov rez, eax
jmp ex ; salt neconditionat

con1: mov eax, vrx ; realizam expresia 2(y-4x) + y


mov bx, 4
mul bx
mov ebx, vry
sub ebx, eax
mov eax, ebx
mov bx, 2
mul bx
add eax, vry
mov rez, eax

ex: mov edx, OFFSET mes3


call WriteString ; afisarea mes3
call WriteInt ; afisarea rezultat cu sem
call Crlf ; din rind nou

exit
main ENDP
END main

Listingul programului
INCLUDE Irvine32.inc
C ; Include file for Irvine32.lib (Irvine32.inc)
C
C ;OPTION CASEMAP:NONE ; optional: make
identifiers case-sensitive
C
C INCLUDE SmallWin.inc ; MS-Windows prototypes,
structures, and constants
C .NOLIST
C .LIST
C
C INCLUDE VirtualKeys.inc
C ; VirtualKeys.inc
C .NOLIST
C .LIST
C
C
C .NOLIST
C .LIST
C
00000000 .data
00000000 49 6E 74 72 6F mes1 byte "Introduceti valoarea X:",0
64 75 63 65 74
69 20 76 61 6C
6F 61 72 65 61
20 58 3A 00
00000018 49 6E 74 72 6F mes2 byte "Introduceti valoarea Y:",0
64 75 63 65 74
69 20 76 61 6C
6F 61 72 65 61
20 59 3A 00
00000030 52 65 7A 75 74 mes3 byte "Rezutatul este:",0
61 74 75 6C 20
65 73 74 65 3A
00
00000040 00000000 vrx dword 0
00000044 00000000 vry dword 0
00000048 00000000 rez dd 0

00000000 .code
00000000 main PROC
00000000 BA 00000000 R mov edx, OFFSET mes1
00000005 E8 00000000 E call WriteString ; afisarea mes1
0000000A E8 00000000 E call ReadDec ; introducerea de la tastatura
0000000F A3 00000040 R mov vrx, eax ; salvarea val in var vrx

00000014 BA 00000018 R mov edx, OFFSET mes2


00000019 E8 00000000 E call WriteString ; afis mes2
0000001E E8 00000000 E Call ReadDec ; intro de la tast
00000023 A3 00000044 R mov vry, eax ; slav val in var vry

00000028 BA 00000000 mov edx, 0

0000002D A1 00000040 R mov eax, vrx


00000032 83 C0 64 add eax, 100 ; calcul x + 100
00000035 39 05 00000044 R cmp vry, eax; compararea y cu x + 100
0000003B 7F 17 jg con1 ; salt la con 1 daca y > x + 100

0000003D A1 00000044 R mov eax, vry ; realizam expresia y / x - 91


00000042 8B 1D 00000040 R mov ebx, vrx
00000048 F7 F3 div ebx
0000004A 83 E8 5B sub eax, 91
0000004D A3 00000048 R mov rez, eax
00000052 EB 28 jmp ex ; salt neconditionat

00000054 A1 00000040 R con1: mov eax, vrx ; realizam expresia 2(y-4x) + y


00000059 66| BB 0004 mov bx, 4
0000005D 66| F7 E3 mul bx
00000060 8B 1D 00000044 R mov ebx, vry
00000066 2B D8 sub ebx, eax
00000068 8B C3 mov eax, ebx
0000006A 66| BB 0002 mov bx, 2
0000006E 66| F7 E3 mul bx
00000071 03 05 00000044 R add eax, vry
00000077 A3 00000048 R mov rez, eax

0000007C BA 00000030 R ex: mov edx, OFFSET mes3


00000081 E8 00000000 E call WriteString ; afisarea mes3
00000086 E8 00000000 E call WriteInt ; afisarea rezultat cu sem
0000008B E8 00000000 E call Crlf ; din rind nou

exit
00000090 6A 00 * push +000000000h
00000092 E8 00000000 E * call ExitProcess
00000097 main ENDP
END main
b)cu generarea datelor de intrare, utiliznd procedurile Random32, RandomRange.
Codul sursa al programului
INCLUDE Irvine32.inc
.data
mes1 byte "X=", 0
mes2 byte "Y=", 0
mes3 byte "Rezutatul este:",0
vrx dword 0
vry dword 0
rez dd 0

.code
main PROC
call Randomize
mov edx, offset mes1
call WriteString
call Random32
call WriteInt
call Crlf ;new line
mov vrx, eax

mov edx, offset mes2


call WriteString
call Random32;
call WriteInt
call Crlf
mov vry, eax

mov edx, 0

mov eax, vrx


add eax, 100 ; calcul x + 100
cmp vry, eax; compararea y cu x + 100
jg con1 ; salt la con 1 daca y > x + 100

mov eax, vry ; realizam expresia y / x - 91


mov ebx, vrx
div ebx
sub eax, 91
mov rez, eax
jmp ex ; salt neconditionat

con1: mov eax, vrx ; realizam expresia 2(y-4x) + y


mov bx, 4
mul bx
mov ebx, vry
sub ebx, eax
mov eax, ebx
mov bx, 2
mul bx
add eax, vry
mov rez, eax

ex: mov edx, OFFSET mes3


call WriteString ; afisarea mes3
call WriteInt ; afisarea rezultat cu sem
call Crlf ; din rind nou

exit
main ENDP
END main

Listingul
Microsoft (R) Macro Assembler Version 14.10.25019.0 05/21/17 13:47:39
..\ch05\32 bit\colors.asm Page 1 - 1

INCLUDE Irvine32.inc
C ; Include file for Irvine32.lib (Irvine32.inc)
C
C ;OPTION CASEMAP:NONE ; optional: make
identifiers case-sensitive
C
C INCLUDE SmallWin.inc ; MS-Windows prototypes,
structures, and constants
C .NOLIST
C .LIST
C
C INCLUDE VirtualKeys.inc
C ; VirtualKeys.inc
C .NOLIST
C .LIST
C
C
C .NOLIST
C .LIST
C
00000000 .data
00000000 58 3D 00 mes1 byte "X=", 0
00000003 59 3D 00 mes2 byte "Y=", 0
00000006 52 65 7A 75 74 mes3 byte "Rezutatul este:",0
61 74 75 6C 20
65 73 74 65 3A
00
00000016 00000000 vrx dword 0
0000001A 00000000 vry dword 0
0000001E 00000000 rez dd 0

00000000 .code
00000000 main PROC
00000000 E8 00000000 E call Randomize
00000005 BA 00000000 R mov edx, offset mes1
0000000A E8 00000000 E call WriteString
0000000F E8 00000000 E call Random32
00000014 E8 00000000 E call WriteInt
00000019 E8 00000000 E call Crlf ;new line
0000001E A3 00000016 R mov vrx, eax

00000023 BA 00000003 R mov edx, offset mes2


00000028 E8 00000000 E call WriteString
0000002D E8 00000000 E call Random32;
00000032 E8 00000000 E call WriteInt
00000037 E8 00000000 E call Crlf
0000003C A3 0000001A R mov vry, eax

00000041 BA 00000000 mov edx, 0

00000046 A1 00000016 R mov eax, vrx


0000004B 83 C0 64 add eax, 100 ; calcul x + 100
0000004E 39 05 0000001A R cmp vry, eax; compararea y cu x + 100
00000054 7F 17 jg con1 ; salt la con 1 daca y > x + 100

00000056 A1 0000001A R mov eax, vry ; realizam expresia y / x - 91


0000005B 8B 1D 00000016 R mov ebx, vrx
00000061 F7 F3 div ebx
00000063 83 E8 5B sub eax, 91
00000066 A3 0000001E R mov rez, eax
0000006B EB 28 jmp ex ; salt neconditionat

0000006D A1 00000016 R con1: mov eax, vrx ; realizam expresia 2(y-4x) + y


00000072 66| BB 0004 mov bx, 4
00000076 66| F7 E3 mul bx
00000079 8B 1D 0000001A R mov ebx, vry
0000007F 2B D8 sub ebx, eax
00000081 8B C3 mov eax, ebx
00000083 66| BB 0002 mov bx, 2
00000087 66| F7 E3 mul bx
0000008A 03 05 0000001A R add eax, vry
00000090 A3 0000001E R mov rez, eax

00000095 BA 00000006 R ex: mov edx, OFFSET mes3


0000009A E8 00000000 E call WriteString ; afisarea mes3
0000009F E8 00000000 E call WriteInt ; afisarea rezultat cu sem
000000A4 E8 00000000 E call Crlf ; din rind nou

exit
000000A9 6A 00 * push +000000000h
000000AB E8 00000000 E * call ExitProcess
000000B0 main ENDP
END main
Concluzie
In lucrarea de laborator nr.3 am realizat un program ce rezolva o operatie.Au fost obtinute noi
abilitati in utilizarea instructiunilor in aritmetica binara:adunare,scadere,inmultire,impartire si
utilizarea salturilor conditionate si neconditionate.De asemenea am utilizat procedurile
Random32 si RandomRange.

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

  • BDC Lab1
    BDC Lab1
    Document11 pagini
    BDC Lab1
    Radu Madiudin
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document6 pagini
    Lab 1
    Radu Madiudin
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document10 pagini
    Lab 1
    Radu Madiudin
    Încă nu există evaluări
  • Lab 2
    Lab 2
    Document4 pagini
    Lab 2
    Radu Madiudin
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document7 pagini
    Lab 1
    Radu Madiudin
    Încă nu există evaluări
  • AC02 Ro
    AC02 Ro
    Document8 pagini
    AC02 Ro
    Andrei Carp
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document10 pagini
    Lab 1
    Radu Madiudin
    Încă nu există evaluări
  • AC Testare
    AC Testare
    Document27 pagini
    AC Testare
    DimaVasiloi
    Încă nu există evaluări
  • LFPC Lab2 Utm
    LFPC Lab2 Utm
    Document8 pagini
    LFPC Lab2 Utm
    Radu Madiudin
    Încă nu există evaluări
  • Lab - 6 Programarea Calculatoarelor
    Lab - 6 Programarea Calculatoarelor
    Document15 pagini
    Lab - 6 Programarea Calculatoarelor
    Radu Madiudin
    Încă nu există evaluări
  • NR Fibonaci
    NR Fibonaci
    Document1 pagină
    NR Fibonaci
    Radu Madiudin
    Încă nu există evaluări
  • Lucrare de Laborator Nr.1
    Lucrare de Laborator Nr.1
    Document5 pagini
    Lucrare de Laborator Nr.1
    Radu Madiudin
    Încă nu există evaluări