Aula05 - Introduo Ao Assembly

13
A Linguagem Assembly Assembly ou linguagem d código de máquina que um programar dispositivos microcontroladores. A linguagem de máquina substituição dos valores em Fonte: Wikipedia Registradores das arqu CENTRO UNIVERSITÁRIO DE CA CIÊNCIA DA COMPUTAÇÃO ARQUITETURA DE COMPUTADORES PROFESSOR CARLOS RICARDO BERNA y de montagem é uma notação legível por h ma arquitetura de computador específica us computacionais, como microproc a, que é um mero padrão de bits, torna m bruto por símbolos chamados mnemônicos uiteturas AMPO GRANDE AL VEIGA humanos para o sa, utilizada para cessadores e a-se legível pela s;

Transcript of Aula05 - Introduo Ao Assembly

A Linguagem Assembly

Assembly ou linguagem de montagem

código de máquina que uma arquitetura de computador específica usa, utilizada para

programar dispositivos computacionais, como microprocessadores e

microcontroladores.

A linguagem de máquina, que é um mero padrão

substituição dos valores em bruto por símbolos chamados mnemônicos;

Fonte: Wikipedia

Registradores das arquiteturas

CENTRO UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

A Linguagem Assembly

linguagem de montagem é uma notação legível por humanos para o

código de máquina que uma arquitetura de computador específica usa, utilizada para

programar dispositivos computacionais, como microprocessadores e

A linguagem de máquina, que é um mero padrão de bits, torna

substituição dos valores em bruto por símbolos chamados mnemônicos;

Registradores das arquiteturas

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

é uma notação legível por humanos para o

código de máquina que uma arquitetura de computador específica usa, utilizada para

programar dispositivos computacionais, como microprocessadores e

de bits, torna-se legível pela

substituição dos valores em bruto por símbolos chamados mnemônicos;

4 registradores de uso geral:

• AX (Acumulador): armazena operandos e resultados dos cálculos aritméticos

lógicos.

• BX (Base): armazena endereços indiretos.

• CX (Contador): conta iterações de loops ou especifica o n° de caracteres de uma

string.

• DX (Dados): armazena overflow e endereço de E/S.

• Podem ser usados como registradores de 8 bits.

Registradores de Segmento

• CS (Segmento de Código):

máquina em execução.

• DS (Segmento de Dados):

o Geralmente aponta para as variáveis globais do programa.

• SS (Segmento de Pilha):

informações importantes sobre o estado da máquina, variáveis locais, endereços

de retorno e parâmetros de subrotinas.

• ES (Segmento Extra):

quando não é possível usar os outros registradores de segmento.

o Ex: transferências de bloco de dados.

CENTRO UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

4 registradores de uso geral:

armazena operandos e resultados dos cálculos aritméticos

armazena endereços indiretos.

conta iterações de loops ou especifica o n° de caracteres de uma

armazena overflow e endereço de E/S.

Podem ser usados como registradores de 8 bits.

gmento

CS (Segmento de Código): contém o endereço da área com as instruções de

máquina em execução.

DS (Segmento de Dados): contém o endereço da área com os dados do programa.

Geralmente aponta para as variáveis globais do programa.

Pilha): contém o endereço da área com a pilha. Que armazena

informações importantes sobre o estado da máquina, variáveis locais, endereços

de retorno e parâmetros de subrotinas.

utilizado para ganhar acesso a alguma área da memória

ndo não é possível usar os outros registradores de segmento.

Ex: transferências de bloco de dados.

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

armazena operandos e resultados dos cálculos aritméticos e

conta iterações de loops ou especifica o n° de caracteres de uma

contém o endereço da área com as instruções de

contém o endereço da área com os dados do programa.

contém o endereço da área com a pilha. Que armazena

informações importantes sobre o estado da máquina, variáveis locais, endereços

utilizado para ganhar acesso a alguma área da memória

Declaração de Dados

