Apostila Assembly UFRN
88 pág.

Apostila Assembly UFRN


DisciplinaAnálise Textual9.581 materiais293.983 seguidores
Pré-visualização26 páginas
Para cada dígito decimal existe um nibble (quarteto) correspondente em BCD. 
 
 Operações BCD são realizadas como operações com números binários. Entretanto, é 
necessário fazer um ajuste no resultado para que o valor seja um BCD válido. Portanto, uma 
soma BCD nada mais é que uma soma binária com um ajuste. O ajuste é feito adicionando-se 
610 = 01102 ao nibble cuja representação binária seja superior a 910. 
 
Exemplo: 4910 + 2110= 0100 1001BCD + 0010 0001BCD = 0110 1010 
 
Ajuste: 
+ 
0110 10102 
0000 01102 
 0111 0000BCD 
 
 
Após o ajuste, o resultado da soma é: 
0111 0000BCD = 7010 \uf0fc 
 
Tabela 3 Equivalência entre os sistemas numéricos 
Valor 
Binário 
Dígito 
Hexadecimal 
Valor 
Decimal 
Dígito 
BCD 
0000 
0001 
0010 
0011 
0100 
0101 
0110 
0111 
1000 
1001 
1010 
1011 
1100 
1101 
1110 
1111 
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
A 
B 
C 
D 
E 
F 
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
\uf0be 
\uf0be 
\uf0be 
\uf0be 
\uf0be 
 
 
Valores sinalizados: Um byte pode armazenar 256 valores diferentes (00h a FFh), atribuindo a 
cada combinação um valor decimal positivo (010 a +25510). Para armazenar na memória valores 
positivos e negativos (-12810 a +12710), o bit mais significativo de um byte é utilizado para indicar o 
sinal: 0 para positivo e 1 para negativo em complemento de 2 (ou seja, -B = Complemento de 2(B)). 
O complemento de 2 consiste em duas operações: realização do complemento de 1 (negação bit a 
bit) e adição com 1. 
 
Exemplo: A = 1210 = 0000 11002 
 -A = C2(A) = C1(A) +1 = 1111 01002 
 
 Internamente, os computadores não realizam operações de subtração. A subtração (A\u2013B) 
é feita através da soma (A+(-B) = A+Complemento de 2(B)). 
 
 Sistema de Memória de Computadores 
© Anna Catharina/CEFET-RN/2000 19 
Exemplo: A = 710 e B = 810. Calcular, por complemento de 2, o valor C = A \u2013 B. 
 
A = 0000 01112 e B = 0000 10002 
Operação 1 \uf0ae C1(B): 1111 01112 
Operação 2 \uf0ae adição com 1 (1+0=1, 1+1=0 vai 1): 
 
+ 
1111 0111 
0000 0001 
 
 1111 1000 = C2(B) 
 
Adição (A + C2(B)): 
 
+ 
0000 0111 
1111 1000 
 1111 1111 
Logo, A \u2013 B = 1111 11112. 
Note que o dado sinalizado é armazenado na memória da mesma forma que um não sinalizado. Para saber 
quanto vale o número, é só refazer o complemento de dois, uma vez que [-(-B)=B]. Dessa forma, teríamos: 
 
+ 
0000 0000 
0000 0001 
 0000 0001 
 
Portanto, 1111 11112 = -1. 
 
3.2 Organização da Memória Principal 
3.2.1 Organização Modular da Memória 
 
 A memória é freqüentemente separada em módulos com funcionalidade independente 
como forma de aumentar a velocidade e a confiabilidade, e flexibilizar possíveis mudanças de 
tamanho. Existem duas formas de organização modular: high-order interleave e low-order interleave. 
 
High-order interleave: sucessivos endereços de memória presentes no mesmo módulo (Figura 
13). O aumento do desempenho resulta da probabilidade de instruções, tabelas de referências e 
dados residirem em módulos diferentes. Esta separação pode ser forçada pelo sistema 
operacional. Caso isto venha a ocorrer, existe pouca probalidade de uma referência à memória 
por uma instrução ter de esperar pelo término de uma referência à uma tabela ou a um dado. 
 
0
2
n
-1
2
n
2
2n
-1
2
2n
2
3n
-1
2
3n
2
4n
-1
M 0 M 1 M 2 M 3
 
Figura 13 Organização high-order interleave 
 
