teste

Dúvida Resolvida: Como criar variáveis em Assembly

Nosso leitor João Carlos B. nos contactou com algumas dúvidas acerca da linguagem assembly, e solucionamos a primeira, que é uma pergunta que muitos se fazem ao iniciar na programação em Assembly, como criar variáveis nesta linguagem de tão baixo nível (não confunda, baixo nível quer dizer que deve-se programar diretamente nos registradores da máquina, diferente de uma linguagem orientada a objetos)? É simples.

Como usar a memoria e criar variaveis para utilizar no programa.

As variáveis no assembly são um pouco diferentes quando comparadas com
as de outras linguagens de programação. Os dados podem ser inseridos
diretamente no programa com DB, DW e DD (onde B=byte=8bits, W=word=16
bits e D=duplo word=32 bits). Todas as variáveis devem ser declaradas
logo antes de ".code" que indica o inicio da programação.

Assim podemos atribuir nomes para as variáveis, para os dados, para
melhor identificá-los.
Ex.s:

arquivotexto      DB     "ARQUIVO.txt" (Esta variável é usada como string).
msgbusca db "Escreva a palavra para busca:$" (Esta cria uma mensagem
para ser utilizada na interface do programa).
AUX        DW    ?  "Esta variável pode ser utilizada como se fosse um
buffer para armazenas valores dos registradores".

Abaixo uma descrição melhor com vários casos e alguns em que na
criação da variável é logo atribuido um valor inicial (Assim como a
variavel "arquivotexto" acima:

varb   db 0            ; 1 byte chamado "varb" é inserido
varw   dw 0            ; 1 word chamado "varw" é inserido (1 word=2 bytes)
vard   dd 0            ; 1 duplo chamado "vard" é inserido (1 double=4 bytes)

b2     db 0,1          ; 2 bytes chamados "b2" são inseridos
w3     dw 1,1,1        ; 3 words chamados "w3" são inseridos

str    db 'abcd'       ; uma string (4 bytes) chamada "str" é inserida

Espero ter ajudado.

Obs.: Só utilize variáveis caso realmente seja necessário, utiliza
preferencialmente os registradores, SI (para inteiros), DX para
strings e AH para caracteres simples.