Ir ao conteúdo
  • Cadastre-se

Assembly


Posts recomendados

  • Membro VIP

PessoALL estou iniciando em Assembly. Com um pequeno tutorial consegui fazer um programa que mostra uma mensagem na tela. :D

Por enquanto tudo certo, o meu problema é que eu não consigo "criar" em Assembly, ou seja, não consigo colocar os comandos no local certo "sozinho" sem um código-fonte como base. Será que é tão difícil assim? :blink:

Sei que vocês vão me perguntar o que eu quero criando aplicativos em Assembly mas eu não quero trabalhar com isso, apenas desejo para uma satisfação pessoal e aprendizado de uma linguagem tão poderosa, veloz e de nível tão baixo.

Eu tenho dúvidas em qual registrador usar, etc. Por exemplo, se eu quisesse mostrar um texto tela de Windows (com GUI), como faria? Só sei em console (DOS).

Agradeço qualquer ajuda ou indicação de tutorial/livro. :-BEER

Abraços,

Fernando

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Caro Fernando

Colocar os comandos "sozinho" não deveria ser tão complicado. É verdade que assembler é mais "cheio de história" do que outras linguagens.

Um bom documento pra ter como referência é o manual da Intel (ou da AMD) com a lista de instruções. Manuais Intel

O cjto de instruções é o manual 2 (os outros não são tão interessantes)

Esses manuais servem pra qualquer um (P4/Athlon) só que é óbvio que não vai ter lá os recursos do Athlon 3DNow (mas SSE tem)

O problema de fazer um programa em Assembler pra Windows é que você tem que saber chamar as funções "na mão" isto é, empilhando todos os parâmetros e depois chamando o nome certo da função (pra linkar depois - oproblema é que ele é decorado na maiora das vezes)

obs. nomes decorados é um jeito do compilador distinguir funções iguais com parâmetros/retornos diferentes.

Outro jeito (que é como você deve estar fazendo) é chamando as INTs do DOS pra escrever texto, etc... O problema é achar essa lista de ints (veja no programmers heaven.com , deve ter)

Assim, o uso mais comum do assembler é fazer o programa principal em C/C++ e depois construir apenas módulos/funçoes em assembler.

Bom, espero que não tenha ficado muito confuso...

[]s

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Entendi tabgal, valeu pela resposta. Bom, eu usei o seguinte código para um programinha besta que mostra uma frase na tela (em console DOS).

DATA SECTION
WRKEEP DD 0
CODE SECTION
START:
PUSH -11
CALL GetStdHandle
PUSH 0, ADDR WRKEEP
PUSH 9, 'NumaBoa'
PUSH EAX
CALL WriteFile
MOV EAX,0
RET

Repae que usei a função "WriteFile" da API Kernel32.dll. Estou usando o GoAsm como compilador, ele é bem fácil mas pretendo instalar o TASM hoje.

Outra dúvida, se eu escrever um código para o TASM eu posso compilá-lo e linká-lo no MASM ou no GoAsm? Ou seja, todos os compiladores utilizam a mesma linguagem Assembly ou há diferenças na programação para cada um?

Pergunto isso porque testei o seguinte código e não consegui compilá-lo com o GoAsm:

.MODEL SMALL
.STACK
.CODE
mov ah,01h
mov cx,07h
int 10h
mov ah,4ch
int 21h
END

Repare algumas diferenças para o código anterior como "." antes do comando e "END" pra terminar em vez de "RET", por que isso?

Abraços! ^_^

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

www.forumweb.com.br - vá até a seção outras linguagens -> assembly tem muitos tutoriais e foi lá que consegui arrumar uma ajudinha quando estava precisando fazer o programa!

O difícil de ASM é a lógica ... eu fiz um trabalho pra faculdade em ASM e suei pra fazer o bichinho funcionar, você sempre vai ter problemas com assembler, uns compilam outros não !

O legal também é você baixar uma máquina virtual que ai você aprende a base de processadores, tem um programa que se chama ANT, dá uma olhada e vê se você encontra ele ai !

Abraços!

Link para o comentário
Compartilhar em outros sites

Fernando...

A diferença entre os 2 códigos é que o 1o é pra Windows e o 2o é pra DOS...

O 2o código que você postou deve estar pro MASM... tire as linhas que começam com pont no começo, e aquele END do fim, talvez funcione.

Outro compilador bom é o NASM.

Esse GoAsm tem uma sintaxe diferente, mas pelo jeito é bonzinho...

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Postado Originalmente por tabgal@04 jan 2004, 12:26

Fernando...

A diferença entre os 2 códigos é que o 1o é pra Windows e o 2o é pra DOS...

O 2o código que você postou deve estar pro MASM... tire as linhas que começam com pont no começo, e aquele END do fim, talvez funcione.

Outro compilador bom é o MASM.

Esse GoAsm tem uma sintaxe diferente, mas pelo jeito é bonzinho...

Ok. O segundo é pro NASM sim mas não funcionou tirando os pontos e retirando o END (substituindo por RET). Eu gostei deste GoAsm, pena que a sintaxe é diferente. :(

http://menuetos.org/ esse OS aí e todo escrito em assembley e é opensource tem muita documentação la.

Valeu a dica amigo!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 17 anos depois...

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!