Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

[Tutorial][Assembly] Hello World! no DEBUG


felipeanchieta
 Compartilhar

Posts Recomendados

Olá a todos!

Estou começando a brincar no Assembly (nada sério, minha paixão é o C++) e estarei repassando um tutorial para vocês.

 

Não é Ctrl+C Ctrl+V porque o site é em inglês e tentarei ensinar pelo método mais fácil possível

 

1. Registradores e mnemônicos (básico)

 

As CPUs trabalham em código-binário. Se não sabe o que é, wikipedia sabe.

 

Esse sistema número é complexo, e este foi o único método para programar o ENIAC, o Mark II ou outros computadores de 1950~1960.

 

Eis que surge a linguagem Assembly, a linguagem de máquina mais fácil.

 

Ao invés de utilizar de instruções binárias (ex: 0010 0101:0101 0101), utilizou-se mnemônicos ( wikipedia sabe o que é), exemplo:

 

MOV AX,0004

 

A instruçao MOV move para o registrador AX o valor 4 em decimal.

 

Registradores são "espaços" na CPU utilizados para o processamento dos programas. Cada tipo de CPU tem seus registradores e especificações.

 

Não irei ficar me aprofundando aqui sobre registradores, pois ainda sou noob nessa área =P

 

Vou postar uma relação entre os tipos da linguagem C/C++ e os registradores da CPU:

Modelo da tabela.

 

FONTE: C Completo e Total de Hebert Shildt \/

 

tipo:registrador

 

char e unsigned char: AL

short e unsigned short: AX

int e unsigned int: AX

long e unsigned long: Palavra de baixa ordem em AX e palavra de alta ordem em DX

 

float e double: Endereço do valor retornado, AX contém deslocamento, DX contém segmento

 

struct e union: O mesmo do de cima :P

 

Bom, agora vamos parar de blá blá blá e programar. Sugiro que você leia algo sobre Assembly para acrescentar oq eu falei.

 

 

 

2. DEBUG

 

Este programa está em todas as versões do Windows desde DOS 1.0. Este programa, DEBUG.COM programa em Assembly 16 bits ( old-school, cult /,,/ ) e claro, como o nome diz, ele serve para DEBUGAR programas... de 16 bits.

Considerações:

 

Debug só programa arquivos .COM

O tamanho máximo dos arquivos .COM é 64 Kilobytes

O debug faz programa muito pequenos e bem úteis :D

 

Comandos do debug que utilizaremos:

 

Após abrir o debug pelo prompt de comando, a linha ficará assim:

 

-

 

Daí você poderá digitar os comandos necessários:

 

-A: assembly

-H: subtrai o último endereço pelo endereço 0100 e retorna o valor hexadecimal

-N: nomeia o programa

-G =100: testa o programa

-RCX: tá o tamanho do programa que o -H retornará

-W: escreve o arquivo na pasta atual

 

 

3. Hello World

 

Após abrir o debug, digite a 100 para podermos editar o endereço 100 em diante.

 

Após isso você irá começar a programa. Adicione apenas o que estará em azul e aperte ENTER, de verde ficará os comentários precedidos por um ponto-e-vírgula, isso vc não escreve duh!

 

OBSERVAÇÕES:

 

1- NÃO ERRE!

2- NO TECLADO BRASILEIRO, PARA DIGITAR AS ASPAS APERTE ~

3- EM VERMELHO SÃO OS VALORES QUE VARIAM DE PC PARA PC

 

xxxx:0100 JMP 113 ;pula para o enderço 126

xxxx:0102 DB 0d,0a,"Hello World!" ;salva na memória o string

xxxx:0110 DB 0d,0a,"$" ;termina a string

xxxx:0113 MOV AH,9 ;função 9 da interrupção 21 do DOS

xxxx:0115 MOV DX,102 ;move para DX o valor de 0102

xxxx:0118 INT 21 ;escreve a string no prompt

xxxx:011A MOV AH,0 ;função 0 da interrupção 21 do DOS

xxxx:011C INT 21 ;termina o programa

xxxx:011E [AGORA VOCÊ APERTA ENTER]

 

Bom, agora vamos testar!

Digite no debug

 

-g =100

 

A saída será assim:

 

Hello World!

 

Program terminated normally

 

 

4 - Salvando

 

No debug...

Voce vai usar o H para subtrair o endereço final do endereço do começo. Daí vc vai saber o tamanho do programa (em hexadecimal)

 

-h 11E 100

xxxx 001E <- isso é o importante

 

Registre no CX o tamanho do arquivo

 

-rcx

CX 0000

:1E

 

Dê o nome:

-n hello.com

 

E salve:

-w

Writing 001E bytes

 

Depois saia do infeliz do debug:

-q

Depois digite o nome do arquivo, HELLO.COM e ele irá executar...

 

Hello World!

 

 

5. Considerações Finais

 

Espero ter ajudado alguém... talvez...

 

Mas em assembly hoje em dia, não se utiliza o DEBUG devido a seus riscos.

 

Pesquise sobre Assembly, baixe o MASM e comece a programar. Utilize a WINDOWS API no Assembly, que terá um programação bem mais fácil ! XD

 

Fonte parcial:

É necessário se cadastrar para acessar o conteúdo.

 

Boa sorte!

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.