domingo, 25 de setembro de 2011

Soma de dois numeros em Assembly

              .data

num1: .word 3
num2: .word 2
msg: .asciiz "3 "
msg2: .asciiz "2 "
result: .asciiz "5"

.text
# escrever a msg
la $a0, msg #coloca em $a0 o endereço da msg
li $v0, 4 #coloca em $v0 o código para print string
syscall #chama o sistema e executa a ordem.

#ler o primeiro número
li $v0, 5 #código para scanf
syscall
sw $v0, num1 #guardar valor lido em num1

# escrever a msg2
la $a0, msg2 #coloca em $a0 o endereço da msg
li $v0, 4 #coloca em $v0 o código para print string
syscall #chama o sistema e executa a ordem.

#ler o segundo número
li $v0, 5 #same thing, mas agora para um espaco de memoria diferente
syscall #e para o número 2
sw $v0, num2

#soma os dois números
lw $t0, num1 #"carregar" o primeiro número para a memória
lw $t1, num2 #"carregar" o segundo número para a memória
add $a3, $t0, $t1 #soma dos números

#escreve o resultado
li $v0, 1
syscall
la $a0, result #coloca em $a0 o endereço da msg
li $v0, 4 #coloca em $v0 o código para print string
syscall

Sem comentários:

Enviar um comentário