JorgeLuizGouveiaSousa Posted January 10, 2020 at 01:33 PM Share Posted January 10, 2020 at 01:33 PM 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. Link to comment Share on other sites More sharing options...
fredericopissarra Posted January 10, 2020 at 10:39 PM Share Posted January 10, 2020 at 10:39 PM Hummm... E cadê as dúvidas? Link to comment Share on other sites More sharing options...
JorgeLuizGouveiaSousa Posted January 14, 2020 at 09:15 PM Author Share Posted January 14, 2020 at 09:15 PM Primeira pergunta é como coloco uma variável numérica? Link to comment Share on other sites More sharing options...
fredericopissarra Posted January 15, 2020 at 08:16 AM Share Posted January 15, 2020 at 08:16 AM 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). Link to comment Share on other sites More sharing options...
JorgeLuizGouveiaSousa Posted January 15, 2020 at 04:40 PM Author Share Posted January 15, 2020 at 04:40 PM 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. Link to comment Share on other sites More sharing options...
fredericopissarra Posted January 15, 2020 at 11:13 PM Share Posted January 15, 2020 at 11:13 PM 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"? Link to comment Share on other sites More sharing options...
JorgeLuizGouveiaSousa Posted January 16, 2020 at 09:56 PM Author Share Posted January 16, 2020 at 09:56 PM Windows 10 Pro ADM Sempron(tm) Processor LE-1250 2.21 GHz Sistema Operacional de 64 bits, processador cum base em x64 Então como é o Hello Word em ASSEMBLY? Link to comment Share on other sites More sharing options...
fredericopissarra Posted January 16, 2020 at 10:49 PM Share Posted January 16, 2020 at 10:49 PM Cruz credo... compra um processador decente, misifio... Link to comment Share on other sites More sharing options...
fredericopissarra Posted January 16, 2020 at 11:05 PM Share Posted January 16, 2020 at 11:05 PM 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. Link to comment Share on other sites More sharing options...
JorgeLuizGouveiaSousa Posted January 17, 2020 at 06:39 PM Author Share Posted January 17, 2020 at 06:39 PM CRUZES!!!!! QUE HORRO!!! É pior que punheta!!!! Sou programador Java, Javascript e PHP. Recomenda-me uma apostila ASSEMBLY para iniciantes? Link to comment Share on other sites More sharing options...
fredericopissarra Posted January 17, 2020 at 10:07 PM Share Posted January 17, 2020 at 10:07 PM Consulte a sessão de downloads do Forum... Link to comment Share on other sites More sharing options...
JorgeLuizGouveiaSousa Posted January 18, 2020 at 06:39 PM Author Share Posted January 18, 2020 at 06:39 PM Qual é o primeiro exemplo para utilizar no meu primeiro programa? Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.