15/10/2014

Começando em Assembly: Movendo e somando         valores


Vamos mover alguns valores de variáveis para registradores, e fazer uma soma :)



Aqui você pode ver que depois das instruções das linhas 18, 19 e 22 serem executadas. Ax e bx ficam com o valor da nossa variável (que é 4F(numero em hexadecimal)).



E agora, depois das instruções das linhas 23 e 24 serem executadas. É somado +5 em ax e esse valor é              movido para bx. Assim ax e bx ficam valendo 54h.




Código disponível para cópia:
code segment
code segment
mov dl,30h ; move o valor correspondente ao caracter 0 na tabela ASCII para DL

incrementa: ; rotina que imprime os números e soma 1
mov ah,02h ; estabelece que o cursor escreverá o caracter na primeira posição da tela
int 21h ; imprime o número

mov ax,3h ; com isso, a instrução int 10h limpa a tela
int 10h ; instrução relacionada a serviços de vídeo, neste caso limpa a tela

cmp dl,39h ; compara o valor de dl com 39 (caracter 9 na tabela ASCII)
je zera ; se for igual a 39, pula pra rotina “zera”, onde o valor de DL voltará a 30h
inc dl ; caso contrário, aumenta em 1 o valor de DL
jmp incrementa ; volta para a rotina “incrementa” e repete o processo

zera:
mov dl,30h ; valor de DL volta a ser 30h (0)
jmp incrementa ; pula para a rotina “incrementa”, onde será aumentado o valor

ends ;fim do segmento de código




0 comentários:

Postar um comentário