Instruções de Desvio Condicional (If e Else)

Lara Teixeira Oliveira

Você vai aprender

Utilizar instruções de desvio condicional

Pré-requisitos

Conhecimento de Lógica de Programação

Conhecimento de programação básica em Assembly

Introdução e exemplo

O objetivo deste tutorial é aprender a utilizar Instruções de Desvio Condicional (If e Else).

Um processador é capaz de tomar decisões baseado nos dados de entrada e nos valores computados durante a execução das instruções.

A instrução abaixo é usada para tomar uma decisão de acordo com o conteúdo de dois registradores.

beq  reg1, reg2, endereço


Esta instrução manda o processador ir para o endereço especificado se o conteúdo de reg1 for igual ao de reg2.

pRIMEIRA INSTRUÇÃO de desvio condicional

No fragmento de código em C abaixo, f, g, h, i e j são variáveis.


if (i == j) goto L1;
	i = g + h;
L1:	f = f – i;


Assumindo que as cinco variáveis (f, g, h, i , j) correspondem aos cinco registradores $0, $1, $2, $3, $4,  o código

em assembly equivalente ao fragmento em C acima seria assim:


beq $3, $4, L1
	add $3, $1, $2
L1: 	sub $0, $0, $3


A instrução BEQ, quando executada, forçará um desvio para o comando com o Label L1, se o valor no registrador $3 for IGUAL ao valor do registrador $4.

BEQ refere-se DESVIE SE IGUAL - BRANCH IF EQUAL

SEGUNDA INSTRUÇÃO de desvio condicional

No fragmento de código em C abaixo, f, g, h, i e j são variáveis.


if (i == j)
	f = g + h;
else
	f = g – h;


Assumindo que as cinco variáveis (f, g, h, i , j) correspondem aos cinco registradores $0, $1, $2, $3, $4, o código

em assembly equivalente ao fragmento em C acima seria assim:


bne $3, $4, Else
	add $0, $1, $2
	j  Exit
Else:	sub $0, $1, $2
Exit:


A instrução BNE, quando executada, forçará um desvio para o comando ELSE, se o valor no

registrador $3 for DIFERENTE ao valor do registrador $4.

BNE refere-se DESVIE SE NÃO IGUAL - BRANCH IF NOT EQUAL

links úteis

Voltar