Anda di halaman 1dari 13

CENTRO UNIVERSITRIO DE CAMPO GRANDE

CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

A Linguagem Assembly
Assembly ou linguagem de montagem uma notao legvel por humanos para o cdigo de mquina que uma arquitetura de computador especfica usa, utilizada para programar dispositivos computacionais, como microprocessadores e

microcontroladores. A linguagem de mquina, que um mero padro de bits, torna-se torna legvel pela substituio dos valores em bruto por smbolos chamados mnemnicos; Fonte: Wikipedia

Registradores das arquiteturas

CENTRO UNIVERSITRIO DE CAMPO GRANDE


CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

4 registradores de uso geral: AX (Acumulador): armazena operandos e resultados dos clculos aritmticos e lgicos. BX (Base): armazena endereos indiretos. CX (Contador): conta iteraes de loops ou especifica o n de caracteres de uma string. DX (Dados): armazena overflow e endereo de E/S. Podem ser usados como registradores de 8 bits.

Registradores de Segmento gmento CS (Segmento de Cdigo): contm o endereo da rea com as instrues de mquina em execuo. DS (Segmento de Dados): contm o endereo da rea com os dados do programa.

o Geralmente aponta para as variveis globais do programa. SS (Segmento de Pilha): contm o endereo da rea com a pilha. Que armazena informaes importantes sobre o estado da mquina, variveis locais, endereos de retorno e parmetros de subrotinas. ES (Segmento Extra): utilizado para ganhar acesso a alguma rea da memria quando ndo no possvel usar os outros registradores de segmento. o Ex: transferncias de bloco de dados.

CENTRO UNIVERSITRIO DE CAMPO GRANDE


CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Declarao de Dados
Dados so sempre declarados na poro de dados do programa, e sero acessados via segmento de dados (DS) ou segmento extra (ES). Todas variveis devem possuir um tipo de dado: DB (define byte) - 8 bits DW (define word) - 16 bits DD (define double word) - 32 bits DF (define far word) - 48 bits Constantes podem ser declaradas pela clusula EQU. Exemplo: LF EQU 0AH ; LF = 0A (cdigo ASCII para Line Feed).

Variveis podem ou no possuir valores iniciais. Ex: .data var1 DW 0019h var2 DB ? ; ? Indica a no inicializao da varivel var3 DB a var4 DB 24,23,22 Msg DB Entre com o numero:,0dh,0ah,'$ .code Prog: mov al, var4 ; al = 24 = 18h mov al, var4+2 ; al = 23 = 16h

CENTRO UNIVERSITRIO DE CAMPO GRANDE


CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Instrues de Transferncia de Dados


Instruo MOV: copia dados da posio de origem para a posio de destino. Sintaxe: MOV Dest,Orig Dest contm o endereo de destino (memria ou registrador). Orig contm o endereo de origem (memria ou registrador). Ex: MOV AX,BX ; Copia BX em AX MOV BX,1000h ; Copia 1000h em BX MOV DX,[8000h] ; Copia DS:8000h em DX INSTRUO CMP CMP: Compara dois valores; Mnemnico Formato CMP CMP op1, op2 Operao op1 op2

A instruo CMP trabalha subtraindo o segundo operando do primeiro, alterando os flags de estado envolvidos, e sem modificar qualquer um dos operandos. A instruo CMP seguida, normalmente, de instrues de jumps condicionais para testar os resultados da comparao. Modo de Operao: CMP op1, op2 op1 op2 SUB op1, op2

Variaes possveis dos operandos: op1 Memria Registrador Registrador op2 Registrador Memria Registrador

CENTRO UNIVERSITRIO DE CAMPO GRANDE


CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Registrador Memria Exemplos:

Dado imediato Dado Imediato

CMP AL,57H ; Compara o contedo de AL com 57h. CMP DI,BX ; Compara os contedos de DI e BX. CMP [SI],AX ; Compara uma palavra gravada em DS:SI, com o contedo de AX. CMP CH,[SI+BX+3] ; Compara o contedo de CH com ; o byte gravado em DS:SI+BX+3 SALTOS Saltos, os famosos jump, desviam a linha de execuo. Geralmente so condicionais, do tipo "se alguma coisa, ento salte para...", mas existe tambm uma instruo de salto incondicional. Os mais comuns so: JA JAE JB JBE JE JMP JNA JNB JNE JNZ JZ Salte se acima (above) Salte se acima ou igual (above or equal) Salte se abaixo (below) Salte se abaixo ou igual (below or equal) Salte se igual (equal) Salto incondicional Salte se no acima (not above) Salte se no abaixo (not below) Salte se no igual (not equal) Salte se no zero (not zero) Salte se zero

