![Page 1: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/1.jpg)
Arquitetura de ComputadoresNível da linguagem de montagem III
![Page 2: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/2.jpg)
Introdução básica a linguagem Assembly• Será apresentado nesta aula uma introdução ao
assembly do processador 8088.• Tal assembly é baseado no Microsoft MASM, porém
possui algumas modificações existentes no assembly utilizado nos SOs baseados no UNIX.
• Para podermos entender a sintaxe da linguagem, serão apresentados os seguintes aspectos do MASM:▫Organização da memória;▫Registradores acessíveis;▫Modos de endereçamento;▫ Instruções;▫Pseudo-instruções;
![Page 3: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/3.jpg)
Organização da memória•A memória do 8088 consiste apenas em um
vetor de bytes de 8 bits endereçáveis.•Essa memória é utilizada para
armazenamento de instruções, pilha e dados.•O 8088 separa a memória em 4 segmentos
de 65.536 bytes cada:▫Código;▫Dados;▫Pilha;▫Extra;
![Page 4: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/4.jpg)
Registradores
•Está disponível para o programador assembly o acesso a o seguinte grupo de registradores:▫Registradores gerais;▫Registradores de segmento;▫Registradores de ponteiro e índice;▫Registradores de flag.
![Page 5: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/5.jpg)
Registradores gerais
![Page 6: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/6.jpg)
Registradores gerais• AX
▫ Acumulador. ▫ Comumente usado em operações matemáticas e de E/S.
• BX ▫ Base. ▫ Comumente usado como uma base ou registrador
apontador.• CX
▫ Contador. ▫ Usado freqüentemente em loops.
• DX ▫ Deslocamento. ▫ Similar ao registrador de base.
![Page 7: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/7.jpg)
Registradores gerais• Estes registradores são definidos como registradores
de uso geral, pois podemos realmente armazenar qualquer coisa que quisermos neles.
• São também registradores de 16 bits, o que significa que podemos armazenar um inteiro positivo de 0 a 65535, ou um inteiro com sinal de -32768 to 32768.
• AX tem um intervalo de 0 até FFFF.• Isto significa que existe um intervalo de 0 até FF
para AH e AL. • Se tivermos de armazenar A61D em AX, AH conterá
A6, e AL conterá 1D.
![Page 8: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/8.jpg)
Registradores de segmento
![Page 9: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/9.jpg)
Registradores de segmento• CS
▫ Segmento de código. ▫ O bloco de memória onde o código é armazenado.
• DS ▫ Segmento de dados. ▫ A área na memória onde os dados são armazenados. ▫ Durante operações de bloco, quando grandes blocos de dados são
movidos, este é o segmento a que a CPU comumente se refere.• ES
▫ Segmento extra. ▫ Apenas outro segmento de dados, mas este é comumente usado
quando se quer acessar o vídeo.• SS
▫ É o segmento de pilha, em que a CPU armazena endereços de retorno de sub-rotinas.
![Page 10: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/10.jpg)
Registradores de ponteiro e índice
![Page 11: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/11.jpg)
Registradores de ponteiro e índice• SI
▫ Índice de fonte. ▫ Freqüentemente usado para movimentações de blocos de
instruções. ▫ Este é um ponteiro que, com um segmento, geralmente DS, é usado
pela CPU para leitura.• DI
▫ Índice de destino. ▫ Novamente, você o usará muito. ▫ Um outro ponteiro que, com um segmento, geralmente ES, é usado
para escrita pela CPU.• BP
▫ Apontador da base, usado em conjunto com o segmento de pilha. • SP
▫ Apontador da pilha, comumente usado com o segmento de pilha.
![Page 12: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/12.jpg)
Registradores de flags
![Page 13: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/13.jpg)
Registradores de flags• Funcionam como sinalizadores.• As flags são apenas um bit de memória e se localizam dentro do
processador.• Como cada flag é apenas um bit, num dado momento elas só
podem ser 1 ou 0 ("setada" ou "zerada"). • Existem seis flags usadas para indicar o resultado de certas
instruções.• Um uso comum das flags é o de desviar a execução para um ponto
em particular do código usando instruções de salto condicinal. • Estas instruções farão o salto ou não dependendo do estado de
uma ou mais flags. • Apenas cinco das flags podem ser usadas deste modo - zero, sinal,
carry, overflow e paridade. • A sexta flag (carry auxiliar) e a sétima flag (flag de direção) são
lidas por outro tipo de instrução.
![Page 14: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/14.jpg)
Registradores de flags
•SF - Flag de Sinal;•ZF - Flag de Zero;•AF - Flag Auxiliar;•PF - Flag de Paridade.•CF - Flag de Carry (vai um).
![Page 15: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/15.jpg)
Modos de endereçamento
![Page 16: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/16.jpg)
Modos de endereçamento
![Page 17: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/17.jpg)
Instruções
![Page 18: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/18.jpg)
Instruções
![Page 19: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/19.jpg)
Instruções
![Page 20: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/20.jpg)
Pseudo instruções
![Page 21: Arquitetura de Computadores Nível da linguagem de montagem III](https://reader035.vdocuments.pub/reader035/viewer/2022062300/552fc174497959413d8ef182/html5/thumbnails/21.jpg)
Rastreador