Jump to content
JorgeLuizGouveiaSousa

Dúvidas básicas (Iniciante)

 Read less than a minute

Recommended Posts

 Read less than a minute

Olá a todos,

Sou iniciante em ASSEMBLER

Criei esse tópico para esclarecer dúvidas básicas. Que não se aprofunda. 

Criei esse tópico para tirar dúvidas.

Obrigado a quem me ajudar.

Share this post


Link to post
Share on other sites
 Read 1 minute

Depende do que você interpreta por "variável". Um valor numérico pode ser armazenado na memória ou num registrador... Ela pode ser inteira ou ponto flutuante... Para mostrar, na sintaxe do NASM, eis alguns exemplos:

section .data

; define uma região de 4 bytes no segmento de dados contendo o valor 0x0000000A (10), nomeado 'myvar'
myvar:  dd  10

Daqui para frente, a referência à memória é feita através desse "identificador" 'myvar'. Por exemplo:

mov eax,[myvar]   ; Lê 4 bytes da memória, na posição de 'myvar', no segmento de dados, e coloca em EAX.

Note que poderíamos colocar o valor 10 diretamente em EAX e, nesse caso, o registrador EAX seria sua "variável":

mov eax,10

No caso do NASM, valores numéricos em ponto flutuante podem ser atribuídos da mesma forma, na memória:

section .data

myvar2:	 dd  3.141592

Esse 'myvar2' é um float, ocupando 4 bytes, da mesma forma que um 'int', no exemplo anterior. E, assim como no exemplo anterior, ele pode ser acessado por uma instrução, mas o 'registrador' será diferente... Por exemplo, via SSE:

movss xmm0,[myvar2]

Outro lugar onde suas varíaveis podem ser colocadas é na pilha. É o caso de variáveis 'locais'. Mas, isso exige alguma manipulação do "apontador de pilha" (ESP ou RSP, dependendo do modo de operação). Por exemplo:

sub  rsp,8  ; reserva espaço na pilha (precisa estar alinhada de 8 em 8 bytes!).

mov dword [rsp],10  ; escreve 10 na pilha.
...

add rsp,8  ; recupera o espaço reservado anteriormente...

Bons compiladores de alto nível (C, por exemplo) tentam manter as variáveis locais em registradores sempre que podem para evitar esse tipo de manipulação da pilha (e gastar menos espaço na memória, ganhando velocidade de processamento também).

Share this post


Link to post
Share on other sites
 Read less than a minute

Está dando erro, meu CPU é ADM e não consigo o comando da placa mãe ADM.

Erro:

C:\nasm>nasm -fwin64 variavel_inteiro.asm.txt -o variavel_inteiro.exe

C:\nasm>variavel_inteiro
Esta versão de C:\nasm\variavel_inteiro.exe não é compatível com a versão do Windows sendo executada. Verifique as informações de sistema do computador e contate o fornecedor do software.

Share this post


Link to post
Share on other sites
 Read less than a minute

Em primeiro lugar, a explicação que dei acima está bem longe de ser um código compilável (são fragmentos). Em segundo... o que diabos é uma "CPU ADM"?

Share this post


Link to post
Share on other sites
 Read less than a minute

Existem diferenças óbvias entre "dúvida" e "ignorância" (no sentido estrito da palavra). Não saber alguma coisa não é uma "dúvida"...
Recomendo que procure material para estudo e estude...

Eis alguns pontos:

  • Não existe linguagem "ASSEMBLER"... Assembler é o nome dado ao compilador da linguagem "Assembly" (com 'y'). Vem do inglês, "montador";
  • Não existe UMA linguagem assembly: Cada família de processadores tem a sua... Intel/AMD x86 é diferente dos ARM, que é diferente dos Risc-V, que é diferente dos MIPS, PowerPC, etc...;
  • Existem vários "sabores" de ASSEMBLERs (montadores);
  • Existem vários modos de operação nos x86-64... Um programa feito para DOS não funciona no Windows e vice-versa (especialmente no Win10);
  • Um "hello world" em assembly dependerá do sistema operacional em uso e do modo de operação... Assembly não é, por definição, portável.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...