JorgeLuizGouveiaSousa Postado Janeiro 10, 2020 em 13:33 Compartilhar Postado Janeiro 10, 2020 em 13:33 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 para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Janeiro 10, 2020 em 22:39 Compartilhar Postado Janeiro 10, 2020 em 22:39 Hummm... E cadê as dúvidas? Link para o comentário Compartilhar em outros sites More sharing options...
JorgeLuizGouveiaSousa Postado Janeiro 14, 2020 em 21:15 Autor Compartilhar Postado Janeiro 14, 2020 em 21:15 Primeira pergunta é como coloco uma variável numérica? Link para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Janeiro 15, 2020 em 08:16 Compartilhar Postado Janeiro 15, 2020 em 08:16 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 para o comentário Compartilhar em outros sites More sharing options...
JorgeLuizGouveiaSousa Postado Janeiro 15, 2020 em 16:40 Autor Compartilhar Postado Janeiro 15, 2020 em 16:40 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 para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Janeiro 15, 2020 em 23:13 Compartilhar Postado Janeiro 15, 2020 em 23:13 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 para o comentário Compartilhar em outros sites More sharing options...
JorgeLuizGouveiaSousa Postado Janeiro 16, 2020 em 21:56 Autor Compartilhar Postado Janeiro 16, 2020 em 21:56 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 para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Janeiro 16, 2020 em 22:49 Compartilhar Postado Janeiro 16, 2020 em 22:49 Cruz credo... compra um processador decente, misifio... Link para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Janeiro 16, 2020 em 23:05 Compartilhar Postado Janeiro 16, 2020 em 23:05 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 para o comentário Compartilhar em outros sites More sharing options...
JorgeLuizGouveiaSousa Postado Janeiro 17, 2020 em 18:39 Autor Compartilhar Postado Janeiro 17, 2020 em 18:39 CRUZES!!!!! QUE HORRO!!! É pior que punheta!!!! Sou programador Java, Javascript e PHP. Recomenda-me uma apostila ASSEMBLY para iniciantes? Link para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Janeiro 17, 2020 em 22:07 Compartilhar Postado Janeiro 17, 2020 em 22:07 Consulte a sessão de downloads do Forum... Link para o comentário Compartilhar em outros sites More sharing options...
JorgeLuizGouveiaSousa Postado Janeiro 18, 2020 em 18:39 Autor Compartilhar Postado Janeiro 18, 2020 em 18:39 Qual é o primeiro exemplo para utilizar no meu primeiro programa? Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.