Curso Assembly

  • Published on
    19-Jul-2016

  • View
    24

  • Download
    3

Embed Size (px)

DESCRIPTION

Curso de Assembly PDF

Transcript

  • Cap.1 Introduo aos Microcomputadores Digitais

    Pgina 1 de 9

    1. Introduo aos Microcomputadores Digitais

    1.1 Organizao de um computador digital

    Um computador digital pode ser descrito de uma forma simplificada segundo o diagrama de blocos:

    CLOCK

    MEMRIAPRINCIPAL

    DE ENTRADA

    E SADA

    UNIDADE CENTRAL DE PROCESSAMENTO - CPU

    UNIDADE

    DISPOSITIVOSDE E/S

    Barramento de dados

    Barramento de endereos

    Barramento de controle

    REGS. DE

    PROPSITOGERAL

    UNIDADE DEARITMTICA E LGICA

    UNID. DE

    CONTROLE

    REGS.ESPECIAIS

  • Cap.1 Introduo aos Microcomputadores Digitais

    Pgina 2 de 9

    Unidade Central de Processamento: - UCP ou CPU Unidade de Controle - UC Unidade de Aritmtica e Lgica - UAL ou ULA Registradores de Propsito Geral Registradores Especficos

    Reg. de Dados da Memria - RDM Reg. de Endereos da Memria - REM Contador de Programa (Program Counter) - PC Registrador de Instrues - RI Apontador de Pilha (Stack Pointer) - SP Outros (conforme a CPU)

    Memria Principal

    Memria Secundria

    Unidade de E/S Interfaces Canais de E/S Processadores de E/S

    Dispositivos de E/S

    Histrico:

    Primeiros computadores eletrnicos surgiram na dcada de 30 IBM PC foi concebido em 1980

  • Cap.1 Introduo aos Microcomputadores Digitais

    Pgina 3 de 9

    1.2 Memria

    Memria: local do computador (hardware) onde se armazenam temporria ou definitivamente dados (nmeros, caracteres e instrues)

    Posio de memria ou endereo: localidade fsica da memria onde se encontra o dado.

    Organizao da memria:

    Endereo Contedo ... ...

    4MB 10110101 ... ...

    1048576 01001010 ... ...

    1765 01001101 ... ...

    4 01010000 3 11111111 2 11101001 1 11011010 0 01100100

    Obs: no 8086, a memria organizada em bytes (conjunto de 8 bits).

  • Cap.1 Introduo aos Microcomputadores Digitais

    Pgina 4 de 9

    1.3 A CPU e a execuo de um programa

    MEMRIA

    UNIDADE CENTRAL DE PROCESSAMENTO - CPU

    Barramento de dadosBarramento de endereosBarramento de controle

    UNIDADE DEARITMTICA E LGICA

    UNID. DE

    CONTROLE

    A B

    C D

    E F

    ... ...

    RI

    SP

    RDM REM PC

    Ciclo de busca e execuo de uma instruo

    1a. etapa: Busca da instruo na memria (FETCH) REM

  • Cap.1 Introduo aos Microcomputadores Digitais

    Pgina 5 de 9

    1.4 Linguagem de mquina e linguagem montadora

    Exemplo de um mesmo programa em linguagens de mquina e montadora:

    Instruo de mquina (binrio) Operao

    10100001 00000000 00000000 Busca o contedo da palavra de memria 0 e o coloca no reg. AX

    00000101 00000100 00000000 Adiciona 4 ao reg. AX

    10100011 00000000 00000000 Armazena o contedo de AX na palavra de memria de endereo 0

    Instruo em linguagem montadora Comentrios

    MOV AX,A ; busca o contedo da posio de ; memria dada por A e o coloca no ; reg. AX

    ADD AX,4h ; adiciona 4 a AX, resultado em AX ;

    MOV A, AX ; armazena o contedo de AX na ; posio de memria definida por A

    Observa-se que:

    para cada instruo em linguagem montadora corresponde apenas uma instruo em linguagem de mquina;

    uma instruo em linguagem de mquina pode corresponder a mais de um byte;

    a programao em linguagem de mquina tediosa e suscetvel a erros.

  • Cap.1 Introduo aos Microcomputadores Digitais

    Pgina 6 de 9

    1.5 Atividade prtica: Criando e rodando um programa

    A especificao do programa ECO DO TECLADO NA TELA:

    - iniciar - apresentar um prompt ao usurio - ler um caracter do teclado - exibir o caracter lido na prxima linha da tela do monitor - terminar

    O fluxograma:

    Incio

    Apresentar um prompt

    Ler um caracter do teclado

    Mudar de linha

    Exibir caracter lido

    Fim

  • Cap.1 Introduo aos Microcomputadores Digitais

    Pgina 7 de 9

    O programa ECO completo:

    TITLE PROGRAMA DE ECO DO TECLADO NA TELA .MODEL SMALL .STACK 100h .CODE MAIN PROC ; ;apresentacao do prompt ? MOV AH,2 ;funcao DOS para exibir caracter MOV DL,? ;caracter ? INT 21h ;exibir ; ;entrada do caracter pelo teclado MOV AH,1 ;funcao DOS para leitura de caracter INT 21h ;caracter e lido em AL MOV BL,AL ;salvando-o temporariamente em BL ; ;movendo de linha MOV AH,2 ;funcao DOS para exibir caracter MOV DL,0Dh ;caracter ASCII - return INT 21h ;executando MOV DL,0Ah ;caracter ASCII - line feed INT 21h ;executando ; ;exibindo na tela o caracter lido: efeito de ECO MOV DL,BL ;recuperando o caracter salvo INT 21h ;exibir ; ;retorno ao DOS MOV AH,4Ch ;funcao DOS para saida INT 21h ;saindo MAIN ENDP END MAIN

  • Cap.1 Introduo aos Microcomputadores Digitais

    Pgina 8 de 9

    Explicando as partes:

    a) O programa inicia sua operao ao ser lanado pelo DOS.

    b) O usurio estimulado a interagir pela apresentao de um ?:

    MOV AH,2 ;funcao DOS para exibir caracter MOV DL,'?' ;caracter '?' INT 21h ;exibir

    c) Lendo o caracter teclado pelo usurio e salvando-o em num registrador:

    MOV AH,1 ;funcao DOS para leitura de caracter INT 21h ;caracter e' lido em AL MOV BL,AL ;salvando-o em BL

    d) Movendo o cursor da tela para o incio da prxima linha:

    MOV AH,2 ;funcao DOS para exibir caracter MOV DL,0Dh ;caracter ASCII - return INT 21h ;executando MOV DL,0Ah ;caracter ASCII - line feed INT 21h ;executando

    e) Recuperando o caracter lido e exibindo-o:

    MOV DL,BL ;recuperando o caracter salvo INT 21h ;exibir

    f) O programa termina devolvendo controle ao DOS:

    MOV AH,4Ch ;funcao DOS para saida INT 21h ;saindo

  • Cap.1 Introduo aos Microcomputadores Digitais

    Pgina 9 de 9

    Como obter o programa ECO.EXE executvel.

    1. Edite o program ECO utilizando um editor de texto simples, com sada em texto ASCII. Sugesto: use o EDIT do DOS ou o Bloco de Notas (NOTEPAD) do Windows. Sugere-se que o arquivo (texto ASCII) tenha a extenso .ASM

    C:\ > EDIT ECO.ASM

    2. Rode o programa Montador TASM (Borland). Como resultado, aparece em seu diretrio de trabalho um arquivo ECO.OBJ

    C:\ > TASM ECO. ASM

    3. Rode o programa Lincador TLINK. Como resultado, aparece em seu diretrio de trabalho um arquivo ECO.EXE.

    C:\ > TLINK ECO.OBJ

    4. Rode o programa ECO.EXE, respondendo ao ? com uma letra K, por exemplo.

    C:\ > ECO.EXE ?K

  • Cap2 Representao de Nmeros e Caracteres.

    Pgina 1 de 9

    2. Representao de Numeros e Caracteres.

    2.1 Conceitos bsicos

    Bit = BInary digiT = vale sempre 0 ou 1 elemento bsico de informao

    Byte = 8 bits processados em paralelo (ao mesmo tempo)

    Word = 2 bytes = 16 bits

    Double word = 2 words = 4 bytes = 32 bits

    Nibble = 4 bits (utilidade para BCD)

    Posio de bits:

    Para 1 byte: 7 6 5 4 3 2 1 0 0 1 0 1 0 1 0 1

    Para 1 word: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

    byte alto (high byte) | byte baixo (low byte)

    Obs: Words so armazenados em bytes consecutivos em memrias de 8 bits. Byte baixo = byte inferior ou byte de menor ordem -> endereo N Byte alto = byte superior ou byte de maior ordem -> endereo N+1

  • Cap2 Representao de Nmeros e Caracteres.

    Pgina 2 de 9

    2.2 Representao de nmeros

    Nmeros em base binria (base 2):

    a) 1 byte

    00100111b = 0.27 + 0.26 + 1.25 + 0.24 + 0.23 + 1.22 + 1.21 + 1.20 = 0 + 0 + 32 + 0 + 0 + 4 + 2 + 1 = 39d = 2716 ou 27h

    b) 1 word

    0101011101101110b = 0.215 + 1.214 + ... + 1.22 + 1.21 + 0.20 = 22382d = 576E16 ou 576Eh (mais fcil de representar!)

    high byte = 0101 0111b = 57h low byte = 0110 1110b = 6Eh

    Nmeros em base octal (base 8):

    a) byte

    2578 = 2.82 + 5.81 + 7.80 = 128 + 40 + 7 = 175d = 010_101_111b = 10101111b

    b) word

    0573268 = 0.85 + 5.84 + 7.83 + 3.82 + 2.81 + 6.80 = 0 + 20480 + 3584 + 192 + 16 + 6 = 24278d = 000_101_111_011_010_110b = 0101111011010110b

  • Cap2 Representao de Nmeros e Caracteres.

    Pgina 3 de 9

    Nmeros em base hexadecimal (base 16):

    a) byte

    D516 = 13.161 + 5.160 = 208 + 80 = 288d = 1101_0101b = 11010101b

    b) word

    A03916 = 10.163 + 0.162 + 3.161 + 9.160 = 40960 + 0 + 48 + 9 = 41017d = 1010_0000_0011_1001b = 1010000000111001b

    Converso entre bases numricas:

    Tipo de converso Procedimento

    Decimal => Binrio Divises sucessivas por 2 at se obter zero no quociente; leitura dos dgitos binrios de baixo para cima.

    Binrio = > Decimal Soma de potncias de 2 cujo expoente a posio do bit e cujo coeficiente o prprio bit.

    Hexadecimal => Binrio Expandir cada dgito hexa em quatro dgitos binrios segundo seu valor.

    Binrio => Hexadecimal Compactar cada quatro dgitos binrios em um nico dgito hexa segundo seu valor.

    Decimal => Hexadecimal