Instruo LEA Propsito: Carregar o endereo do operador Fonte Sintaxe: LEA destino,fonte O Operador fonte deve estar localizado na memria, e seu deslocamento colocado no registrador de ndice ou ponteiro especificado no destino

CENTRO UNIVERSITRIO DE CAMPO GRANDE


CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Instrues Aritmticas
Instrues ADD e ADC: Soma os dois operandos, colocando o resultado no primeiro operando. ADC tambm soma o bit Carry, usado para o vai 1, possibilitando formar dados maiores. Pode ser com 8 ou 16 bits (depende do operando). Ex: ADD BX,SI ADC AH,[BP+SI+3] Instrues SUB e SBB: Subtrai dois operandos, colocando o resultado no primeiro operando. SBB subtrai tambm o valor do bit Carry, tornando possvel a operao de vem um (borrow) com no maiores. Ex: SUB BX,DX SBB AX,[BX+DI] Instrues MUL e IMUL: Multiplica o acumulador (AX ou AL) por um operando na memria ou em outro registrador. Escolha do ACC depende do tamanho do operando multiplicador. MUL usada para nmeros sem sinal (s +). IMUL aceita nmeros inteiros (+ ou -). ). Resultado guardado em ACC maior (AH AX DX e AX). Ex: MUL CL MUL word ptr [SI] IMUL DX

CENTRO UNIVERSITRIO DE CAMPO GRANDE


CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Instrues DIV e IDIV: divide o acumulador (AX ou DX e AX) por um operando de 8 ou 16 bits. DIV usada para nmeros sem sinal (s +). IDIV aceita nmeros inteiros (+ ou -). Dividendo definido pelo tamanho do divisor. Divisor de 8 bits AX Op AL e o resto AH. Divisor de 16 bits DX:AX Op AX e o resto DX. Se quociente no cabe no registrador, a operao gera um estouro de diviso (divide overflow). Ex: DIV CL IDIV byte ptr [BP+4] Instrues INC e DEC: incrementa ou decrementa de uma unidade o operando especificado. Bit Zero afetado, possibilitando implementar contadores. Ex: Preencher a tela com 2000 caracteres em branco. MOV DX,2000 ; No de bytes a serem enviados ENVIA: MOV AL, 20h ; 20h o cdigo ASCII do caractere . CALL OUTCHAR ; Envia o caractere para o vdeo DEC DX ; Decrementa o contador JNZ ENVIA ; Pula se no chegou a zero

Instrues INC e DEC tambm podem ser usadas para implementar ponteiros para posies de memria. til quando queremos manipular dados seqenciais. Instrues Aritmticas.

CENTRO UNIVERSITRIO DE CAMPO GRANDE


CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

INTERRUPES O mecanismo de interrupo constitui a base de operao de um sistema multiprogramado. O mecanismo de interrupo permite que o controlador de perifrico chame a ateno do processador. A funo bsica do controlador de perifrico conectar o dispositivo em questo ao processador. Uma interrupo sempre sinaliza a ocorrncia de algum evento. Quando ela acontece, desvia a execuo da posio atual de programa para uma rotina especfica.

INSTRUO INT Chama uma funo DOS ou BIOS que so subrotinas para realizar determinados procedimentos; Sintaxe: Exemplo: int 21h ; Chama servios do DOS int 10h ; Chama a interrupo de Vdeo da BIOS A maior parte das interrupes possui mais de uma funo, normalmente colocado em AH. Para imprimir uma mensagem na tela do monitor tudo que necessrio fazer : mov ah,9 ; nmero da subrotina 9 int 21h ; chama a interrupo INT nmero da interrupo

INT 21h Funes de Teclado, Vdeo, Disco, Relgio e Memria Propsito: Chamar uma diversidade de funes DOS. DOS Necessrio ecessrio especificar que o valor que estamos usando est em hexadecimal.

CENTRO UNIVERSITRIO DE CAMPO GRANDE


CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Esta interrupo tem muitas funes, para acessar cada uma delas necessrio que o nmero correspondente corresp da funo esteja no registrador AH no momento da chamada da interrupo.

Funes para mostrar informaes no vdeo. 02H Exibe um caracter 09H Exibe uma cadeia de caracteres 40H Escreve num dispositivo/arquivo rmaes do teclado. Funes para ler informaes 01H Entrada do teclado 0AH Entrada do teclado usando buffer 3FH Leitura de um dispositivo/arquivo Funo 01H Entrada do Teclado Uso: Mostra um caracter na tela Registradores de chamada: AH = 02H DL = Valor de caracter a ser mostrado. Registradores de retorno: o Nenhum. o Esta funo mostra o caracter cujo cdigo hexadecimal corresponde ao valor armazenado no registrador DL, e no modifica nenhum registrador.

