Sunteți pe pagina 1din 2

INCLUDE Irvine32.

inc
.data
rezultatul BYTE "Rezultatul = ", 0 ;Declaram un sir de caractere
inputA byte "A = ", 0
inputB byte "B = ", 0
newline BYTE ' ', 13, 10, 0 ;secventa pentru introducerea unui rand nou
catul BYTE "Catul = ", 0; Declaram un sir de caractere
;Declaram variabilele utilizate
a db ?
b dw ?
resultFirst dw ?
resultSecond dw ?
result dw ?
cat dw ?
;10. z=(a*a+b*b)/(a*a-b*b-5).
.code
main proc
mov edx, OFFSET inputA
call WriteString
call ReadInt
mov a, al
call Crlf
mov edx, OFFSET inputB
call WriteString
call ReadInt
mov b, ax

mov al, a ; mutam octetul a in registrul al


mul al; inmultim continutul registrului al cu al
mov resultFirst, ax; mutam continutul registrului al in cuvantul resultFirst
;resultFirst = 25
mov ax, b ; mutam cuvantul b in registrul ax
mul ax; inmultim continutul registrului ax cu ax, 10 * 10 = 100
add ax, resultFirst; adaugam la produsul obtinut, 100 + 25 = 125
mov resultFirst, ax; mutam continutul registrului ax in cuvantul resultFirst = 1
25
mov al, a ; mutam octetul a in registrul al
mul al; inmultim continutul registrului al cu al
mov resultSecond, ax; mutam continutul registrului al in cuvantul resultSecond =
25

mov ax, b; mutam cuvantul b in registrul ax


mul ax; inmultim continutul registrului ax cu ax, 10 * 10 = 100
sub resultSecond, ax ; scadem din ax resultSecond = 100 - 25 = 75
sub resultSecond, 5; scadem din resultSecond 5 = 70

mov ax, resultFirst


mov ax, resultSecond
movsx eax, ax
mov ax, resultFirst; mutam cuvantul resultFirst(125) in registrul ax
cwd; am convertit cuvantul din ax, in dublu cuvantul , retinut in dx:ax
idiv resultSecond ; obtinem ctul n ax si restul n dx, ax = 1, dx = 55

call Crlf
mov result, ax; plasam catul in cuvantul result
mov bx, dx; salvam restul din dx in registrul bx
movsx eax, result
;mov eax,DWORD ptr result ; plasam in partea de jos al registrului eax cuvantul
result
mov edx,OFFSET rezultatul ; atribuim registrului edx offsetul sirului de caract
ere rezultatul
call WriteString; afisam sirul
call WriteInt; afisam rezultatul
;Plasam cursorul la inceputul urmatorului rand
mov edx, OFFSET newline
call WriteString

mov cat, bx
mov eax,DWORD ptr cat
mov edx,OFFSET catul
call WriteString
call WriteInt
mov edx, OFFSET newline
call WriteString
exit
main ENDP
END main

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