Low-order interleave: endereços sucessivos alocados em módulos diferentes (Figura 14). 
Oferece vantagem quanto à localidade de programas e dados. Neste método, um dado ou uma 
instrução tende a estar na localidade de memória mais próxima do último item de dado ou 
instrução buscado. Existe também a possibilidade de um fluxo de palavra poder ser transferido 
ao processador a uma velocidade maior que aquela organizada em endereços sucessivos. 
 
 Sistema de Memória de Computadores 
© Anna Catharina/CEFET-RN/2000 20 
0
2
4n
-4
1
2
4n
-3
2
2
4n
-2
3
2
4n
-1
M 0 M 1 M 2 M 3
 
Figura 14 Organização low-order interleave 
 
 É difícil fazer um julgamento sobre qual forma de organizações é melhor. A organização 
high-order interleave certamente produz alta confiabilidade ao sistema, uma vez que o 
processamento pode continuar quando um módulo não está operando, principalmente nos casos 
em que um conteúdo pode ser recuperado da memória secundária e realocado em outro módulo. 
 
 Considerando as duas formas, é mais importante que se incorpore uma organização de 
memória compatível com a estrutura do restante do sistema do computador e com a organização 
do processador. Com isso, a memória passa a acomodar as características do resto do sistema. 
 
 Uma unidade de gerência de memória (MMU) é utilizada para fazer o endereçamento ou 
acesso à memória. A MMU é um processador especial usado particularmente para coordenar 
transferências de bytes, words e doublewords. Isto também facilita o projeto de diferentes 
computadores usando microprocessador e memórias padrões. Funções típicas de uma MMU 
incluem: controle de endereçamento por segmento e página, separação do espaço do usuário e do 
sistema e suporte de hardware para proteção de memória. 
 
3.2.2 Organização Lógica 
 
 Vamos considerar um processador com barramento de endereço de 32 bits, o que 
possibilita o acesso a 4 Gbytes (232) posições de memória. Essa capacidade de endereçamento, 
entretanto, só é possível quando o microprocessador está trabalhando no modo protegido. No 
modo real, apenas 20 bits de endereçamento são utilizados e, consequentemente, a capacidade de 
endereçamento diminui para 1 Mbyte (220), semelhante ao processador proposto para análise. 
 
Memória Convencional: até 640 kbytes. 
 
Memória Superior: região de memória entre 640 kbytes e 1 Mbyte, que abriga a memória de 
vídeo, a UMB e a EMS Page Frame. 
 
Blocos de Memória Superior (UMB): armazenamento de programas residentes e drivers que 
estariam na memória convencional. Localização: de 800 a 896 kbytes da memória superior. 
 
EMS Page Frame: bloco de 64 kbytes da memória superior, através do qual é feito o 
chaveamento de bancos da memória EMS. Configuração: 4 páginas de 16 kbytes = 64 kbytes. 
Localização: 896 a 960 kbytes da memória superior. 
 
Memória Alta (HMA): utilizada para armazenar partes do núcleo do sistema operacional DOS, 
que poderiam ocupar espaço na memória convencional ou na memória superior. 
 
Memória Estendida (XMS): memória acessível apenas em modo protegido, localizada a partir 
de 1 Mbyte, abrigando a memória HMA e a memória expandida. 
 
 Sistema de Memória de Computadores 
© Anna Catharina/CEFET-RN/2000 21 
Memória Expandida (EMS): fornece acesso superior a 1 Mbyte de memória em modo real, 
independente da capacidade de endereçamento do processador. Localização: placas de expansão 
EMS (XT e 286), ou final da memória estendida (386 ou superior). Utilização de recursos (drivers) 
de gerência de memória que permitem a função de chaveamento de bancos sem necessidade de 
hardware adicional (EMM386.EXE e HIMEM.SYS). Total de memória: 64 blocos (frames) de 
16 kbytes = 1 Mbyte. Apenas 4 blocos de 16 kbytes podem ser acessados a cada instante. Apesar 
de não poder armazenar programas a serem executados, possibilita o armazenamento dos dados 
utilizados pelos programas. 
 
C onvencional E stendida (X M S)
0 640k 1M ????
U M B
Expandida (EM S)
EM S Page Fram e
Superior
H M A
 
Figura 15 Organização da memória principal 
 
3.2.3 Organização Física 
 
 O espaço de endereçamento de memória é visto como um conjunto de