Skip to content

Curso Linguagem Assembly

Curso gratual de programação Assembly X86 para PC

Menu
  • Downloads
  • Suporte
  • O que vamos aprender hoje ?
Menu

Acessando a Memória

Acesso a memória é o tipo de coisa que acontece o tempo todo, o asssembly faz acessos a memória o tempo todo, na verdade toda linguagem faz, mas isto acontece automaticamente.

Neste programa vamos fazer a leitura de um endereço de memória, digo … um endereço informado numericamente.

Quando fazemos isto em um código Assembly:

frase     DB “Ola mundo assembly intel”

O label “frase” na verdade é um endereço de memória, quando passamos este código pelo compilador e o programa .ASM se transforam em .EXE, o nome “frase” vai sumir! e tudo que temos é um endereço de memória numérico do tipo FEA4h , na verdade, na hora de programar, é mais cômido usar label do tipo “frase como no exemplo.

Então vamos ler diretamente da memória, do endereço 0033h.

Neste exemplo, usaremos registradores de 16 bits, para usar o emulador emu8086, se você ainda não baixou, baixe-o.

MOV SI, 0033h
MOV AX, [SI]

O código acima faz a leitura do endereço 0033h da memória, na primeira linha ele informa o endereço a ser lido que é 0033h, na segunda alinha, move o valor para o registrador AX usando o comando MOV do assembly.

 

Vamos fazer um código um pouco mais ousado, nover o valor de:
AX -> MEMÓRIA -> BX

Mover um valor do registrador AX para BX, se fazer o velho MOV BX,AX, na verdade isto seria muito fácil, vamos complicar enviando o valor para memóira e recuperando com outro registrador.

MOV AX, 123
MOV SI, 0033h
MOV [ SI ], AX
MOV BX, [ SI ]

O valor 123 vai passar para memória no endereço 0033h, e depois enviado para o registrador BX.

mover-valor-memoria

Movendo valor através dos STACK

O recurso de stack (PUSH, POP), é uma das formas mais simples de se fazer isto, neste caso não é preciso encontrar um endereço disponível, basta enviar para área do stack com PUSH e recuperar com POP.

MOV    AX, 123

PUSH  AX
POP     BX

Perceba que não é necessario procurar um endereço para enviar o valor 123, a própria CPU encontra  um endereço disponível no segmento Stack e envia para lá, este envio é feito com o PUSH AX, o valor de AX é enviado so Stack, já o POP BX recupera o valor recém enviado, facil.

mover-valor-stack

Perceba que usamos o recurso do Stack (com PUSH para empurrar e POP para recuperar, não precisamos nos recuperar com endereço de memória onde gravar)

 

 

 

 

Curso

  • Sistema Linux
  • Diretivas INVOKE e PROC
©2025 Curso Linguagem Assembly | Design: Newspaperly WordPress Theme