Sistemi di Calcolo

Corso di Laurea in Ingegneria Informatica e Automatica - A.A. 2017-2018

HomePage | Avvisi | Diario lezioni | Programma | Materiale didattico | Esami | Forum | Login

Esercitazione 2 - 21 ottobre 2016 (120 min)


Esercizio 1 (istruzione if, parametri senza indirezione)

Soluzione:
.globl uguali

uguali:
	movl 4(%esp), %ecx
	movl $0, %eax
	cmpl 8(%esp), %ecx
	jne End
	movl $1, %eax
End:
	ret



Esercizio 2 (istruzione if, parametri con indirezione)

Soluzione:
.globl max

max:
	movl 4(%esp), %eax
	movl 8(%esp), %ecx
	movl (%eax), %eax
	movl (%ecx), %ecx
	cmpl %eax, %ecx
	jle end              # if (ecx<=eax) goto end
	movl %ecx, %eax
end:
	ret


Esercizio 3 (istruzione while, somma dei numeri da 1 a n)

Soluzione:
.globl sum1N

sum1N:
	movl 4(%esp), %ecx   # n <-> ecx
	movl $0, %eax        # sum <-> eax
loop:
	cmpl $1, %ecx
	jb end               # if (ecx<1) goto end
	addl %ecx, %eax
	decl %ecx
	jmp loop
end:
	ret


Esercizio 4 (istruzione while, uguaglianza di stringhe C)

Soluzione:
.globl streq

streq:
	movl 4(%esp), %ecx   # s1 <-> ecx
	movl 8(%esp), %edx   # s2 <-> edx
loop:
	movb (%ecx), %al     # *s1 <-> al
	cmpb (%edx), %al
	jne end0
	cmpb $0, %al
	je end1
	incl %ecx
	incl %edx
	jmp loop
end0:
	movl $0, %eax
	ret
end1:
	movl $1, %eax
	ret
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki
Page was generated in 0.0197 seconds