Arquitetura de Computadores: Assembly
-
Upload
elaine-cecilia-gatto -
Category
Education
-
view
1.941 -
download
0
description
Transcript of Arquitetura de Computadores: Assembly
![Page 1: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/1.jpg)
ASSEMBLYProf.ª Ms. Elaine Cecília GattoDisciplina: Arquitetura de ComputadoresCurso: Engenharia de Computação
![Page 2: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/2.jpg)
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.
![Page 3: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/3.jpg)
Introdução● MICROPROCESSADOR:
● É um circuito que possui a capacidade de executar diversos tipos de funções distintas;
● É usado em um computador.
![Page 4: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/4.jpg)
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;
![Page 5: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/5.jpg)
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!
![Page 6: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/6.jpg)
Introdução ● Compiladores disponíveis para a linguagem
Assembly:● MASM (microsoft)● MASM (ibm)● TASM (borland)● EMU8086 (http://www.emu8086.com/)
![Page 7: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/7.jpg)
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
![Page 8: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/8.jpg)
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;
![Page 9: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/9.jpg)
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;
![Page 10: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/10.jpg)
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
![Page 11: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/11.jpg)
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 1Nibble 0 (menos
significativo)
![Page 12: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/12.jpg)
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;
![Page 13: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/13.jpg)
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;
![Page 14: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/14.jpg)
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
![Page 15: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/15.jpg)
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
![Page 16: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/16.jpg)
RegistradoresREGISTRADORES 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)
![Page 17: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/17.jpg)
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
![Page 18: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/18.jpg)
Registradores● Esquema da estrutura interna de cada registrador geral
![Page 19: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/19.jpg)
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
![Page 20: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/20.jpg)
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
![Page 21: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/21.jpg)
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
![Page 22: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/22.jpg)
DX● DX (DH-DL): ● Operações aritméticas● Acessos de portas de entrada e saída● Algumas chamadas de interrupções
![Page 23: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/23.jpg)
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
![Page 24: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/24.jpg)
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
![Page 25: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/25.jpg)
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
![Page 26: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/26.jpg)
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
![Page 27: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/27.jpg)
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
![Page 28: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/28.jpg)
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 é
![Page 29: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/29.jpg)
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
![Page 30: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/30.jpg)
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
![Page 31: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/31.jpg)
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
![Page 32: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/32.jpg)
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
![Page 33: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/33.jpg)
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.
![Page 34: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/34.jpg)
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
![Page 35: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/35.jpg)
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
![Page 36: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/36.jpg)
Registrador de Estado● Flags utilizados para as tarefas de controle:
● TF = Trap Flag● IF = Interrput Flag● DF = Direction Flag
![Page 37: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/37.jpg)
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.
![Page 38: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/38.jpg)
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
![Page 39: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/39.jpg)
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
![Page 40: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/40.jpg)
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
![Page 41: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/41.jpg)
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
![Page 42: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/42.jpg)
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
![Page 43: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/43.jpg)
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
![Page 44: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/44.jpg)
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
![Page 45: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/45.jpg)
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
![Page 46: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/46.jpg)
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
![Page 47: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/47.jpg)
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
![Page 48: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/48.jpg)
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)
![Page 49: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/49.jpg)
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
![Page 50: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/50.jpg)
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
![Page 51: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/51.jpg)
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
![Page 52: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/52.jpg)
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
![Page 53: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/53.jpg)
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
![Page 54: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/54.jpg)
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
![Page 55: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/55.jpg)
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
![Page 56: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/56.jpg)
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
![Page 57: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/57.jpg)
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
![Page 58: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/58.jpg)
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
![Page 59: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/59.jpg)
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
![Page 60: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/60.jpg)
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
![Page 61: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/61.jpg)
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
![Page 62: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/62.jpg)
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
![Page 63: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/63.jpg)
SEGMENTOS E DESLOCAMENTOS
![Page 64: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/64.jpg)
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”
![Page 65: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/65.jpg)
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 SEGMENTOO que está no endereço 2h:Eh? Até onde se estende?
![Page 66: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/66.jpg)
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
![Page 67: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/67.jpg)
SEGMENTOS E DESLOCAMENTOS
EXEMPLO DE MEMÓRIA: TABELA DE DADOS
DESLOCAMENTOS00000
h00001
h00002
h00003
h00004
h00005
h00006
h00007
h00008
h00009
h0000A
h0000B
h0000C
h0000D
h0000E
h0000F
h0h 1h 2h 3h 4h 5h 6h 7h 8h 9h Ah Bh Ch Dh Eh Fh0 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
TOTAL
DE 64KB
SEG
MENTOS
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
![Page 68: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/68.jpg)
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
![Page 69: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/69.jpg)
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
![Page 70: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/70.jpg)
Endereçamento de Memória
![Page 71: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/71.jpg)
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)
![Page 72: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/72.jpg)
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
![Page 73: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/73.jpg)
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
![Page 74: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/74.jpg)
ASSEMBLY● Seis grupos funcionais:
● Transferência de dados● Aritméticas● Manipulação de bits● Manipulação de strings● Controle de programa● Controle do microprocessadores
![Page 75: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/75.jpg)
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
![Page 76: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/76.jpg)
ARITMÉTICAS● Instruções destinadas aos cálculos
matemáticos básicos:● Adição● Subtração● Multiplicação ● Divisão
![Page 77: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/77.jpg)
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
![Page 78: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/78.jpg)
MANIPULAÇÃO DE STRINGS● Fazem o controle de grupos de sequencias
de caracteres● Comparação● Análise● Movimentação
![Page 79: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/79.jpg)
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
![Page 80: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/80.jpg)
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
![Page 81: Arquitetura de Computadores: Assembly](https://reader036.fdocuments.net/reader036/viewer/2022081418/55760dd9d8b42a0d5e8b4aeb/html5/thumbnails/81.jpg)
CONTROLE DE MICROPROCESSADOR● Instruções que possibilitam o acesso dos
registradores de controle do microprocessador com o objetivo de mudar seu estado de comportamento