Funo 02H Sada de caractere na tela Uso: Mostra um caracter na tela Registradores de chamada: o AH = 02H o DL = Valor de caracter a ser mostrado. Registradores de retorno: o Nenhum. Esta funo mostra o caracter cujo cdigo hexadecimal corresponde ao valor armazenado no registrador DL, e no modifica nenhum registrador.

CENTRO UNIVERSITRIO DE CAMPO GRANDE


CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Funo 09h Escreve atributo e caractere na posio do cursor Entrada: BH = Nmero da pgina BL = Atributo (modo texto) ou Cor (modo grfico) CX = Nmero de caracteres a serem escritos AL = Cdigo ASCII do caractere AH = 9 Lista com tabelas ASCII

CENTRO UNIVERSITRIO DE CAMPO GRANDE


CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Exerccio 01: Criar um programa rograma que mostre na tela Hello World org 100h jmp start msg: db "Hello, World!", 0Dh,0Ah, 24h

start: mov dx, msg mov ah, 09h int 21h mov ah, 0 int 16h ret Exerccio 02: Criar um programa que leia o contedo do teclado e mostre na tela: org 100h jmp start ; ===== Constantes ===== msg0: db 0Dh,0Ah,'digite um Caracter: $' msg1: db 0Dh,0Ah,'O valor do Caracter eh: $' start: MOV dx, msg0 ; pega endereco do segmento de dados MOV ah, 9h ; funo para imprimir o contedo de dx INT 21h ; Habilita a interrupo 21 - Funes do DOS

; ===== Passos para Receber o conteudo conte do Teclado ===== MOV ah,1h ; Ativa a interrupo 21H (01h - Le um caractere da entrada padro) INT 21H ; Habilita a interrupo 21 - Funes do DOS push AX

CENTRO UNIVERSITRIO DE CAMPO GRANDE


CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

MOV dx, msg1 MOV ah, 9h INT 21h

; pega endereco do segmento de dados ; funo para imprimir o contedo de dx ; Habilita a interrupo 21 - Funes do DOS

; ===== Passos para Imprimir o Caracter ===== pop AX MOV dl,al ; Move cada caracter para o registrador DL MOV ah,2h ; Ativa a interrupo 21H (02H - Escreve um caracter na saida padro) INT 21h ; Habilita a interrupo 21 - Funes do DOS ;=====FINALIZAR O PROGRAMA MOV AH,4CH ;cdigo para devolver o controle p/ DOS INT 21H ;interrupo que executa a funo em AH ret Exerccio 03 Criar um programa que leia uma letra do teclado e se for a letra X, mostre na tela uma mensagem informando a letra X seno mostre uma outra mensagem informando que no se trata dessa letra org 100h jmp start ; ===== Constantes ===== msg0 : db 0Dh,0Ah,'digite ,'digite uma Letra:$' msg1 : db 0Dh,0Ah,'O 'O valor eh X MAISCULO:$' msg2 : db 0Dh,0Ah,'O ,'O valor nao eh X:$' start: ; ===== Passos para Ler o Contedo da Varivel msg0 ===== MOV dx, msg0 ; imprimir "digite um Caracter:" MOV ah, 9h ; funo para imprimir o contedo de dx INT 21h ; Habilita a interrupo 21 - Funes do DOS leia: MOV ah,1h ; Ativa a interrupo 21H (01h - Le um caractere da entrada padro)

CENTRO UNIVERSITRIO DE CAMPO GRANDE


CINCIA DA COMPUTAO ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

INT 21H ; Habilita a interrupo interrup 21 - Funes do DOS CMP AL,58H ; compara se a tecla digitada enter jz x jmp nx x: MOV dx, msg1 MOV ah, 9h INT 21h jmp fim nx: MOV dx, msg2 MOV ah, 9h INT 21h fim: MOV AH,4CH ;cdigo para devolver o controle p/ DOS INT 21H ;interrupo que executa a funo em AH ret Exerccio 04 Criar um programa em Assembly que receba 2 nmeros, realize uma soma e mostre na tela seu resultado. ; imprimir "O valor eh X MAISCULO ; funo para imprimir o contedo de dx ; Habilita a interrupo 21 - Funes do DOS ; imprimir "O valor eh X MAISCULO ; funo para imprimir o contedo de dx ; Habilita a interrupo 21 - Funes do DOS

Anda mungkin juga menyukai