Buscar

Aula05 - Introdução ao Assembly

Prévia do material em texto

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 GRANDE
CIÊ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 GRANDE
CIÊ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 bits
DF (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ável
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 UNIVERSITÁRIO DE CAMPO GRANDE
CIÊ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 AX
MOV BX,1000h ; Copia 1000h em BX
MOV 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 GRANDE
CIÊ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çãode 
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 GRANDE
CIÊ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 GRANDE
CIÊ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 enviados
ENVIA: MOV AL, 20h ; 20h é o código
CALL OUTCHAR 
; Envia o caractere para o vídeo
DEC 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 GRANDE
CIÊ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 DOS
int 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áriofazer é: 
mov ah,9 ; número da subrotina 9
int 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 GRANDE
CIÊ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 GRANDE
CIÊ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 GRANDE
CIÊ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 GRANDE
CIÊ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 GRANDE
CIÊ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 GRANDE
CIÊ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

Continue navegando