Umbrella System
Olá Convidado, registre-se no fórum, não é preciso confirmar o registro é totalmente grátis e rápido.

Logue-se e faça parte do melhor fórum sobre Programação & Hacking de Jogos!

Equipe Umbrella System - Sempre Inovando!

Participe do fórum, é rápido e fácil

Umbrella System
Olá Convidado, registre-se no fórum, não é preciso confirmar o registro é totalmente grátis e rápido.

Logue-se e faça parte do melhor fórum sobre Programação & Hacking de Jogos!

Equipe Umbrella System - Sempre Inovando!
Umbrella System
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Exemplos de programas no Debug

2 participantes

Ir para baixo

Exemplos de programas no Debug Empty Exemplos de programas no Debug

Mensagem por Vector Sáb Abr 14, 2012 10:55 pm

Primeiro exemplo

Código:
- a0100
297D:0100    MOV    AX,0006    ;Põe o valor 0006 no registrador AX
297D:0103    MOV    BX,0004    ;Põe o valor 0004 no registrador BX
297D:0106    ADD    AX,BX      ;Adiciona BX ao conteúdo de AX
297D:0108    INT    20        ;Finaliza o Programa

A única coisa que este programa faz é salvar dois valores em dois registradores e adicionar o valor de um ao outro.

Segundo exemplo
Código:

- a100
0C1B:0100 jmp 125 ;Salta para o endereço 125h
0C1B:0102 [Enter]
- e 102  'Hello, How are you ?' 0d 0a '$'
- a125
0C1B:0125 MOV DX,0102 ;Copia a string para registrador DX
0C1B:0128 MOV CX,000F ;Quantas vezes a string será mostrada
0C1B:012B MOV AH,09  ;Copia o valor 09 para registrador AH
0C1B:012D INT 21      ;Mostra a string
0C1B:012F DEC CX      ;Subtrai 1 de CX
0C1B:0130 JCXZ 0134  ;Se CX é igual a 0 salta para o endereço 0134
0C1B:0132 JMP 012D    ;Salta ao endereço 012D
0C1B:0134 INT 20      ;Finaliza o programa

Este programa mostra 15 vezes na tela a string de caracteres.

Terceiro exemplo

Código:
-a100
297D:0100      MOV    AH,01    ;Função para mudar o cursor
297D:0102      MOV    CX,0007  ;Formata o cursor
297D:0105      INT    10      ;Chama interrupção do BIOS
297D:0107      INT    20      ;Finaliza o programa

Este programa muda o formato do cursor.

Quarto exemplo

Código:
-a100
297D:0100    MOV  AH,01  ;Função 1 (lê caractere do teclado)
297D:0102    INT  21    ;Chama interrupção do DOS
297D:0104    CMP  AL,0D  ;Compara se o caractere lido é um ENTER
297D:0106    JNZ  0100  ;Se não é, lê um outro caractere
297D:0108    MOV  AH,02  ;Função 2 (escreve um caractere na tela)
297D:010A    MOV  DL,AL  ;Character to write on AL
297D:010C    INT  21    ;Chama interrupção do DOS
297D:010E    INT  20    ;Finaliza o programa

Este programa usa a interrupção 21h do DOS. Usa duas funções da mesma: a primeira lê um caractere do teclado (função 1) e a segundo escreve um caractere na tela. O programa lê caracteres do teclado até encontrar um ENTER.

Quinto exemplo

Código:
-a100
297D:0100  MOV  AH,02  ;Função 2 (escreve caractere na tela)
297D:0102  MOV  CX,0008 ;Põe o valor 0008 no registrador CX
297D:0105  MOV  DL,00  ;Põe o valor 00 no registrador DL
297D:0107  RCL  BL,1    ;Rotaciona o byte em BL um bit para a esquerda
297D:0109  ADC  DL,30  ;Converte o registrador de flag para 1
297D:010C  INT  21      ;Chama interrupção do DOS
297D:010E  LOOP 0105    ;Salta se CX > 0 para o endereço 0105
297D:0110  INT  20      ;Finaliza o programa

