SlideShare uma empresa Scribd logo
1 de 81
ASSEMBLY
Prof.ª Ms. Elaine Cecília Gatto
Disciplina: Arquitetura de Computadores
Curso: Engenharia de Computação
Introdução
● É linguagem de montagem;
● É utilizada para programar um computador de
baixo nível;
● O programa é montado dentro do processador;
● Não é uma linguagem de máquina
● Linguagem de máquina:
● Utilizada por um MICROPROCESSADOR para
controlar funções de um computador digital.
Introdução
● MICROPROCESSADOR:
● É um circuito que possui a capacidade de
executar diversos tipos de funções
distintas;
● É usado em um computador.
Introdução
● Linguagem de máquina:
● Só aceita e manipula informações numéricas
expressas em notação de códigos binários;
● Assembly:
● Linguagem de programação que surgiu entre a
década de 40 e 50;
● Objetivo: facilitar o trabalho de codificação de um
programa de computador;
● É composta por códigos alfabéticos muito mais fáceis
de se utilizar que códigos binários ou hexadecimais;
Introdução
● Mnemônicos:
● São as instruções da linguagem Assembly;
● ASSEMBLER:
● É o nome dado ao programa montador;
● É o programa utilizado para compilar um programa
escrito em linguagem de montagem, tornando-o
executável;
● É o ambiente de programação;
● É responsável por traduzir o programa-fonte para o
programa-objeto;
● PORTANTO: assembler é diferente de assembly!
Introdução
● Compiladores disponíveis para a linguagem
Assembly:
● MASM (microsoft)
● MASM (ibm)
● TASM (borland)
● EMU8086 (http://www.emu8086.com/)
Introdução
● Saber programar em linguagem Assembly significa conhecer
e saber usar melhor os requisitos mais íntimos de um
microprocessador, e por conseguinte, saber controlar melhor
as funções de um computador digital.
● É usada na criação e desenvolvimento de rotinas escritas nas
formas de DLLs, drivers, programas embutidos
(computadores de bordo), etc.
● Algumas linguagens de alto nível possuem algum tipo de
interação com rotinas de programas escritos em Assembly.
● Códigos Assembly são rápidos e pequenos (compilado) mas o
código-fonte é extenso
Introdução
● Assembly é totalmente dependente de hardware
● Um código Assembly para INTEL não é o mesmo que
um para a AMD.
● Portanto, não é portável.
● EMU8086:
● Ambiente de programação;
● Programa de simulação do modo de operação
interna de um microprocessador padrão 8086;
● Modo gráfico;
NIBBLE
● É um conjunto numérico de 4 bits;
● Representa-se até 16 valores diferentes;
● É a menor estrutura numérica manipulada
internamente em um computador digital;
● Usa-se nibble para facilitar a representação
de valores binários em formato hexadecimal;
BYTE
● É um conjunto de oito bits;
● Representa-se numericamente até 256
valores diferentes;
● Um byte é formado pelo conjunto de dois
nibbles;
7 6 5 4 3 2 1 0
Bits mais significativos Bits menos significativos
Nibble 1 Nibble 2
WORD
● Representa um conjunto de 16 bits;
● Representa-se numericamente até 65.356 valores diferentes
(de 0 a 65.356);
● É formado por dois bytes;
● É formado por quatro nibbles;
● Também pode ser representado valores numéricos entre -
32.766 até 32.767;
● Representação de numeros inteiros;
● Representação de deslocamento de segmento;
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Bits mais significativos
Nibble 3 (mais
significativo)
Nibble 2 Nibble 1
Nibble 0 (menos
significativo)
Double Word
● É um conjunto de dois words;
● Um conjunto de 32 bits;
● Formada por um conjunto de quatro bytes ou oito nibbles;
● Representa-se 4.294.967.296 valores numéricos diferentes;
● Representa-se também numeros entre -2.147.483.648 e
2.147.483.647;
● Utilizado para representar:
● Valores inteiros de 32 bits
● Valores de ponto flutuante de 32 bits;
● Endereços segmentados;
Quad Word
● É um conjunto de dois double words;
● É um conjunto de 64 bits;
● É formado por dois double words, ou quatro words, ou oito
bytes ou ainda dezesseis nibbles;
● Representa-se 18.446.744.073.709.551.616 valores
numéricos diferentes;
● Representa-se -9.223.372.036.854.7756.808 à -
9.223.372.036.854.7756.808
● Usado em microprocessadores de 64 bits;
Registradores
 Utilizados para armazenar os valores que serão manipulados
por um programa;
 A arquitetura X86 da Intel é formada por 14 registradores
 Cada um manipula 16 bits
 São divididos em quatro grupos funcionais:
 Registradores gerais: AX, BX, CX, DX;
 Registradores de segmento: CS, DS, ES, SS
 Registradores de ponteiros: SI, DI, SP, BP, IP
 Registradores de estado: F
Registradores
● AX: accumulator extended
● BX: base extended
● CX: counter extended
● DC: data extended
● Cada registrador tem 16 bits de dados
● Cada registrador pode ser dividido em 2 duas
partes com 8 bits cada um
Registradores
REGISTRADORES DE USO GERAL
AX AH AL
BX BH BL
CX CH CL
DX DH DL
Registradores de Segmento
CS (Code Segment)
DS (Data Segment)
ES (Extra Data Segment)
SS (Stack Segment)
Registradores Ponteiros
SI (Source Index)
DI (Destination Index)
SP (Stack Pointer)
BP (Base Pointer)
IP (Instruction Pointer)
Registradores
REGISTRADORES DE ESTADO
F O D I T S Z A P C flags
1 1 1 1 1
5 4 3 2 1 0 9 8 7 6 5 4 3 2 1
Registradores
● Esquema da estrutura interna de cada registrador geral
AX
● AX (AH – AL) pode ser utilizado em:
● operações aritméticas
● Acessos de portas de entrada e saída;
● Chamadas de interrupções
● Transferência de dados
● Etc
BX
● BX: BH-BL
● Pode ser utilizado como ponteiro para
acessar a memória no sentido de obter
algum valor de retorno ou mesmo definir
valores que serão usados para auxiliar
operações aritméticas efetuadas com o
registrador ah
CX
● CX (CH-CL):
● Usado para receber alguns valores de
interrupções
● Principal finalidade:
● servir como contador de laços de
repetição e operações de deslocamento
registradas em CL
DX
● DX (DH-DL):
● Operações aritméticas
● Acessos de portas de entrada e saída
● Algumas chamadas de interrupções
Registradores de Segmento
● Tem 16 bits
● Usados para acessar uma determinada área
de memória (OFFSET)
● São utilizados para auxiliar o
microprocessador a encontrar o caminho
pela memória do computador
● Não podem ser divididos em grupos de 8 bits
CS
● Usado para apontar para uma área de
memória que contém o segmento de código
de programa que se encontra em execução
● Obs.: a mudança do valor existente nesse
registrador pode resultar em travamento do
computador
DS
● usado para apontar para a área de memória
que estiver sendo utilizada no
armazenamento dos dados do programa em
execução
● A mudança no valor existente nesse
registrador de segmento pode ocasionar a
obtenção de dados incorretos
ES
● Usado para determinar um segmento extra
de endereço de dados distante da área em
que se está operando
● Por exemplo: necessário quando é preciso
acessar a memória do vídeo
SS
● Usado para identificar a área de memória
que será usada como pilha, com o objetivo
de armazenar dados temporários para a
execução de um determinado programa
● Algumas vezes pode conter o mesmo valor
encontrado no registrador de segmento DS
● A mudança do valor pode trazer resultados
imprevisíveis relacionados aos dados
Registradores de
Deslocamento
● Registradores de apontamento
● Registradores de deslocamento
● Registradores de índice
● Associados ao acesso de uma determinada
posição de memória previamente conhecida
● Não podem ser divididos em grupos de 8 bits
● Quatro registradores são manipuláveis,
apenas o IP não é
IP
● Apontador da próxima instrução
● Possui o valor de deslocamento do código da
próxima instrução a ser executada
● É de uso interno do microprocessador
● Guarda o deslocamento da próxima
instrução de um programa
● O valor só pode ser lido
SI e DI
● Utilizados para manipular índices de uma tabela
● SI:
● usado para a leitura dos dados de tipo string de
uma tabela
● DI:
● usado para a escrita de dados do tipo string em
uma tabela
● Usado na definição de endereçamento distante
associado ao registrador de segmento ES
SP e BP
● Permitem acesso à pilha de programa
● Pilha de programa:
● memória para armazenamento de dados
● Possibilita armazenar dados em memória,
sem utilizar registradores gerais
● É um mecanismo que armazena dados de
cima para baixo
● BP: armazena o endereço da base da pilha
● SP: armazena o endereço do topo da pilha
Registrador de Estado
● Meio para sinalização de efetivação de
operações lógicas, aritméticas, manipulação
de blocos e interrupções
● Indicam o estado de comportamento do
microprocessador quando da execução de
alguma instrução Assembly
● Tem 16 bits
● Cada flag define ou sinaliza um estado de
comportamento particular
Registrador de Estado
● O flag está vinculado ao fato de uma ação ser
ou não executada
● 1: indica que o flag está setado (habilitado).
Quando uma ação é executada, indica que a
ação ocorreu
● 0: indica que o flag não está setado
(desabilitado). A ação em questão não sofreu
nenhum tipo de alteração.
Registrador de Estado
● C = Carry (vai um / empresta um)
● P = Parity
● A = Auxiliary Carry
● Z = Zero
● S = Sign
● T = Trap
● I = Interrupt Enable
● D = Direction
● O = Overflow
Registrador de Estado
● Flags utilizadas para indicar os resultados obtidos em
operações aritméticas ou lógicas:
● CF = Carry Flag
● PF = Paity Flag
● AF = Auxiliar Flag
● ZF = Zero Flag
● SF = Signal Flag
● OF = Overflow Flag
Registrador de Estado
● Flags utilizados para as tarefas de controle:
● TF = Trap Flag
● IF = Interrput Flag
● DF = Direction Flag
CF (bit 0)
● Passa para o valor 1 quando a operação
aritmética ultrapassar a capacidade de
armazenamento daquele valor (quando
precisar do VAI UM ou EMPRESTA UM)
● Se não ocorrer nenhuma movimentação de
VAI UM ou EMPRESTA UM, então o valor será
0.
● Exemplo: 255 + 1 = 256. Se a faixa de valores
é de 0 a 255, então o resultado está fora, e o
flag CF sofre a mudança para 1.
PF (bit 2)
● Indica se a paridade do byte inferior do
resultado é par ou ímpar após a execução de
uma operação aritmética ou lógica resultar
ou não um par de bits 1
● 1: paridade par
● 0: paridade ímpar
AF (bit 4)
● Indica a sinalização de carry do bit 3 para o bit 4
de uma adição com valores decimais (vai um)
● Indica a sinalização de carry do bit 4 para o bit 3
de uma subtração com valores decimais
(empresta um)
● Ambos são representados por sequencias
numericas escritas em formato BINARY CODE
DECIMAL (BCD)
● 1: ocorreu a operação de vai um
● 0: não ocorreu a operação de vai um
ZF (bit 6)
● 1: indica se o resultado após uma operação
aritmética ou lógica é igual a zero
● 0: indica se o resultado após uma operação
aritmética ou lógica é diferente de zero
● Usado também para obtenção de resultado
de comparação após uma ação lógica
● Se os valores comparados forem iguais é
sinalizado com o valor 1
SF (bit 7)
● Mostra a obtenção de um resultado negativo
ou positivo após uma operação aritmética de
complemento 2, não ocorrendo o estouro
(overflow)
● 0: resultado positivo
● 1: resultado negativo
TF (bit 8)
● Possibilita uma interrupção especial após
executar uma única instrução, com a finalidade
de acompanhar passo a passo a execução
individual das instruções de um determinado
programa em operações de debug
● 1: indica a execução da ação passo a passo da
própria instrução em foco. Após essa ação
ocorre uma interrupção e seu valor torna-se
zero.
● 0: se estiver em zero ocorre o contrário
IF (bit 9)
● Habilita ou desabilita o reconhecimento à
chamada de interrupções por meio da
instrução INT.
● 1: se estiver uma ocorrência de interrupção
habilitada
● 0: se não estiver uma ocorrência de
interrupção habilitada
DF (bit 10)
● Aponta a direção das operações de
manipulação de blocos da direita para a
esquerda ou vice-versa em string.
● 0: indica que os registradores de índice serão
incrementados
● 1: indica que os registradores de índice serão
decrementados
OF (bit 11)
● Indica a obtenção de um valor muito grande após
uma operação aritmética ou lógica
● Estouro de capacidade quando um número positivo
for muito grande ou um número negativo for muito
pequeno para ser processado
● Estouro da capacidade quando os valores estão fora
da faixa de valores permitida para a operação do
microprocessador
● 0: quando ocorrer o estouro
● 1: quando não ocorrer
INTERRUPÇÕES
● Ação do computador executar suas tarefas e
ter a capacidade de interrompê-las a
quaisquer momento, para realizar outras
tarefas solicitadas, retornando ao que estava
fazendo anteriormente
● Extremamente importante para o
fucionamento ADEQUADO de um
COMPUTADOR
INTERRUPÇÕES
● Interrupções tornam possível controlar
vários dispositivos associados ao
computador
● O funcionamento da interrupção ocorre pela
comunicação entre dispositivos externos e o
microprocessador
● INT:
● instrução utilizada para interrupções
INTERRUPÇÕES
● Faixa de valores de INT:
● 00h – FFh (número hexadecimal)
● Total de 256 interrupções possíveis
● Tabela de interrupções:
● Fica armazenada nos primeiros 1024 bytes da
memória (endereço físico de 0 a 1023)
● É um conjunto de vetores indexados aos
registradores CS e IP
● Cada vetor ocupa 4 bytes (2 bytes para cada
registrador)
INTERRUPÇÕES
● ISR:
● Interrupt Service Routine – outro nome para
a tabela de interrupções
● Possui o endereço das funções de cada uma
das interrupções existentes
● Três categorias:
● Interrupção por hardware
● Interrupção por exceção
● Interrupção por software
INTERRUPÇÃO POR
HARDWARE
● Possibilita acionar periféricos externos
● Faixa de valores:
● 08h a 0Fh
● IRQ:
● Interrupt request
● Linha pela qual a interrupção se conecta com
o microprocessador
● São controladas por rotinas do S.O. ou da
ROM-BIOS
INTERRUPÇÃO POR
HARDWARE
● Máximo de dispositivos externos: oito (se for
um microprocessador intel 8086. processadores
mais atuais manipulam mais dispositivos)
● Este tipo de interrupção é gerenciada pelo
próprio comptuador
● Não é possível mudar seu estado de
comportamento
INTERRUPÇÕES POR
HARDWARE
● 08h: IRQ0. Opera o chip temporizador do
sistema.
● 09h: IRQ1. Opera o teclado.
● 0Ah: IRQ2. Interrupção reservada.
● 0Bh: IRQ3. Opera as portas de comunicação
COM2.
● 0Ch: IRQ4. Opera as portas de comunicação
COM1
INTERRUPÇÕES POR
HARDWARE
● 0Dh: IRQ5. Opera uma unidade de disco.
● 0Eh: IRQ6. Opera unidade de discos flexíveis.
● 0Fh: IRQ7. Opera porta LPT1 para impressora
do tipo paralela
INTERRUPÇÃO POR EXCEÇÃO
● Possibilita fazer o controle condicional interno
do microprocessador, retornando algum tipo de
erro
● Exemplo: divisão por zero
● Faixa de valores: 0 a 7
● Oito tipos de interrupções
INTERRUPÇÃO POR EXCEÇÃO
● 00h: falha de divisão quando o divisor é igual a zero
● 01h: execução passo a passo num processo de debug
quando FLAG TF é setado
● 02h: interrupção reservada para a condição de
operação para NMI (Non Maskable Interrupt)
● 03h: ocorre na definição da execução de um ponto de
parada (Breakpoint) sobre a execução da instrução
INT3
● 04h: ocorre quando há estouro registrado no FLAG OF
quando da execução da instrução INTO
INTERRUPÇÃO POR
SOFTWARE
● Efetua o acionamento de determinadas
interrupções desejas por intermédio de um
programa em execução, podendo interferir
na ação de algum periférico conectado ao
microcomputador
● As interrupções mais utilizadas são as da
ROM-BIOS
INTERRUPÇÃO POR
SOFTWARE
● 10h: escrita de caractere no monitor de
vídeo
● 13h: operações de leitura e escrita em disco
● 14h: comunicação com porta serial
● 16h: leitura de caractere no teclado
● 17h: operações com impressora
● 19h: ação de reset
INTERRUPÇÃO POR
SOFTWARE
● 1Ah: retorna a hora do sistema
● 20h: finaliza a operação do sistema
● 21h: operações de leitura e escrita nos
periféricos padrão conectados ao sistema
● 33h: utilização do mouse
SEGMENTOS E
DESLOCAMENTOS
● Memória: tabela de dados
● Linhas: segmentos
● Colunas: deslocamentos (OFFSET)
● Capacidade de endereçar uma memória de
até 1MB dividida em 16 blocos com 64KB
● Cada bloco de memória é denominado
segmento de memória
● São numerados de 0 a F em hexadecimal
SEGMENTOS E
DESLOCAMENTOS
● Os segmentos de memória são endereçados
de 00000h (1º) a FFFFFh (último)
● O endereço físico é formado por cinco digitos
● 0xxxh referencia o segmento 0h
● 1xxxxh referencia o segmento 1h
● Os segmentos são divididos por
deslocamentos
● Deslocamentos variam de 0yyyyh a Fyyyyh
SEGMENTOS E
DESLOCAMENTOS
● Cada posição de deslocamento tem um total
de 16 bits que são manipulados pelos
registradores de segmentos
● O segmento de memória é dividido em duas
partes:
● 1ª parte: um segmento de 16 bits
● 2ª parte: um deslocamento de 4 bits
● Total do endereço de memória: 20 bits
SEGMENTOS E
DESLOCAMENTOS
● A posição de memória a ser especificada é
definida pelo valor do segmento e pelo seu
deslocamento em relação ao início do segmento
● REPRESENTAÇÃO:
● xxxzh:yyyyh
● segmento:deslocamento
● Xxxxh: endereço do segmento
● Yyyyyh: posição do deslocamento desejado
SEGMENTOS E
DESLOCAMENTOS
SEGMENTOS E
DESLOCAMENTOS
A Figura apresenta uma memória que está armazenando o seguinte texto:
“Aprender assembly requer atenção e dedicação”
“editora érica ltda”
“Quem descobriu o Brasil foi Pedro Álvares Cabral”
“D. Pedro I proclamou a independencia”
SEGMENTOS E
DESLOCAMENTOS
O armazenamento de dados na memória ocorre de forma contígua (um dado após o outro)
Cada dado ocupa UMA posição de DESLOCAMENTO em relação à UM posição de SEGMENTO
O que está no endereço 2h:Eh? Até onde se estende?
SEGMENTOS E
DESLOCAMENTOS
O endereço final será 2Eh. Este é o valor efeitvo. Para se obtê-lo faça 16d (decimal) ou 10h vezes
o valor do segmento e some o valor do deslocamento. Portanto: 2h * 10h + Eh = 2Eh
SEGMENTOS E
DESLOCAMENTOS
EXEMPLO DE MEMÓRIA: TABELA DE DADOS
DESLOCAMENTOS
00000h 00001h 00002h 00003h 00004h 00005h 00006h 00007h 00008h 00009h 0000Ah 0000Bh 0000Ch 0000Dh 0000Eh 0000Fh
0h 1h 2h 3h 4h 5h 6h 7h 8h 9h Ah Bh Ch Dh Eh Fh
0 1 2 3 4 5 6 7 8 9 A B C D E F
4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits
TOTALDE64KB
SEGMENTOS
00000h 0h 0 16 bits
00001h 1h 1 16 bits
00002h 2h 2 16 bits
00003h 3h 3 16 bits
00004h 4h 4 16 bits
00005h 5h 5 16 bits
00006h 6h 6 16 bits
00007h 7h 7 16 bits
00008h 8h 8 16 bits
00009h 9h 9 16 bits
0000Ah Ah A 16 bits
0000Bh Bh B 16 bits
0000Ch Ch C 16 bits
0000Dh Dh D 16 bits
0000Eh Eh E 16 bits
0000Fh Fh F 16 bits
Endereçamento de Memória
● Função primária: armazenar dados
● Formada por um grande conjunto de células
de armazenamento
● Cada célula é formada por um conjunto de 8
bits
● Pode assumir 256 significados
● Cada célula tem um endereço absoluto de
posição
Endereçamento de Memória
● Cada posição é individual, tem um valor
numérico que representa seu endereço
● Em um processador intel 8086 seu
endereçamento máximo está na casa dos
640KB
● A região de memória vai de 0KB a 640KB
● Essa região toda está dividida em várias
partes reservadas
Endereçamento de Memória
Endereçamento de Memória
● A área de memória livre para trabalho é
menor que 640KB
● 1,5KB dos 640KB é reservado
● O espaço também é utilizado pelos arquivos
de controle do sistema
● Informações temporárias dos programas
BIOS e vídeo devem ser armazenadas em
memória RAM (mesmo que eles estejam
gravados em memória ROM)
ASSEMBLY
● Denominações semelhantes:
● ASM86
● X86
● ASM8086
● Todos os microprocessadores da família
INTEL possuem basicamente o mesmo
conjunto de instruções existentes no padrão
do microprocessador 8086 e 8088
ASSEMBLY
● Assembly 8086 possui 116 instruções
(mnemonicos) diferentes destinadas ao
controle do microprocessadores
● Os outros microprocessadores INTEL
possuem novas, e mais, instruções a cada
novo lançamento
ASSEMBLY
● Seis grupos funcionais:
● Transferência de dados
● Aritméticas
● Manipulação de bits
● Manipulação de strings
● Controle de programa
● Controle do microprocessadores
TRANSFERENCIA DE DADOS
● Instruções destinadas à movimentação de
dados
● Podem ser movimentados:
● Entre registradores
● Entre registradores e posições de
memória
● Entre registradores e unidades de entrada
e saída
ARITMÉTICAS
● Instruções destinadas aos cálculos
matemáticos básicos:
● Adição
● Subtração
● Multiplicação
● Divisão
MANIPULAÇÃO DE BITS
● Instruções que fazem o deslocamento de bits
em um registrador ou posição de memória
● As funções de operações lógicas de
conjunção (ou), disjunção (e) e negação são
incluídas neste grupo
MANIPULAÇÃO DE STRINGS
● Fazem o controle de grupos de sequencias
de caracteres
● Comparação
● Análise
● Movimentação
CONTROLE DE PROGRAMA
● Instruções que controlam a execução do
código de programa
● Pode ser:
● Execução sequencial
● Com laços
● Sub-rotinas
● Subprogramas
CONTROLE DE PROGRAMA
● Podem manipular as interrupções de um
programa em execução
● A interrupção ocorre por vários motivos.
Exemplo:
● Aceitar uma entrada de dados via teclado.
● É necessário fazer uma interrupção no
programa, para que o dado possa ser
digitado, e após aceitar o dado continua sua
execução
CONTROLE DE
MICROPROCESSADOR
● Instruções que possibilitam o acesso dos
registradores de controle do
microprocessador com o objetivo de mudar
seu estado de comportamento

Mais conteúdo relacionado

Mais procurados

10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladoresAlyson Cavalcante
 
Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônicaFabio Souza
 
Linguagens De ProgramaçãO Clp
Linguagens De ProgramaçãO ClpLinguagens De ProgramaçãO Clp
Linguagens De ProgramaçãO ClpJÚLIO PEIXOTO
 
Clp varios modelos
Clp varios modelosClp varios modelos
Clp varios modelosdetectfelix
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladoresDanilo Morais Pagano
 
Microcontroladores PIC - Introdução
Microcontroladores PIC - IntroduçãoMicrocontroladores PIC - Introdução
Microcontroladores PIC - IntroduçãoFabio Souza
 
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem CMicrocontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem CFabio Souza
 
Sistemas logicos programaveis
Sistemas logicos programaveisSistemas logicos programaveis
Sistemas logicos programaveislaritha
 
Microcontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas DigitaisMicrocontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas DigitaisFabio Souza
 
Microcontroladores pic
Microcontroladores picMicrocontroladores pic
Microcontroladores picCesar Prim
 
Processador mips - parte operativa e parte de controle
Processador mips - parte operativa e parte de controleProcessador mips - parte operativa e parte de controle
Processador mips - parte operativa e parte de controleBruno Andretti Duarte
 
8085 Introducao
8085 Introducao8085 Introducao
8085 Introducaoedgluc2001
 
Resumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroCResumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroCFabio Souza
 

Mais procurados (20)

10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladores
 
HC11
HC11HC11
HC11
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônica
 
Apostila cpic
Apostila cpicApostila cpic
Apostila cpic
 
Linguagens De ProgramaçãO Clp
Linguagens De ProgramaçãO ClpLinguagens De ProgramaçãO Clp
Linguagens De ProgramaçãO Clp
 
Clp varios modelos
Clp varios modelosClp varios modelos
Clp varios modelos
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladores
 
Programando microcontroladores pic março
Programando microcontroladores pic marçoProgramando microcontroladores pic março
Programando microcontroladores pic março
 
Microcontroladores PIC - Introdução
Microcontroladores PIC - IntroduçãoMicrocontroladores PIC - Introdução
Microcontroladores PIC - Introdução
 
Pic16f628a
Pic16f628aPic16f628a
Pic16f628a
 
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem CMicrocontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
 
03 linguagem ladder instrucoes de bit
03 linguagem ladder instrucoes de bit03 linguagem ladder instrucoes de bit
03 linguagem ladder instrucoes de bit
 
Sistemas logicos programaveis
Sistemas logicos programaveisSistemas logicos programaveis
Sistemas logicos programaveis
 
Microcontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas DigitaisMicrocontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas Digitais
 
Microcontroladores pic
Microcontroladores picMicrocontroladores pic
Microcontroladores pic
 
C pic
C picC pic
C pic
 
Processador mips - parte operativa e parte de controle
Processador mips - parte operativa e parte de controleProcessador mips - parte operativa e parte de controle
Processador mips - parte operativa e parte de controle
 
8085 Introducao
8085 Introducao8085 Introducao
8085 Introducao
 
Resumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroCResumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroC
 

Destaque

Microarquitetura Intel Core Duo
Microarquitetura Intel Core DuoMicroarquitetura Intel Core Duo
Microarquitetura Intel Core DuoSamuel Bié
 
Criando um sistema operacional básico
Criando um sistema operacional básicoCriando um sistema operacional básico
Criando um sistema operacional básicoVHC Informatica
 
50978145 algoritmos-exercicios-resolvidos
50978145 algoritmos-exercicios-resolvidos50978145 algoritmos-exercicios-resolvidos
50978145 algoritmos-exercicios-resolvidosEdvan Mateó
 
Aula 2 programas e linguagens de programação
Aula 2   programas e linguagens de programaçãoAula 2   programas e linguagens de programação
Aula 2 programas e linguagens de programaçãoLCCIMETRO
 
Aula 1 apresentação - conteudo programático
Aula 1   apresentação - conteudo programáticoAula 1   apresentação - conteudo programático
Aula 1 apresentação - conteudo programáticoLCCIMETRO
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadoresLCCIMETRO
 
Logica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoLogica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoRegis Magalhães
 
Apostila de algoritmo e programação
Apostila de algoritmo e programaçãoApostila de algoritmo e programação
Apostila de algoritmo e programaçãoThiago Marques
 
Apresentação linguagem cobol
Apresentação linguagem cobolApresentação linguagem cobol
Apresentação linguagem cobolAlexByDoomS
 
Aula 6 emu8086
Aula 6   emu8086Aula 6   emu8086
Aula 6 emu8086LCCIMETRO
 
Aula 4 a linguagem assembly
Aula 4   a linguagem assemblyAula 4   a linguagem assembly
Aula 4 a linguagem assemblyLCCIMETRO
 
Conjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoConjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoElaine Cecília Gatto
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programaçãorodfernandes
 
Aula 5 instrução mov
Aula 5   instrução movAula 5   instrução mov
Aula 5 instrução movLCCIMETRO
 

Destaque (20)

Microarquitetura Intel Core Duo
Microarquitetura Intel Core DuoMicroarquitetura Intel Core Duo
Microarquitetura Intel Core Duo
 
Criando um sistema operacional básico
Criando um sistema operacional básicoCriando um sistema operacional básico
Criando um sistema operacional básico
 
Aula 5 aed - vetores
Aula 5   aed - vetoresAula 5   aed - vetores
Aula 5 aed - vetores
 
50978145 algoritmos-exercicios-resolvidos
50978145 algoritmos-exercicios-resolvidos50978145 algoritmos-exercicios-resolvidos
50978145 algoritmos-exercicios-resolvidos
 
MIPS Pipeline
MIPS Pipeline MIPS Pipeline
MIPS Pipeline
 
Aula 2 programas e linguagens de programação
Aula 2   programas e linguagens de programaçãoAula 2   programas e linguagens de programação
Aula 2 programas e linguagens de programação
 
Aula 1 apresentação - conteudo programático
Aula 1   apresentação - conteudo programáticoAula 1   apresentação - conteudo programático
Aula 1 apresentação - conteudo programático
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadores
 
Logica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoLogica Algoritmo 05 Repeticao
Logica Algoritmo 05 Repeticao
 
Aula 07-oac-processadores
Aula 07-oac-processadoresAula 07-oac-processadores
Aula 07-oac-processadores
 
Apostila de algoritmo e programação
Apostila de algoritmo e programaçãoApostila de algoritmo e programação
Apostila de algoritmo e programação
 
COBOL
COBOLCOBOL
COBOL
 
Apresentação linguagem cobol
Apresentação linguagem cobolApresentação linguagem cobol
Apresentação linguagem cobol
 
Seminário: C
Seminário: CSeminário: C
Seminário: C
 
Seminário: COBOL
Seminário: COBOLSeminário: COBOL
Seminário: COBOL
 
Aula 6 emu8086
Aula 6   emu8086Aula 6   emu8086
Aula 6 emu8086
 
Aula 4 a linguagem assembly
Aula 4   a linguagem assemblyAula 4   a linguagem assembly
Aula 4 a linguagem assembly
 
Conjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoConjunto de instruções mips - introdução
Conjunto de instruções mips - introdução
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Aula 5 instrução mov
Aula 5   instrução movAula 5   instrução mov
Aula 5 instrução mov
 

Semelhante a Assemblyparte1 140320111308-phpapp02

Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...tdc-globalcode
 
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESwillian324163
 
Aula 7 conjunto de instrucoes
Aula 7   conjunto de instrucoesAula 7   conjunto de instrucoes
Aula 7 conjunto de instrucoesCratuscb
 
Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascalJocelma Rios
 
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux SystemsLinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux SystemsFernando Mercês
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It YourselfBruno Nascimento
 
-Aula 4 - Programacao do 8085.ppt
-Aula 4 - Programacao do 8085.ppt-Aula 4 - Programacao do 8085.ppt
-Aula 4 - Programacao do 8085.pptJosReginaldo6
 
UFCD-6072-Microcontroladores-Registos.pptx
UFCD-6072-Microcontroladores-Registos.pptxUFCD-6072-Microcontroladores-Registos.pptx
UFCD-6072-Microcontroladores-Registos.pptxcentroclinicosalus
 
Apostila para aprender sobre CPUs e tudo mais
Apostila para aprender sobre CPUs e tudo maisApostila para aprender sobre CPUs e tudo mais
Apostila para aprender sobre CPUs e tudo maisGilberto Mota
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresLuis Ferreira
 
Microcontroladores x microprocessadores
Microcontroladores x microprocessadoresMicrocontroladores x microprocessadores
Microcontroladores x microprocessadoresmiroslayer
 
Programação de Microprocessadores
Programação de MicroprocessadoresProgramação de Microprocessadores
Programação de MicroprocessadoresDiogo Silva
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 

Semelhante a Assemblyparte1 140320111308-phpapp02 (20)

Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
 
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
 
Aula 7 conjunto de instrucoes
Aula 7   conjunto de instrucoesAula 7   conjunto de instrucoes
Aula 7 conjunto de instrucoes
 
Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascal
 
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux SystemsLinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
 
Arm Cortex
Arm CortexArm Cortex
Arm Cortex
 
Oc2 cap03
Oc2 cap03Oc2 cap03
Oc2 cap03
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It Yourself
 
Processadores intel 8008 e 8080
Processadores intel 8008 e 8080Processadores intel 8008 e 8080
Processadores intel 8008 e 8080
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
-Aula 4 - Programacao do 8085.ppt
-Aula 4 - Programacao do 8085.ppt-Aula 4 - Programacao do 8085.ppt
-Aula 4 - Programacao do 8085.ppt
 
UFCD-6072-Microcontroladores-Registos.pptx
UFCD-6072-Microcontroladores-Registos.pptxUFCD-6072-Microcontroladores-Registos.pptx
UFCD-6072-Microcontroladores-Registos.pptx
 
Apostila para aprender sobre CPUs e tudo mais
Apostila para aprender sobre CPUs e tudo maisApostila para aprender sobre CPUs e tudo mais
Apostila para aprender sobre CPUs e tudo mais
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
Blackfin
BlackfinBlackfin
Blackfin
 
Microcontroladores x microprocessadores
Microcontroladores x microprocessadoresMicrocontroladores x microprocessadores
Microcontroladores x microprocessadores
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Programação de Microprocessadores
Programação de MicroprocessadoresProgramação de Microprocessadores
Programação de Microprocessadores
 
05-ModeloDeVonNeumann.pdf
05-ModeloDeVonNeumann.pdf05-ModeloDeVonNeumann.pdf
05-ModeloDeVonNeumann.pdf
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 

Assemblyparte1 140320111308-phpapp02

  • 1. ASSEMBLY Prof.ª Ms. Elaine Cecília Gatto Disciplina: Arquitetura de Computadores Curso: Engenharia de Computação
  • 2. Introdução ● É linguagem de montagem; ● É utilizada para programar um computador de baixo nível; ● O programa é montado dentro do processador; ● Não é uma linguagem de máquina ● Linguagem de máquina: ● Utilizada por um MICROPROCESSADOR para controlar funções de um computador digital.
  • 3. Introdução ● MICROPROCESSADOR: ● É um circuito que possui a capacidade de executar diversos tipos de funções distintas; ● É usado em um computador.
  • 4. Introdução ● Linguagem de máquina: ● Só aceita e manipula informações numéricas expressas em notação de códigos binários; ● Assembly: ● Linguagem de programação que surgiu entre a década de 40 e 50; ● Objetivo: facilitar o trabalho de codificação de um programa de computador; ● É composta por códigos alfabéticos muito mais fáceis de se utilizar que códigos binários ou hexadecimais;
  • 5. Introdução ● Mnemônicos: ● São as instruções da linguagem Assembly; ● ASSEMBLER: ● É o nome dado ao programa montador; ● É o programa utilizado para compilar um programa escrito em linguagem de montagem, tornando-o executável; ● É o ambiente de programação; ● É responsável por traduzir o programa-fonte para o programa-objeto; ● PORTANTO: assembler é diferente de assembly!
  • 6. Introdução ● Compiladores disponíveis para a linguagem Assembly: ● MASM (microsoft) ● MASM (ibm) ● TASM (borland) ● EMU8086 (http://www.emu8086.com/)
  • 7. Introdução ● Saber programar em linguagem Assembly significa conhecer e saber usar melhor os requisitos mais íntimos de um microprocessador, e por conseguinte, saber controlar melhor as funções de um computador digital. ● É usada na criação e desenvolvimento de rotinas escritas nas formas de DLLs, drivers, programas embutidos (computadores de bordo), etc. ● Algumas linguagens de alto nível possuem algum tipo de interação com rotinas de programas escritos em Assembly. ● Códigos Assembly são rápidos e pequenos (compilado) mas o código-fonte é extenso
  • 8. Introdução ● Assembly é totalmente dependente de hardware ● Um código Assembly para INTEL não é o mesmo que um para a AMD. ● Portanto, não é portável. ● EMU8086: ● Ambiente de programação; ● Programa de simulação do modo de operação interna de um microprocessador padrão 8086; ● Modo gráfico;
  • 9. NIBBLE ● É um conjunto numérico de 4 bits; ● Representa-se até 16 valores diferentes; ● É a menor estrutura numérica manipulada internamente em um computador digital; ● Usa-se nibble para facilitar a representação de valores binários em formato hexadecimal;
  • 10. BYTE ● É um conjunto de oito bits; ● Representa-se numericamente até 256 valores diferentes; ● Um byte é formado pelo conjunto de dois nibbles; 7 6 5 4 3 2 1 0 Bits mais significativos Bits menos significativos Nibble 1 Nibble 2
  • 11. WORD ● Representa um conjunto de 16 bits; ● Representa-se numericamente até 65.356 valores diferentes (de 0 a 65.356); ● É formado por dois bytes; ● É formado por quatro nibbles; ● Também pode ser representado valores numéricos entre - 32.766 até 32.767; ● Representação de numeros inteiros; ● Representação de deslocamento de segmento; 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Bits mais significativos Nibble 3 (mais significativo) Nibble 2 Nibble 1 Nibble 0 (menos significativo)
  • 12. Double Word ● É um conjunto de dois words; ● Um conjunto de 32 bits; ● Formada por um conjunto de quatro bytes ou oito nibbles; ● Representa-se 4.294.967.296 valores numéricos diferentes; ● Representa-se também numeros entre -2.147.483.648 e 2.147.483.647; ● Utilizado para representar: ● Valores inteiros de 32 bits ● Valores de ponto flutuante de 32 bits; ● Endereços segmentados;
  • 13. Quad Word ● É um conjunto de dois double words; ● É um conjunto de 64 bits; ● É formado por dois double words, ou quatro words, ou oito bytes ou ainda dezesseis nibbles; ● Representa-se 18.446.744.073.709.551.616 valores numéricos diferentes; ● Representa-se -9.223.372.036.854.7756.808 à - 9.223.372.036.854.7756.808 ● Usado em microprocessadores de 64 bits;
  • 14. Registradores  Utilizados para armazenar os valores que serão manipulados por um programa;  A arquitetura X86 da Intel é formada por 14 registradores  Cada um manipula 16 bits  São divididos em quatro grupos funcionais:  Registradores gerais: AX, BX, CX, DX;  Registradores de segmento: CS, DS, ES, SS  Registradores de ponteiros: SI, DI, SP, BP, IP  Registradores de estado: F
  • 15. Registradores ● AX: accumulator extended ● BX: base extended ● CX: counter extended ● DC: data extended ● Cada registrador tem 16 bits de dados ● Cada registrador pode ser dividido em 2 duas partes com 8 bits cada um
  • 16. Registradores REGISTRADORES DE USO GERAL AX AH AL BX BH BL CX CH CL DX DH DL Registradores de Segmento CS (Code Segment) DS (Data Segment) ES (Extra Data Segment) SS (Stack Segment) Registradores Ponteiros SI (Source Index) DI (Destination Index) SP (Stack Pointer) BP (Base Pointer) IP (Instruction Pointer)
  • 17. Registradores REGISTRADORES DE ESTADO F O D I T S Z A P C flags 1 1 1 1 1 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1
  • 18. Registradores ● Esquema da estrutura interna de cada registrador geral
  • 19. AX ● AX (AH – AL) pode ser utilizado em: ● operações aritméticas ● Acessos de portas de entrada e saída; ● Chamadas de interrupções ● Transferência de dados ● Etc
  • 20. BX ● BX: BH-BL ● Pode ser utilizado como ponteiro para acessar a memória no sentido de obter algum valor de retorno ou mesmo definir valores que serão usados para auxiliar operações aritméticas efetuadas com o registrador ah
  • 21. CX ● CX (CH-CL): ● Usado para receber alguns valores de interrupções ● Principal finalidade: ● servir como contador de laços de repetição e operações de deslocamento registradas em CL
  • 22. DX ● DX (DH-DL): ● Operações aritméticas ● Acessos de portas de entrada e saída ● Algumas chamadas de interrupções
  • 23. Registradores de Segmento ● Tem 16 bits ● Usados para acessar uma determinada área de memória (OFFSET) ● São utilizados para auxiliar o microprocessador a encontrar o caminho pela memória do computador ● Não podem ser divididos em grupos de 8 bits
  • 24. CS ● Usado para apontar para uma área de memória que contém o segmento de código de programa que se encontra em execução ● Obs.: a mudança do valor existente nesse registrador pode resultar em travamento do computador
  • 25. DS ● usado para apontar para a área de memória que estiver sendo utilizada no armazenamento dos dados do programa em execução ● A mudança no valor existente nesse registrador de segmento pode ocasionar a obtenção de dados incorretos
  • 26. ES ● Usado para determinar um segmento extra de endereço de dados distante da área em que se está operando ● Por exemplo: necessário quando é preciso acessar a memória do vídeo
  • 27. SS ● Usado para identificar a área de memória que será usada como pilha, com o objetivo de armazenar dados temporários para a execução de um determinado programa ● Algumas vezes pode conter o mesmo valor encontrado no registrador de segmento DS ● A mudança do valor pode trazer resultados imprevisíveis relacionados aos dados
  • 28. Registradores de Deslocamento ● Registradores de apontamento ● Registradores de deslocamento ● Registradores de índice ● Associados ao acesso de uma determinada posição de memória previamente conhecida ● Não podem ser divididos em grupos de 8 bits ● Quatro registradores são manipuláveis, apenas o IP não é
  • 29. IP ● Apontador da próxima instrução ● Possui o valor de deslocamento do código da próxima instrução a ser executada ● É de uso interno do microprocessador ● Guarda o deslocamento da próxima instrução de um programa ● O valor só pode ser lido
  • 30. SI e DI ● Utilizados para manipular índices de uma tabela ● SI: ● usado para a leitura dos dados de tipo string de uma tabela ● DI: ● usado para a escrita de dados do tipo string em uma tabela ● Usado na definição de endereçamento distante associado ao registrador de segmento ES
  • 31. SP e BP ● Permitem acesso à pilha de programa ● Pilha de programa: ● memória para armazenamento de dados ● Possibilita armazenar dados em memória, sem utilizar registradores gerais ● É um mecanismo que armazena dados de cima para baixo ● BP: armazena o endereço da base da pilha ● SP: armazena o endereço do topo da pilha
  • 32. Registrador de Estado ● Meio para sinalização de efetivação de operações lógicas, aritméticas, manipulação de blocos e interrupções ● Indicam o estado de comportamento do microprocessador quando da execução de alguma instrução Assembly ● Tem 16 bits ● Cada flag define ou sinaliza um estado de comportamento particular
  • 33. Registrador de Estado ● O flag está vinculado ao fato de uma ação ser ou não executada ● 1: indica que o flag está setado (habilitado). Quando uma ação é executada, indica que a ação ocorreu ● 0: indica que o flag não está setado (desabilitado). A ação em questão não sofreu nenhum tipo de alteração.
  • 34. Registrador de Estado ● C = Carry (vai um / empresta um) ● P = Parity ● A = Auxiliary Carry ● Z = Zero ● S = Sign ● T = Trap ● I = Interrupt Enable ● D = Direction ● O = Overflow
  • 35. Registrador de Estado ● Flags utilizadas para indicar os resultados obtidos em operações aritméticas ou lógicas: ● CF = Carry Flag ● PF = Paity Flag ● AF = Auxiliar Flag ● ZF = Zero Flag ● SF = Signal Flag ● OF = Overflow Flag
  • 36. Registrador de Estado ● Flags utilizados para as tarefas de controle: ● TF = Trap Flag ● IF = Interrput Flag ● DF = Direction Flag
  • 37. CF (bit 0) ● Passa para o valor 1 quando a operação aritmética ultrapassar a capacidade de armazenamento daquele valor (quando precisar do VAI UM ou EMPRESTA UM) ● Se não ocorrer nenhuma movimentação de VAI UM ou EMPRESTA UM, então o valor será 0. ● Exemplo: 255 + 1 = 256. Se a faixa de valores é de 0 a 255, então o resultado está fora, e o flag CF sofre a mudança para 1.
  • 38. PF (bit 2) ● Indica se a paridade do byte inferior do resultado é par ou ímpar após a execução de uma operação aritmética ou lógica resultar ou não um par de bits 1 ● 1: paridade par ● 0: paridade ímpar
  • 39. AF (bit 4) ● Indica a sinalização de carry do bit 3 para o bit 4 de uma adição com valores decimais (vai um) ● Indica a sinalização de carry do bit 4 para o bit 3 de uma subtração com valores decimais (empresta um) ● Ambos são representados por sequencias numericas escritas em formato BINARY CODE DECIMAL (BCD) ● 1: ocorreu a operação de vai um ● 0: não ocorreu a operação de vai um
  • 40. ZF (bit 6) ● 1: indica se o resultado após uma operação aritmética ou lógica é igual a zero ● 0: indica se o resultado após uma operação aritmética ou lógica é diferente de zero ● Usado também para obtenção de resultado de comparação após uma ação lógica ● Se os valores comparados forem iguais é sinalizado com o valor 1
  • 41. SF (bit 7) ● Mostra a obtenção de um resultado negativo ou positivo após uma operação aritmética de complemento 2, não ocorrendo o estouro (overflow) ● 0: resultado positivo ● 1: resultado negativo
  • 42. TF (bit 8) ● Possibilita uma interrupção especial após executar uma única instrução, com a finalidade de acompanhar passo a passo a execução individual das instruções de um determinado programa em operações de debug ● 1: indica a execução da ação passo a passo da própria instrução em foco. Após essa ação ocorre uma interrupção e seu valor torna-se zero. ● 0: se estiver em zero ocorre o contrário
  • 43. IF (bit 9) ● Habilita ou desabilita o reconhecimento à chamada de interrupções por meio da instrução INT. ● 1: se estiver uma ocorrência de interrupção habilitada ● 0: se não estiver uma ocorrência de interrupção habilitada
  • 44. DF (bit 10) ● Aponta a direção das operações de manipulação de blocos da direita para a esquerda ou vice-versa em string. ● 0: indica que os registradores de índice serão incrementados ● 1: indica que os registradores de índice serão decrementados
  • 45. OF (bit 11) ● Indica a obtenção de um valor muito grande após uma operação aritmética ou lógica ● Estouro de capacidade quando um número positivo for muito grande ou um número negativo for muito pequeno para ser processado ● Estouro da capacidade quando os valores estão fora da faixa de valores permitida para a operação do microprocessador ● 0: quando ocorrer o estouro ● 1: quando não ocorrer
  • 46. INTERRUPÇÕES ● Ação do computador executar suas tarefas e ter a capacidade de interrompê-las a quaisquer momento, para realizar outras tarefas solicitadas, retornando ao que estava fazendo anteriormente ● Extremamente importante para o fucionamento ADEQUADO de um COMPUTADOR
  • 47. INTERRUPÇÕES ● Interrupções tornam possível controlar vários dispositivos associados ao computador ● O funcionamento da interrupção ocorre pela comunicação entre dispositivos externos e o microprocessador ● INT: ● instrução utilizada para interrupções
  • 48. INTERRUPÇÕES ● Faixa de valores de INT: ● 00h – FFh (número hexadecimal) ● Total de 256 interrupções possíveis ● Tabela de interrupções: ● Fica armazenada nos primeiros 1024 bytes da memória (endereço físico de 0 a 1023) ● É um conjunto de vetores indexados aos registradores CS e IP ● Cada vetor ocupa 4 bytes (2 bytes para cada registrador)
  • 49. INTERRUPÇÕES ● ISR: ● Interrupt Service Routine – outro nome para a tabela de interrupções ● Possui o endereço das funções de cada uma das interrupções existentes ● Três categorias: ● Interrupção por hardware ● Interrupção por exceção ● Interrupção por software
  • 50. INTERRUPÇÃO POR HARDWARE ● Possibilita acionar periféricos externos ● Faixa de valores: ● 08h a 0Fh ● IRQ: ● Interrupt request ● Linha pela qual a interrupção se conecta com o microprocessador ● São controladas por rotinas do S.O. ou da ROM-BIOS
  • 51. INTERRUPÇÃO POR HARDWARE ● Máximo de dispositivos externos: oito (se for um microprocessador intel 8086. processadores mais atuais manipulam mais dispositivos) ● Este tipo de interrupção é gerenciada pelo próprio comptuador ● Não é possível mudar seu estado de comportamento
  • 52. INTERRUPÇÕES POR HARDWARE ● 08h: IRQ0. Opera o chip temporizador do sistema. ● 09h: IRQ1. Opera o teclado. ● 0Ah: IRQ2. Interrupção reservada. ● 0Bh: IRQ3. Opera as portas de comunicação COM2. ● 0Ch: IRQ4. Opera as portas de comunicação COM1
  • 53. INTERRUPÇÕES POR HARDWARE ● 0Dh: IRQ5. Opera uma unidade de disco. ● 0Eh: IRQ6. Opera unidade de discos flexíveis. ● 0Fh: IRQ7. Opera porta LPT1 para impressora do tipo paralela
  • 54. INTERRUPÇÃO POR EXCEÇÃO ● Possibilita fazer o controle condicional interno do microprocessador, retornando algum tipo de erro ● Exemplo: divisão por zero ● Faixa de valores: 0 a 7 ● Oito tipos de interrupções
  • 55. INTERRUPÇÃO POR EXCEÇÃO ● 00h: falha de divisão quando o divisor é igual a zero ● 01h: execução passo a passo num processo de debug quando FLAG TF é setado ● 02h: interrupção reservada para a condição de operação para NMI (Non Maskable Interrupt) ● 03h: ocorre na definição da execução de um ponto de parada (Breakpoint) sobre a execução da instrução INT3 ● 04h: ocorre quando há estouro registrado no FLAG OF quando da execução da instrução INTO
  • 56. INTERRUPÇÃO POR SOFTWARE ● Efetua o acionamento de determinadas interrupções desejas por intermédio de um programa em execução, podendo interferir na ação de algum periférico conectado ao microcomputador ● As interrupções mais utilizadas são as da ROM-BIOS
  • 57. INTERRUPÇÃO POR SOFTWARE ● 10h: escrita de caractere no monitor de vídeo ● 13h: operações de leitura e escrita em disco ● 14h: comunicação com porta serial ● 16h: leitura de caractere no teclado ● 17h: operações com impressora ● 19h: ação de reset
  • 58. INTERRUPÇÃO POR SOFTWARE ● 1Ah: retorna a hora do sistema ● 20h: finaliza a operação do sistema ● 21h: operações de leitura e escrita nos periféricos padrão conectados ao sistema ● 33h: utilização do mouse
  • 59. SEGMENTOS E DESLOCAMENTOS ● Memória: tabela de dados ● Linhas: segmentos ● Colunas: deslocamentos (OFFSET) ● Capacidade de endereçar uma memória de até 1MB dividida em 16 blocos com 64KB ● Cada bloco de memória é denominado segmento de memória ● São numerados de 0 a F em hexadecimal
  • 60. SEGMENTOS E DESLOCAMENTOS ● Os segmentos de memória são endereçados de 00000h (1º) a FFFFFh (último) ● O endereço físico é formado por cinco digitos ● 0xxxh referencia o segmento 0h ● 1xxxxh referencia o segmento 1h ● Os segmentos são divididos por deslocamentos ● Deslocamentos variam de 0yyyyh a Fyyyyh
  • 61. SEGMENTOS E DESLOCAMENTOS ● Cada posição de deslocamento tem um total de 16 bits que são manipulados pelos registradores de segmentos ● O segmento de memória é dividido em duas partes: ● 1ª parte: um segmento de 16 bits ● 2ª parte: um deslocamento de 4 bits ● Total do endereço de memória: 20 bits
  • 62. SEGMENTOS E DESLOCAMENTOS ● A posição de memória a ser especificada é definida pelo valor do segmento e pelo seu deslocamento em relação ao início do segmento ● REPRESENTAÇÃO: ● xxxzh:yyyyh ● segmento:deslocamento ● Xxxxh: endereço do segmento ● Yyyyyh: posição do deslocamento desejado
  • 64. SEGMENTOS E DESLOCAMENTOS A Figura apresenta uma memória que está armazenando o seguinte texto: “Aprender assembly requer atenção e dedicação” “editora érica ltda” “Quem descobriu o Brasil foi Pedro Álvares Cabral” “D. Pedro I proclamou a independencia”
  • 65. SEGMENTOS E DESLOCAMENTOS O armazenamento de dados na memória ocorre de forma contígua (um dado após o outro) Cada dado ocupa UMA posição de DESLOCAMENTO em relação à UM posição de SEGMENTO O que está no endereço 2h:Eh? Até onde se estende?
  • 66. SEGMENTOS E DESLOCAMENTOS O endereço final será 2Eh. Este é o valor efeitvo. Para se obtê-lo faça 16d (decimal) ou 10h vezes o valor do segmento e some o valor do deslocamento. Portanto: 2h * 10h + Eh = 2Eh
  • 67. SEGMENTOS E DESLOCAMENTOS EXEMPLO DE MEMÓRIA: TABELA DE DADOS DESLOCAMENTOS 00000h 00001h 00002h 00003h 00004h 00005h 00006h 00007h 00008h 00009h 0000Ah 0000Bh 0000Ch 0000Dh 0000Eh 0000Fh 0h 1h 2h 3h 4h 5h 6h 7h 8h 9h Ah Bh Ch Dh Eh Fh 0 1 2 3 4 5 6 7 8 9 A B C D E F 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits 4 bits TOTALDE64KB SEGMENTOS 00000h 0h 0 16 bits 00001h 1h 1 16 bits 00002h 2h 2 16 bits 00003h 3h 3 16 bits 00004h 4h 4 16 bits 00005h 5h 5 16 bits 00006h 6h 6 16 bits 00007h 7h 7 16 bits 00008h 8h 8 16 bits 00009h 9h 9 16 bits 0000Ah Ah A 16 bits 0000Bh Bh B 16 bits 0000Ch Ch C 16 bits 0000Dh Dh D 16 bits 0000Eh Eh E 16 bits 0000Fh Fh F 16 bits
  • 68. Endereçamento de Memória ● Função primária: armazenar dados ● Formada por um grande conjunto de células de armazenamento ● Cada célula é formada por um conjunto de 8 bits ● Pode assumir 256 significados ● Cada célula tem um endereço absoluto de posição
  • 69. Endereçamento de Memória ● Cada posição é individual, tem um valor numérico que representa seu endereço ● Em um processador intel 8086 seu endereçamento máximo está na casa dos 640KB ● A região de memória vai de 0KB a 640KB ● Essa região toda está dividida em várias partes reservadas
  • 71. Endereçamento de Memória ● A área de memória livre para trabalho é menor que 640KB ● 1,5KB dos 640KB é reservado ● O espaço também é utilizado pelos arquivos de controle do sistema ● Informações temporárias dos programas BIOS e vídeo devem ser armazenadas em memória RAM (mesmo que eles estejam gravados em memória ROM)
  • 72. ASSEMBLY ● Denominações semelhantes: ● ASM86 ● X86 ● ASM8086 ● Todos os microprocessadores da família INTEL possuem basicamente o mesmo conjunto de instruções existentes no padrão do microprocessador 8086 e 8088
  • 73. ASSEMBLY ● Assembly 8086 possui 116 instruções (mnemonicos) diferentes destinadas ao controle do microprocessadores ● Os outros microprocessadores INTEL possuem novas, e mais, instruções a cada novo lançamento
  • 74. ASSEMBLY ● Seis grupos funcionais: ● Transferência de dados ● Aritméticas ● Manipulação de bits ● Manipulação de strings ● Controle de programa ● Controle do microprocessadores
  • 75. TRANSFERENCIA DE DADOS ● Instruções destinadas à movimentação de dados ● Podem ser movimentados: ● Entre registradores ● Entre registradores e posições de memória ● Entre registradores e unidades de entrada e saída
  • 76. ARITMÉTICAS ● Instruções destinadas aos cálculos matemáticos básicos: ● Adição ● Subtração ● Multiplicação ● Divisão
  • 77. MANIPULAÇÃO DE BITS ● Instruções que fazem o deslocamento de bits em um registrador ou posição de memória ● As funções de operações lógicas de conjunção (ou), disjunção (e) e negação são incluídas neste grupo
  • 78. MANIPULAÇÃO DE STRINGS ● Fazem o controle de grupos de sequencias de caracteres ● Comparação ● Análise ● Movimentação
  • 79. CONTROLE DE PROGRAMA ● Instruções que controlam a execução do código de programa ● Pode ser: ● Execução sequencial ● Com laços ● Sub-rotinas ● Subprogramas
  • 80. CONTROLE DE PROGRAMA ● Podem manipular as interrupções de um programa em execução ● A interrupção ocorre por vários motivos. Exemplo: ● Aceitar uma entrada de dados via teclado. ● É necessário fazer uma interrupção no programa, para que o dado possa ser digitado, e após aceitar o dado continua sua execução
  • 81. CONTROLE DE MICROPROCESSADOR ● Instruções que possibilitam o acesso dos registradores de controle do microprocessador com o objetivo de mudar seu estado de comportamento