aula05 - introduo ao assembly
Post on 27-Oct-2015
82 Views
Preview:
TRANSCRIPT
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
top related