Este programa mostra na tela um número binário através de um ciclo condicional (LOOP) usando a rotação do byte.

Sexto exemplo

Código:
-a100
297D:0100  MOV  AH,02  ;Função 2 (escreve caractere na tela)
297D:0102  MOV  DL,BL  ;Põe o valor de BL em DL
297D:0104  ADD  DL,30  ;Adiciona o valor 30 a DL
297D:0107  CMP  DL,3A  ;Compara 3A com conteúdo de DL sem afetá-lo
                      ;apenas modifica o estado do flag de carry
297D:010A  JL  010F  ;salta ao endereço 010f, se for menor
297D:010C  ADD  DL,07  ;Adiciona o valor 07 a DL
297D:010F  INT  21    ;Chama interrupção do DOS
297D:0111  INT  20    ;Finaliza o programa

Este programa imprime um valor zero em dígitos hexadecimais.

Sétimo exemplo

Código:
-a100
297D:0100  MOV  AH,02  ;Função 2 (escreve caractere na tela)
297D:0102  MOV  DL,BL  ;Põe o valor de BL em DL
297D:0104  AND  DL,0F  ;Transporta fazendo AND dos números bit a bit
297D:0107  ADD  DL,30  ;Adiciona 30 a Dl
297D:010A  CMP  DL,3A  ;Compara Dl com 3A
297D:010D  JL  0112  ;Salta ao endereço 0112, se menor
297D:010F  ADD  DL,07  ;Adiciona 07 a DL
297D:0112  INT  21    ;Chama interrupção do DOS
297D:0114  INT  20    ;Finaliza o programa

Este programa é usado para imprimir dois dígitos hexadecimais.

Oitavo exemplo

Código:
-a100
297D:0100    MOV  AH,02  ;Função 2 (escreve caractere na tela)
297D:0102    MOV  DL,BL  ;Põe o valor de BL em DL
297D:0104    MOV  CL,04  ;Põe o valor 04 em CL 
297D:0106    SHR  DL,CL  ;Desloca os 4 bits mais altos do número
                          ;ao nibble mais à direita
297D:0108    ADD  DL,30  ;Adiciona 30 a DL
297D:010B    CMP  DL,3A  ;Compara Dl com 3A
297D:010E    JL    0113    ;Salta ao endereço 0113, se menor
297D:0110    ADD  DL,07  ;Adiciona 07 a DL
297D:0113    INT  21      ;Chama interrupção do DOS
297D:0115    INT  20      ;Finaliza o programa
Este programa imprime o primeiro de dois dígitos hexadecimais.

Nono exemplo

Código:
-a100
297D:0100    MOV  AH,02  ;Função 2 (escreve caractere na tela)
297D:0102    MOV  DL,BL  ;Põe o valor de BL em DL
297D:0104    MOV  CL,04  ;Põe o valor 04 em CL 
297D:0106    SHR  DL,CL  ;Desloca os 4 bits mais altos do número
                          ;ao nibble mais à direita
297D:0108    ADD  DL,30  ;Adiciona 30 a DL
297D:010B    CMP  DL,3A  ;Compara Dl com 3A
297D:010E    JL    0113    ;Salta ao endereço 0113, se menor
297D:0110    ADD  DL,07  ;Adiciona 07 a DL
297D:0113    INT  21      ;Chama interrupção do DOS
297D:0115    MOV  DL,BL  ;Põe o valor de BL em DL
297D:0117    AND  DL,0F  ;Transporta fazendo AND dos números bit a bit
297D:011A    ADD  DL,30  ;Adiciona 30 a DL
297D:011D    CMP  DL,3A  ;Compara Dl com 3A
297D:0120    JL    0125    ;Salta ao endereço 0125, se menor
297D:0122    ADD  DL,07  ;Adiciona 07 a DL
297D:0125    INT  21      ;Chama interrupção do DOS
297D:0127    INT  20      ;Finaliza o programa

Este programa imprime o segundo de dois dígitos hexadecimais.

Décimo exemplo

