Escreva um código para armazenar os valores 0 x 30 e 0 x 97 nas posições de memória 0 x 105 e 0 x 106, respectivamente.

Passo 1

Beleza! O enunciado pede pra gente escrever um código em assembly que guarde os valores 0x30 e 0x97 nas posições de memória 0x105 e 0x106, respectivamente. Aqui o conteúdo é manipulação de memória em assembly (uso de endereçamento direto e da instrução MOV). Pra resolver, vamos precisar saber como:
  • Identificar um endereço de memória em assembly;
  • Usar a instrução MOV para escrever um byte na memória.

Passo 2

Primeiro, um pouquinho de teoria sobre memória e registradores:
  • A “memória” é um monte de caixinhas numeradas (cada uma guarda um byte).
  • Um “registrador” é uma caixinha interna do processador, onde ele faz contas rápidas.
  • Em assembly, pra acessar uma posição de memória a partir de um endereço fixo, a gente coloca o endereço entre colchetes, tipo [0x105]. Isso indica “o conteúdo que está no endereço 0x105”.

Passo 3

Agora, a instrução MOV em x86 (8 bits) funciona assim:
MOV destino, origem
  • Se destino for [endereço], a gente tá escrevendo na memória.
  • A origem pode ser um valor imediato (por exemplo, 0x30) ou um registrador.
    Então, para gravar direto um número em memória, usamos algo como
MOV BYTE PTR [endereço], valor_imediato
O BYTE PTR só deixa claro que a gente quer mover um byte (8 bits).

Passo 4

Vamos escrever o código passo a passo:
  1. Guardar o valor 0x30 no endereço 0x105:
    MOV   BYTE PTR [0x105], 0x30
    
  2. Guardar o valor 0x97 no endereço 0x106:
    MOV   BYTE PTR [0x106], 0x97
    

Resposta

; assemble para x86, modo real ou protegido
MOV   BYTE PTR [0x105], 0x30   ; coloca 0x30 na posição de memória 0x105
MOV   BYTE PTR [0x106], 0x97   ; coloca 0x97 na posição de memória 0x106

Exercícios relacionados