Dados são sempre declarados na porção de dados do programa, e serão acessados via

segmento de dados (DS) ou

Todas variáveis devem possuir um tipo de dado:

DB (define byte) - 8 bits DW (define word) - 16 bits DD (define double word) - 32 bitsDF (define far word) - 48 bits

Constantes podem ser declaradas pela cláusula

Exemplo:

LF EQU 0AH ; LF = 0A (código

Variáveis podem ou não possuir valores iniciais.

Ex: .data var1 DW 0019h var2 DB ? ; ? Indica a não inicialização da variávelvar3 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 UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Dados são sempre declarados na porção de dados do programa, e serão acessados via

ou segmento extra (ES).

Todas variáveis devem possuir um tipo de dado:

32 bits

48 bits

Constantes podem ser declaradas pela cláusula EQU.

LF EQU 0AH ; LF = 0A (código ASCII para Line Feed).

Variáveis podem ou não possuir valores iniciais.

; ? Indica a não inicialização da variável

Msg DB “Entre com o numero:”,0dh,0ah,'$‘

mov al, var4+2 ; al = 23 = 16h

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Dados são sempre declarados na porção de dados do programa, e serão acessados via

Instruções de Transferência de Dados

Instrução MOV: copia dados da posição de origem para a posição de destino.

Sintaxe:

MOV Dest,Orig

Dest contém o endereço de destino (memória ou registrador).Orig contém o endereço de origem (memória ou registrador).

Ex: MOV AX,BX ; Copia BX em AXMOV BX,1000h ; Copia 1000h em BXMOV DX,[8000h] ; Copia DS:8000h em DX

INSTRUÇÃO CMP CMP: Compara dois valores;

Mnemônico Formato

CMP CMP op1, op2

A instrução CMP trabalha subtraindo o segundo operando do primeiro, alterando os

flags de estado envolvidos, e sem modificar qualquer um dos operandos.

A instrução CMP é seguida, normalmente, de instruções de

testar os resultados da comparação.

Modo de Operação:

CMP op1, op2

Variações possíveis dos operandos:

op1 op2

Memória Registrador

Registrador Memória

Registrador Registrador

CENTRO UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Instruções de Transferência de Dados

copia dados da posição de origem para a posição de destino.

contém o endereço de destino (memória ou registrador). contém o endereço de origem (memória 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

: Compara dois valores;

Operação

op1, op2 op1 – op2

A instrução CMP trabalha subtraindo o segundo operando do primeiro, alterando os

de estado envolvidos, e sem modificar qualquer um dos operandos.

A instrução CMP é seguida, normalmente, de instruções de jumps condicionais para

testar os resultados da comparação.

≡ op1 – op2 ≠ SUB op1, op2

Variações possíveis dos operandos:

op2

Registrador

Registrador

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

copia dados da posição de origem para a posição de destino.

A instrução CMP trabalha subtraindo o segundo operando do primeiro, alterando os

de estado envolvidos, e sem modificar qualquer um dos operandos.

condicionais para

Registrador Dado imediato

Memória Dado Imediato

Exemplos:

CMP AL,57H ; Compara o conteúdo de AL com 57h.CMP DI,BX ; Compara os conteúdos de DI e BX.CMP [SI],AX ; Compara uma palavra gravada em DS:SI, com o conteúdo de AX.CMP CH,[SI+BX+3] ; Compara o conteúdo de CH com ; o SALTOS Saltos, os famosos jump, desviam a linha de execução. Geralmente são condicionais, do tipo "se alguma coisa, então salte para...", mas existe também uma instrução de salto incondicional. Os mais comuns são:

JA Salte se acima (above)

JAE Salte se acima ou igual (above or equal)

JB Salte se abaixo (below)

JBE Salte se abaixo ou igual (below or equal)

JE Salte se igual (equal)

JMP Salto incondicional

JNA Salte se não acima (not above)

JNB Salte se não abaixo (not below)

JNE Salte se não igual (not equal)

JNZ Salte se não zero (not zero)

JZ Salte se zero

Instrução LEA

Propósito: Carregar o endereço do

Sintaxe:

LEA destino,fonte

O Operador fonte deve estar localizado na memória, e seu deslocamento é colocado no registrador de índice ou ponteiro especificado no destino

CENTRO UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Dado imediato

Dado Imediato

CMP AL,57H ; Compara o conteúdo de AL com 57h. CMP DI,BX ; Compara os conteúdos de DI e BX. CMP [SI],AX ; Compara uma palavra gravada em DS:SI, com o conteúdo de AX.CMP CH,[SI+BX+3] ; Compara o conteúdo de CH com ; o byte gravado em DS:SI+BX+3

, desviam a linha de execução. Geralmente são condicionais, do tipo "se alguma coisa, então salte para...", mas existe também uma instrução de

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

se não acima (not above)

Salte se não abaixo (not below)

Salte se não igual (not equal)

Salte se não zero (not zero)

Propósito: Carregar o endereço do operador Fonte

O Operador fonte deve estar localizado na memória, e seu deslocamento é colocado no registrador de índice ou ponteiro especificado no destino

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

CMP [SI],AX ; Compara uma palavra gravada em DS:SI, com o conteúdo de AX. byte gravado em DS:SI+BX+3

, desviam a linha de execução. Geralmente são condicionais, do tipo "se alguma coisa, então salte para...", mas existe também uma instrução de

O Operador fonte deve estar localizado na memória, e seu deslocamento é colocado

Instruções Aritméticas

Instruções ADD e ADC:

Soma os dois operandos, colocando o resultado

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]

Instruções SUB e SBB:

Subtrai dois operandos, colocando o

também o valor do bit Carry, tornando possível a operação de “vem um” (borrow) com

no maiores.

Ex:

SUB BX,DX SBB AX,[BX+DI]

Instruções MUL e IMUL:

Multiplica o acumulador (AX ou AL) por um operando na memória

registrador. Escolha do ACC depende do tamanho do operando multiplicador. MUL é

usada para números sem sinal (só +).

IMUL aceita números inteiros (+ ou

→ DX e AX).

Ex:

MUL CL MUL word ptr [SI] IMUL DX

CENTRO UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Instruções Aritméticas

Soma os dois operandos, colocando o resultado no primeiro operando. ADC também

soma o bit Carry, usado para o “vai 1”, possibilitando formar dados maiores.

Pode ser com 8 ou 16 bits (depende do operando).

Subtrai dois operandos, colocando o resultado no primeiro operando. SBB subtrai

também o valor do bit Carry, tornando possível a operação de “vem um” (borrow) com

Multiplica o acumulador (AX ou AL) por um operando na memória

registrador. Escolha do ACC depende do tamanho do operando multiplicador. MUL é

usada para números sem sinal (só +).

IMUL aceita números inteiros (+ ou -). Resultado é guardado em ACC maior (AH

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

no primeiro operando. ADC também

soma o bit Carry, usado para o “vai 1”, possibilitando formar dados maiores.

resultado no primeiro operando. SBB subtrai

também o valor do bit Carry, tornando possível a operação de “vem um” (borrow) com

Multiplica o acumulador (AX ou AL) por um operando na memória ou em outro

registrador. Escolha do ACC depende do tamanho do operando multiplicador. MUL é

). Resultado é guardado em ACC maior (AH → AX

Instruções DIV e IDIV: divide o acumulador (AX ou DX e AX) por um operando de 8 ou

16 bits.

DIV é usada para números sem sinal (só +). IDIV aceita números inteiros (+ ou

Dividendo é definido pelo tamanho do divisor.

Divisor de 8 bits ⇒ AX ÷ Op

Divisor de 16 bits ⇒ DX:AX ÷ Op

Se quociente não cabe no registrador, a operação gera um estouro de divisão (divide

overflow).

Ex:

DIV CL IDIV byte ptr [BP+4]

Instruções 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 enviadosENVIA: MOV AL, 20h ; 20h é o códigoCALL OUTCHAR ; Envia o caractere para o vídeoDEC DX ; Decrementa o contador JNZ ENVIA ; Pula se não chegou a zero

Instruções INC e DEC também podem ser usadas para implementar ponteiros para

posições de memória. Útil quando

Aritméticas.

CENTRO UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

divide o acumulador (AX ou DX e AX) por um operando de 8 ou

DIV é usada para números sem sinal (só +). IDIV aceita números inteiros (+ ou

Dividendo é definido pelo tamanho do divisor.

AX ÷ Op → AL e o resto → AH.

DX:AX ÷ Op → AX e o resto → DX.

Se quociente não cabe no registrador, a operação gera um estouro de divisão (divide

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 código ASCII do caractere “ ”.

; Envia o caractere para o vídeo

; Pula se não chegou a zero

Instruções INC e DEC também podem ser usadas para implementar ponteiros para

posições de memória. Útil quando queremos manipular dados seqüenciais. Instruções

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

divide o acumulador (AX ou DX e AX) por um operando de 8 ou

DIV é usada para números sem sinal (só +). IDIV aceita números inteiros (+ ou -).

Se quociente não cabe no registrador, a operação gera um estouro de divisão (divide

incrementa ou decrementa de uma unidade o operando

especificado. Bit Zero é afetado, possibilitando implementar contadores.

Instruções INC e DEC também podem ser usadas para implementar ponteiros para

queremos manipular dados seqüenciais. Instruções

INTERRUPÇÕES

O mecanismo de interrupção constitui a base de operação de um sistema

multiprogramado.

O mecanismo de interrupção permite que o controlador de periférico chame a atenção

do processador. A função básica do controlador de periférico é conectar o dispositivo

em questão ao processador. Uma interrupção sempre sinaliza a ocorrência de algum

evento. Quando ela acontece, desvia a execução da posição atual de programa para

uma rotina específica.

INSTRUÇÃO INT

Chama uma função DOS

procedimentos;

Sintaxe:

• INT número da interrupção

Exemplo:

int 21h ; Chama serviços do DOSint 10h ; Chama a interrupção de Vídeo da BIOS

A maior parte das interrupções possui mais de uma função, é normalmente colocado

em AH.

Para imprimir uma mensagem na tela do monitor tudo que é necessário fazer é:

mov ah,9 ; número da subrotina 9int 21h ; chama a interrupção

INT 21h – Funções de Teclado,

• Propósito: Chamar uma diversidade de funções DOS

• Necessário especificar que o valor que estamos usando está

CENTRO UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

O mecanismo de interrupção constitui a base de operação de um sistema

O mecanismo de interrupção permite que o controlador de periférico chame a atenção

processador. A função básica do controlador de periférico é conectar o dispositivo

em questão ao processador. Uma interrupção sempre sinaliza a ocorrência de algum

evento. Quando ela acontece, desvia a execução da posição atual de programa para

função DOS ou BIOS que são subrotinas para realizar determinados

número da interrupção

; Chama serviços do DOS ; Chama a interrupção de Vídeo da BIOS

parte das interrupções possui mais de uma função, é normalmente colocado

Para imprimir uma mensagem na tela do monitor tudo que é necessário fazer é:

; número da subrotina 9 ; chama a interrupção

Funções de Teclado, Vídeo, Disco, Relógio e Memória

Chamar uma diversidade de funções DOS.

ecessário especificar que o valor que estamos usando está em hexadecimal.

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

O mecanismo de interrupção constitui a base de operação de um sistema

O mecanismo de interrupção permite que o controlador de periférico chame a atenção

processador. A função básica do controlador de periférico é conectar o dispositivo

em questão ao processador. Uma interrupção sempre sinaliza a ocorrência de algum

evento. Quando ela acontece, desvia a execução da posição atual de programa para

que são subrotinas para realizar determinados

parte das interrupções possui mais de uma função, é normalmente colocado

Para imprimir uma mensagem na tela do monitor tudo que é necessário fazer é:

em hexadecimal.

• Esta interrupção tem muitas funções, para acessar cada uma delas ‚ necessário

que o número corresp

chamada da interrupção.

Funções para mostrar informações no vídeo.

02H Exibe um caracter 09H Exibe uma cadeia de caracteres 40H Escreve num dispositivo/arquivo

Funções para ler informações do teclado.

01H Entrada do teclado 0AH Entrada do teclado usando buffer 3FH Leitura de um dispositivo/arquivo

Função 01H – Entrada do Teclado

Uso: Mostra um caracter na tela

Registradores de chamada:� AH = 02H � DL = Valor de caracter a

• Registradores de retorno:o Nenhum. o Esta função mostra o caracter cujo código hexadecimal corresponde ao valor armazenado no registrador

Função 02H – Saída 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 função mostra o caracter cujo código hexadecimal corresponde ao valor armazenado no registrador

CENTRO UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Esta interrupção tem muitas funções, para acessar cada uma delas ‚ necessário

que o número correspondente da função esteja no registrador AH

chamada da interrupção.

Funções para mostrar informações no vídeo.

Exibe uma cadeia de caracteres Escreve num dispositivo/arquivo

rmações do teclado.

Entrada do teclado usando buffer Leitura de um dispositivo/arquivo

Entrada do Teclado

Uso: Mostra um caracter na tela

Registradores de chamada:

= Valor de caracter a ser mostrado.

Registradores de retorno:

Esta função mostra o caracter cujo código hexadecimal corresponde ao valor armazenado no registrador DL, e não modifica nenhum registrador.

Saída de caractere na tela

na tela

Registradores de chamada:

Valor de caracter a ser mostrado. Registradores de retorno:

Esta função mostra o caracter cujo código hexadecimal corresponde ao valor armazenado no registrador DL, e não modifica nenhum registrador.

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Esta interrupção tem muitas funções, para acessar cada uma delas ‚ necessário

registrador AH no momento da

Esta função mostra o caracter cujo código hexadecimal corresponde ao valor , e não modifica nenhum registrador.

Esta função mostra o caracter cujo código hexadecimal corresponde ao valor , e não modifica nenhum registrador.

Função 09h – Escreve atributo e caractere na posição do cursor

Entrada:

BH = Número da página BL = Atributo (modo texto) ou Cor (modo gráfico) CX = Número de caracteres a serem escritos AL = Código ASCII do caractere AH = 9

Lista com tabelas ASCII

CENTRO UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Escreve atributo e caractere na posição do cursor

BH = Número da página BL = Atributo (modo texto) ou Cor (modo gráfico) CX = Número de caracteres a serem escritos AL = Código ASCII do caractere

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Exercício 01: Criar um programa que mostre na tela

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

Exercício 02: Criar um programa que leia o conteúdo 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 MOV ah, 9h ; função para imprimir o conteúdo de dx INT 21h ; Habilita a interrupção 21 ; ===== Passos para Receber o conte MOV ah,1h entrada padrão) INT 21H push AX

CENTRO UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

rograma que mostre na tela “Hello World”

msg: db "Hello, World!", 0Dh,0Ah, 24h

Criar um programa que leia o conteúdo do teclado e mostre na tela:

msg0: db 0Dh,0Ah,'digite um Caracter: $'

valor do Caracter eh: $'

; pega endereco do segmento de dados; função para imprimir o conteúdo de dx ; Habilita a interrupção 21 - Funções do DOS

; ===== Passos para Receber o conteudo do Teclado ===== ; Ativa a interrupção 21H (01h - Le um caractere da

; Habilita a interrupção 21 - Funções do DOS

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

; pega endereco do segmento de dados

Le um caractere da

Funções do DOS

MOV dx, msg1 ; pega endereco do segmento de dados MOV ah, 9h INT 21h ; ===== Passos para Imprimir o Caracter pop AX MOV dl,al ; Move cada caracter para o registrador DL MOV ah,2h ; Ativa a interrupção 21H (02H padrão) INT 21h ; Habilita a interrupção 21 ;=====FINALIZAR O PROGRAMA MOV AH,4CH ;código para devolver o controle p/ DOS INT 21H ;interrupção que executa a função em AH ret

Exercício 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 senão mostre uma outra mensagem informando que não se trata dessa letra

org 100h jmp start ; ===== Constantes ===== msg0 : db 0Dh,0Ah,'digite uma Letra:$'msg1 : db 0Dh,0Ah,'O valor eh X MAISCULO:$'msg2 : db 0Dh,0Ah,'O valor nao eh X:$' start: ; ===== Passos para Ler o Conteúdo da Variável msg0 ===== MOV dx, msg0 MOV ah, 9h INT 21h leia: MOV ah,1h ; Ativa a interrupção 21H (01h padrão)

CENTRO UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

; pega endereco do segmento de dados ; função para imprimir o conteúdo de dx

; Habilita a interrupção 21 - Funções do DOS

; ===== Passos para Imprimir o Caracter =====

; Move cada caracter para o registrador DL ; Ativa a interrupção 21H (02H - Escreve um caracter na saida

; Habilita a interrupção 21 - Funções do DOS

;=====FINALIZAR O PROGRAMA

MOV AH,4CH ;código para devolver o controle p/ DOS INT 21H ;interrupção que executa a função em AH

Criar um programa que leia uma letra do teclado e se for a letra X, mostre na tela uma mensagem informando a letra X senão mostre uma outra mensagem informando que não se trata dessa letra

,'digite uma Letra:$' 'O valor eh X MAISCULO:$'

,'O valor nao eh X:$'

; ===== Passos para Ler o Conteúdo da Variável msg0 ===== ; imprimir "digite um Caracter:"

; função para imprimir o conteúdo de dx ; Habilita a interrupção 21 - Funções do DOS

MOV ah,1h ; Ativa a interrupção 21H (01h - Le um caractere da entrada

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Funções do DOS

Escreve um caracter na saida

Criar um programa que leia uma letra do teclado e se for a letra X, mostre na tela uma mensagem informando a letra X senão mostre uma outra

Funções do DOS

Le um caractere da entrada

INT 21H ; Habilita a interrupçã 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 ;código para devolver o controle p/ DOS INT 21H ;interrupção ret

Exercício 04 – Criar um programa em Assembly que receba 2 números, realize uma soma e mostre na tela seu resultado.

CENTRO UNIVERSITÁRIO DE CAMPO GRANDECIÊNCIA DA COMPUTAÇÃO

ARQUITETURA DE COMPUTADORES

PROFESSOR CARLOS RICARDO BERNAL VEIGA

; Habilita a interrupção 21 - Funções do DOS CMP AL,58H ; compara se a tecla digitada é enter

; imprimir "O valor eh X MAISCULO” ; função para imprimir o conteúdo de dx ; Habilita a interrupção 21 - Funções do DOS

; imprimir "O valor eh X MAISCULO” ; função para imprimir o conteúdo de dx ; Habilita a interrupção 21 - Funções do DOS

MOV AH,4CH ;código para devolver o controle p/ DOS INT 21H ;interrupção que executa a função em AH

Criar um programa em Assembly que receba 2 números, realize uma soma e mostre na tela seu resultado.

CENTRO UNIVERSITÁRIO DE CAMPO GRANDE

PROFESSOR CARLOS RICARDO BERNAL VEIGA

Funções do DOS

Funções do DOS

Criar um programa em Assembly que receba 2 números, realize uma