Código:
-a100
297D:0100    MOV  AH,01  ;Função 1 (lê caractere do teclado)
297D:0102    INT  21      ;Chama interrupção do DOS
297D:0104    MOV  DL,AL  ;Põe o valor de AL em DL
297D:0106    SUB  DL,30  ;Subtrai 30 de DL
297D:0109    CMP  DL,09  ;Compara DL com 09
297D:010C    JLE  0111    ;Salta ao endereço 0111, se menor ou igual
297D:010E    SUB  DL,07  ;Subtrai 07 de DL
297D:0111    MOV  CL,04  ;Põe o valor 04 em CL
297D:0113    SHL  DL,CL  ;Insere zeros à direita
297D:0115    INT  21      ;Chama interrupção do DOS
297D:0117    SUB  AL,30  ;Subtrai 30 de AL
297D:0119    CMP  AL,09  ;Compara AL com 09
297D:011B    JLE  011F    ;Salta ao endereço 011f, se menor ou igual
297D:011D    SUB  AL,07  ;Subtrai 07 de AL
297D:011F    ADD  DL,AL  ;Adiciona AL a DL
297D:0121    INT  20      ;Finaliza o programa

Este programa pode ler dois dígitos hexadecimais.

Décimo primeiro exemplo

Código:
-a100
297D:0100    CALL    0200  ;Chama um procedimento
297D:0103    INT    20    ;Finaliza o programa

-a200
297D:0200    PUSH  DX    ;Põe o valor de DX na pilha
297D:0201    MOV    AH,08  ;Função 8
297D:0203    INT    21    ;Chama interrupção do DOS
297D:0205    CMP    AL,30  ;Compara AL com 30
297D:0207    JB    0203  ;Salta se CF é ativado ao endereço 0203
297D:0209    CMP    AL,46  ;Compara AL com 46
297D:020B    JA    0203  ;Salta ao endereço 0203, se diferente
297D:020D    CMP    AL,39  ;Compara AL com 39
297D:020F    JA    021B  ;Salta ao endereço 021B, se diferente
297D:0211    MOV    AH,02  ;Função 2 (escreve caractere na tela)
297D:0213    MOV    DL,AL  ;Põe o valor de AL em DL
297D:0215    INT    21    ;Chama interrupção do DOS
297D:0217    SUB    AL,30  ;Subtrai 30 de AL
297D:0219    POP    DX    ;Extrai o valor de DX da pilha
297D:021A    RET          ;Retorna o controle ao programa principal
297D:021B    CMP    AL,41  ;Compara AL com 41
297D:021D    JB    0203  ;Salta se CF é ativado ao endereço 0203
297D:021F    MOV    AH,02  ;Função 2 (escreve caractere na tela)
297D:022    MOV    DL,AL  ;Põe o valor AL em DL
297D:0223    INT    21    ;Chama interrupção do DOS
297D:0225    SUB    AL,37  ;Subtrai 37 de AL
297D:0227    POP    DX    ;Extrai o valor de DX da pilha
297D:0228    RET          ;Retorna o controle ao programa principal

Este programa se mantém lendo caracteres até receber um que possa ser convertido para um número hexadecimal.


Créditos:
Vector - Por Postar Aqui & Organizar.
Dark Side - Por Postar em Outro Site.
Fonte : Tutorial de linguagem Assembly

Vector
Vector
Administrador
Administrador

Mensagens : 325
Agradecido : 69
Data de inscrição : 14/01/2012
Idade : 33
Localização : ..::::Posso estar atras de você::::..

http://www.umbrellasystem.com.br

Ir para o topo Ir para baixo

Exemplos de programas no Debug Empty Re: Exemplos de programas no Debug

Mensagem por oO>Kssio<Oo™ Qui maio 10, 2012 2:57 pm

To começando a gostar dessa linguagem tbm, vo procurar umas video aulas, se eu encontra umas boas eu posto os links no fórum....parece ser bem interessante a forma dos comandos....
oO>Kssio<Oo™
oO>Kssio<Oo™
Membro
Membro

Mensagens : 163
Agradecido : 2
Data de inscrição : 25/04/2012
Idade : 33
Localização : MT.ROO

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos