23
1 Arquitetura Von Neumann - notas de aula 05/08/2014 II - Modelo de arquitetura von Neumann (VNA- Von Neumann Architeture). II. 1 - O conceito de Programa armazenado na memória A Arquitetura de von Neumann (VNA -Von Neumann Architecture, desenvolvida por John von Neumann (Nascido em Budapeste, em 28/12/1903) e colaboradores é a base tecnológica de arquitetura de computadores. A construção do computador baseado neste modelo foi iniciada em 1946 e concluída em 1952 no IAS (Institute of Advanced Studies-Princeton/USA). O modelo VNA incorpora o conceito de programa armazenado na memória com as seguintes características: Um único controle centralizado (CPU única); Uma memória única para dados e instruções; As instruções devem fazer operações elementares sobre os dados. No modelo VNA, um programa para ser executado deve estar armazenado na memória do computador e as instruções devem ser levadas individualmente da memória para a CPU. Os componentes básicos da arquitetura VNA são: Unidade lógico–aritmética (ULA); Memória Principal (MP); Dispositivos de entrada/saída; Unidade de Controle para sincronizar o funcionamento dos componentes. A figura II.1 apresenta o diagrama básico da arquitetura de von Neumann. A ULA, Unidade Lógica e Aritmética, é o componente que realiza as operações aritméticas (+ - * /, ...) e lógicas (AND, OR, NOT, ... Acumulador (ACC) é uma memória de alguns bits (registrador) que armazena o resultado das operações realizadas pela ULA. A UC (Unidade de Controle) coordena a execução do programa em etapas chamadas de ciclos de execução que consistem em: (1) - Busca da instrução na memória (chamado de ciclo de busca); (2) – Interpretação e execução da instrução (ciclo de execução). Após a execução de cada instrução, a CPU inicia a busca na memória principal de uma nova instrução.

II - Modelo de arquitetura von Neumann (VNA- Von Neumann ... · A figura mostra um modelo de CPU Intel: arquitetura 80XX. ... A leitura de memória e o movimento de dados através

Embed Size (px)

Citation preview

1 Arquitetura Von Neumann - notas de aula 05/08/2014 II - Modelo de arquitetura von Neumann (VNA- Von Neumann Architeture).

II. 1 - O conceito de Programa armazenado na memória A Arquitetura de von Neumann (VNA -Von Neumann Architecture, desenvolvida por John von Neumann (Nascido em Budapeste, em 28/12/1903) e colaboradores é a base tecnológica de arquitetura de computadores. A construção do computador baseado neste modelo foi iniciada em 1946 e concluída em 1952 no IAS (Institute of Advanced Studies-Princeton/USA). O modelo VNA incorpora o conceito de programa armazenado na memória com as seguintes características:

● Um único controle centralizado (CPU única); ● Uma memória única para dados e instruções; ● As instruções devem fazer operações elementares sobre os dados.

No modelo VNA, um programa para ser executado deve estar armazenado na memória do computador e as instruções devem ser levadas individualmente da memória para a CPU. Os componentes básicos da arquitetura VNA são:

● Unidade lógico–aritmética (ULA); ● Memória Principal (MP); ● Dispositivos de entrada/saída; ● Unidade de Controle para sincronizar o funcionamento dos componentes.

A figura II.1 apresenta o diagrama básico da arquitetura de von Neumann. A ULA, Unidade Lógica e Aritmética, é o componente que realiza as operações aritméticas (+ - * /, ...) e lógicas (AND, OR, NOT, ... Acumulador (ACC) é uma memória de alguns bits (registrador) que armazena o resultado das operações realizadas pela ULA. A UC (Unidade de Controle) coordena a execução do programa em etapas chamadas de ciclos de execução que consistem em: (1) - Busca da instrução na memória (chamado de ciclo de busca); (2) – Interpretação e execução da instrução (ciclo de execução). Após a execução de cada instrução, a CPU inicia a busca na memória principal de uma nova instrução.

2 Arquitetura Von Neumann - notas de aula 05/08/2014 A MP ALEM DE TER ARMAZENADO O PROGRAMA EM EXECUÇÃO, também recebe, armazena e fornece dados do processamento assim como pode fornecer e receber dados de outras unidades de entrada e saída (impressora, teclado) Questões atuais:

● Os computadores pessoais atuais têm apenas uma unidade de CPU? ● As memórias de dados e programas podem estar em unidades físicas independentes?

RESUMO 1. Na arquitetura VNA, as ações computacionais ocorrem na CPU; 2. Instruções e dados ficam armazenados na memória principal até que sejam requeridas pela CPU; 3. Dispositivos de E/S são tratados como se fossem memórias. A CPU pode armazenar ou ler dados em dispositivos de entrada ou de saída de modo análogo ao acesso à memória.

3 Arquitetura Von Neumann - notas de aula 05/08/2014 II. 1.1 - Modelo preliminar de um sistema computadorizado Os computadores atuais incorporam novos conceitos e tecnologias para melhorar o desempenho da arquitetura Von Neumann: mais velocidade e novos métodos de operação (memória cache, pipeline). A figura II. 2 mostra um diagrama simplificado de arquitetura que inclui o conceito de memória cache. II. 2.2 – A memória cache.

No modelo VNA, após realizar cada instrução, a CPU busca nova instrução na memória principal (MP); Por questões de tecnologia e custos, a MP não consegue atender rapidamente esta solicitação. A CPU fica em estado de espera (wait state) até a chegada de uma nova instrução; A memória cache é de menor quantidade que a MP, porém com tecnologia de processamento próxima à CPU para atender às solicitações com rapidez. A capacidade de memória cache varia desde KiloBytes (KB) até MegaBytes (MB). Servidores possuem memórias cache de alguns MB. Exemplo, ZEON da Intel. Exercício. Pesquise na internet as características tecnológicas de servidores: https://www.intel.com.br/content/www/br/pt/products/processors/xeon/e7-processors.html

4 Arquitetura Von Neumann - notas de aula 05/08/2014 II. 2.3 – O modelo da CPU (Unidade Central de Processamento) INTEL. As operações básicas das CPU consistem em mover e transformar dados binários, via operações lógicas e aritméticas. A figura mostra um modelo de CPU Intel: arquitetura 80XX. Nota: Um programa é a codificação em linguagem computacional de um algoritmo para resolver um problema específico. Exemplo de operação aritmética realizada pela CPU: A soma entre dois valores binários. Seja a soma dos valores 1234H (0001 0010 0011 0100B) + 1022H (0001 0000 0010 0010B). As letras H e B, indicam valores em Hexadecimal e Binário, respectivamente. Cada um dos valores considerados é denominado de operando e o resultado é denominado de Soma. Sequência de operações para realizar operações de soma. O debug (depurador). Acione o programa command. Execute o programa debug.

Conceitos. Prompt de comando: Operação em modo texto:

5 Arquitetura Von Neumann - notas de aula 05/08/2014 Que são estes conceitos? Inicialmente, haverá na memória um programa com as instruções (binário) que serão interpretadas pela Unidade de Controle para realizar as ações da CPU. Estas ações podem ser somar o conteúdo de alguns registradores que receberam em seus operandos os valores para operação. Para realizar a soma a instrução em assembly ADD AX, BX instrui a CPU a somar o conteúdo de AX + BX e guardar o resultado em AX. NOTA: Assembly significa linguagem de montagem. ADD é um MNEMONICO que representa SOMA. Esta instrução tem a seguinte simbologia: AX ← AX + BX. O conteúdo do Registrador AX é somado com o conteúdo do registrador BX. O resultado é armazenado em AX. O conteúdo original de AX é substituído pelo resultado da soma. Exemplo. O registrador AX contem 1234H; o registrador BX contem 1022H. Estes valores são transferidos pelos barramentos internos da CPU para as entradas da ULA que deverá ser instruída a realizar a SOMA destes valores. O resultado deverá ser armazenado em AX. Estas operações são denominadas micro-instruções e as regras desta operação foram definidas durante o projeto da CPU. Após a operação SOMA (ADD), o registrador AX recebe o resultado da soma (1234H + 1022H= 2256H). O conteúdo anterior de AX (1234H) é perdido. O valor em BX permanece inalterado.

6 Arquitetura Von Neumann - notas de aula 05/08/2014 Exercícios: Sendo AX = 0101H, BX=F0F0, CX=1234H e DX=ABCD, efetue as seguintes operações e apresente os resultados: a) ADD AX, BX AX= BX= b) SUB DX,AXDX= AX c) AND DX,AXDX= AX= d) OR CX,BX CX= FX= XOR AX,BX AX= BX= e) MOV AX, DX AX= DX= Nota: Uma operação muito importante em redes de computadores é o de identificação de redes. Sejam quatro grupos contendo cada um deles 3 valores em base decimal: 192.168.2.32 e 255.255.255.0. A operação AND entre estes valores é usada para identificar a rede. Exercício: Qual o resultado da operação AND entre os valores acima. Faça a operação em grupos de elementos em binário.

7 Arquitetura Von Neumann - notas de aula 05/08/2014 II.2.4.b – A leitura de memória e o movimento de dados através de barramentos A figura 2 exemplifica o processo de leitura de memória/movimento de dados pelos barramentos. CPU Memória (RAM) CPU

Figura 2 - Operação de leitura de memória do conteúdo na posição de endereço 0100H. As setas indicam a direção do movimento de dados, endereço e sinais de controle. Como é identificada um dado na memória? Pelo endereço do dado na memória: Na leitura, o endereço 0100H é colocado no barramento de endereços. A CPU “avisa” que vai executar leitura enviando um sinal Read pelo barramento de controle. A seguir, a memória disponibiliza (Enable) os dados contidos no endereço 0100H e a CPU pode receber os dados em seus registros internos. Um processo similar ao da leitura (e escrita) da memória é usado para realizar a comunicação da CPU com dispositivos externos

8 Arquitetura Von Neumann - notas de aula 05/08/2014 II. 2.4 c - Quantidade de informação disponibilizada pelo barramento de endereços Sob o ponto de vista lógico a memória é uma lista linear de bytes. O endereço do primeiro byte é zero e o endereço do último byte é: 2n-1. Onde n é o numero de linhas (tamanho) do barramento de endereços. O tamanho máximo de memória de um computador é definido pelo número de linhas do barramento (tamanho) de endereços. Um barramento de endereços com n linhas de comunicação pode endereçar 2n posições de memória. Um sistema computadorizado com barramento de endereço de 16 bits pode endereçar 65536 (216) posições de memória que tem como endereço inicial 0000 e endereço final 65535. Exemplo O 8088 e 8086 são processadores com barramento de endereços de 20 bits. Portanto, podem acessar até 1.048.576 (1Mega ou 220) posições de memória. O barramento de endereços determina o limite físico da memória (RAM) de um sistema computacional. Atualmente os barramentos de endereço tem acima de 32 -- bits, que lhes permitem acessar 232 posições: 4 Giga endereços de memória ou mais. Tamanho dos barramentos de alguns computadores pessoais: = 2n = dois elevado a n (n=tamanho do barramento) 8088 20bits 220 = 1 1048.576 Um Mega 80286, 80386sx 24 224 =16.777.246 Dezesseis Mega 80486, Pentium I 32 232 = 4.294.976.296 Quatro Giga Nota. Existem valores bem conhecidos para potencias de 2:

210 = 1 024 Um Kilo - 1K 220 = 1 1048.576 Um Mega - 1M 230 = 1 073 741 824 Um Giga - 1G Valores para potencias de 2 podem ser obtidos pela propriedade matemática: 2n . 2m = 2n+m

Exemplo: 232 = 22 . 230 = 4 . Giga Exercícios. Calcule as seguintes capacidades de memória: a) 222 = b) 216 = c) 234 = d) 225 =

9 Arquitetura Von Neumann - notas de aula 05/08/2014 II. 2.4.d - O Barramento de Controle (não visível ao usuário). O barramento de controle possui os sinais eletrônicos que coordenam a comunicação entre componentes do sistema para envio/recebimento de dados. Pelo barramento de controle seguem informações de status ( a "A CPU está enviando ou recebendo dados": protocolo de comunicação), ou informações do estado de um dispositivo (ligado, desligado, em espera...). Contêm sinais de

alimentação, clock e muitos outros que dependem do processo em execução e do dispositivo. II.3 - Execução de uma instrução. Exemplo. Conforme o projeto VNA (Arquitetura de von Neumann), um programa em execução deve estar carregado na memória (RAM). Este exemplo mostra a execução de uma instrução de soma: Forma mnemônica ADD AX,BX Somar o conteúdo dos registradores AX e BX e armazenar o resultado em AX. A forma mnemônica é melhor compreendida pelos programadores em assembly. Esta instrução será traduzida por um programa Assembler (montador) que produzirá um formato entendido pela CPU: Linguagem de máquina ou linguagem de baixo nível. A instrução assembly ADD AX,BX tem o código de máquina correspondente 01D8H. Para executar a instrução ADD AX,BX, a instrução 01D8H deverá ser armazenada na memória em um endereço “apontado” pelo ponteiro de instruções (IP – Instruction Pointer). O IP é um registrador que contém o endereço da próxima instrução a ser executada pela CPU. O conteúdo do IP deverá ser transferido para o barramento de endereços. A memória é instruída a receber este valor para buscar o conteúdo da posição da memória 0100H. A memória devolver pelo barramento de dados o valor 01D8H. A CPU recebe este valor e através da UC interpreta este valor e desenvolve as ações para a ULA realizar a operação requerida (ADD AX, BX). Figura II.7 – Movimento de dados na execução da instrução ADD AX, BX.

10 Arquitetura Von Neumann - notas de aula 05/08/2014 Exercícios

1 – Considere uma CPU Intel 80xx. Responda a) Qual a instrução assembly para realizar a subtração de dois valores que estejam em BX e AX?;

Resp. SUB BX,AX Qual é a instrução de máquina?

b) Qual a instrução assembly para realizar a soma entre valores que estejam em CX e DX?

Resp. ADD CX,DX c) Qual a instrução assembly para realizar a subtração entre valores que estejam em CX e DX. Resp. SUB CX,DX d) Obtenha os códigos correspondentes em linguagem de máquina PARA AS SEGUINTES INSTRUÇÕES. ADD AX, BX. Resp:01D8 ADD BX,AX. Resp: 01C3 SUB AX,BX. Resp: 29D8 SUB BX AX. Resp: 29 C3

11 Arquitetura Von Neumann - notas de aula 05/08/2014 Exercícios.

2 – Considere um computador operando em modo DOS esteja operando com o DEBUG. Responda: a) Como carregar os registradores com os valores: AX ← 1012 BX ← 4572 CX ← 4712. (USE MOV) b) Como executar a soma 1012 + 4712, após realizar o item a. (USE ADD).

12 Arquitetura Von Neumann - notas de aula 05/08/2014 II.3 –Histórico da evolução dos computadores e a tecnologia atual.

13 Arquitetura Von Neumann - notas de aula 05/08/2014 Exercícios – 1. Considerar uma CPU 80XX com os valores os iniciais nos registradores (em hexadecimal). AX=0FF1 BX=123A CX= 0AB0 DX= 0110 IP:0100 Qual será o valor dos registradores após a realização das seguintes instruções: A) - ADD BX,AX AX= BX= B) - OR CX, AX AX= CX= C) – XOR AX, DX AX= DX= D) – SUB AX,CX AX= CX= E) - MOV CX, DX CX= DX= 2. O diagrama representa a arquitetura 80XX e a conexão via barramentos da CPU com a memória. Considere que o comando R do DEBUG mostrou o seguinte resultado: AX=0ABC BX=0357 CX=0FFF DX=01AB SP=FFEE BP=0000 SI=0000 DI=0000 DS= 0CA0 ES=0CA0 SS= 0CA0 CS=0CAO IP=0100 NV UP EI PL NZ NA PO NC 0CA0:0100 29C3 SUB BX,AX A) Complete no diagrama os valores dados nos locais assinalados em negrito.

14 Arquitetura Von Neumann - notas de aula 05/08/2014 B) Foi dado o comando T. Complete no diagrama os valores dados nos locais assinalados em negrito. 4 - Assinale V ou F ( ) As memória cache em nível 1 são internas à CPU Indique o valor de x nas seguintes expressões. B= Byte; b=bit; K=1024; M = 1K vezes 1K; 1G = 1M vezes 1K a) 524288b = x Kb x=______________ b) 196608K = xM _____________________ c) 256KB = xb x=____________________ d) 8GB = xb x=_____________________ Escreva os seis endereços posteriores de 2B12H. Escreva os seis endereços anteriores a 2B12H: Considere uma memória de 1024KB (1024 posições e em cada posição existe 1 Byte). Responda: a ) Qual é o maior endereço desta memória em decimal. b) Qual é o tamanho do barramento de dados? c) Qual é o tamanho do barramento de endereços?

15 Arquitetura Von Neumann - notas de aula 05/08/2014 Anexo 1. História da Arquitetura Intel: programas criados a partir de 1978 e evoluções O 8086 tem registradores de 16 bits e um barramento externo de 16 bits, com de endereço de memória de 20 bits (Um Megabyte de memória principal). O 8088 (idêntico ao 8086) possui um barramento de dados externo de 8 bits, e agrega o conceito de segmentação de memória: Um registrador de segmento de 16 bits contêm um apontador para um segmento de memória de até 64 Kb. Usando 4 registradores de segmentos o 8086/8088 é capaz de endereçar até 256 Kb, sem efetuar a troca de segmentos. O Intel 286 introduziu a operação em modo protegido. Um registrador de segmento contém um seletor ou apontador que disponibiliza endereçamento de base de 24 bits, permitindo que a memória física se estenda até 16 MB. Oferece suporte para o gerenciamento de memória virtual e mecanismos de proteção de memória. Além disso, oferece recursos de hardware que permitem ao sistema operacional proteger as aplicações de um usuário entre si. O processador Intel 386 foi o primeiro processador de 32 bits da família Intel. Contém registradores de 32 bits para a manipulação de operando e endereçamento. A memória baixa de cada registrador manteve as propriedades de 16 bits das gerações. Um novo modo virtual do 8086 foi implementado para aumentar a eficiência na execução de instruções criadas para o 8086/88. O barramento de endereços de 32 bits, permite até 4 GB de memória física. Introduziu o conceito de paginação (páginas de 4 Kb) no uso do gerenciamento de memória virtual, o que permitiu mais eficiência aos sistemas operacionais. Foi projetada para suportar a compatibilidade retroativa em nível de código objeto. Este processador foi o primeiro da família Intel a incluir 6 estágios de pipeline: O processador Intel 486 adicionou mais capacidade de execução em paralelo, expandindo as unidades de execução e decodificação de instruções do 386 em cinco estágios de pipeline. Um cache de 8 Kb foi implementado em um chip para aumentar a taxa de execução. Houve a integração do coprocessador x87 no chipset, e suporte a conservação e gerenciamento de energia e outras capacidades para notebooks. O processador Pentium adicionou um segundo caminho de pipeline para execução superescalar (pipelines, conhecidos como " u" e "v"). O cache de primeiro nível (L1) teve o seu tamanho dobrado, com 8 KB dedicados para codificar e os outros 8KB voltados para dados. Os registradores principais são todos de 32 bits, mas os caminhos internos usam 128 e 256 bits, aumentando a taxa de transferência interna de dados. O Intel Pentium 4 opera em velocidades maiores de clock com as seguintes características:

Streaming SIMD Extensions 2 (extensão da tecnologia MMX com 144 novas instruções); Suporte a operações de inteiros e ponto flutuante com 128 bits; Recursos para acelerar o processamento de vídeo, voz, encriptação de dados e processamento de imagem e fotos digitais. Throughput 3.2 GB por segundo (3 vezes mais rápido que o Pentium III) Compatibilidade retroativa com aplicações da família Intel de processadores (32 bits).

16 Arquitetura Von Neumann - notas de aula 05/08/2014 Anexo 2. Arquitetura AMD

Características da arquitetura do AMD Athlon 64. Inovações e recursos da plataforma O processador AMD Athlon 64 (tecnologia AMD64) permite a execução de aplicativos de 32 bits sem necessidade de emulação e incluiu a tecnologia de conexão ponto-a-ponto com periféricos denominada HyperTransport. Controladora de memória integrada ao processador que substitui o FSB (Front Side Bus). Modos de operação A controladora de memória está integrada ao processador (não no chipset da placa-mã) e não existe o FSB (Front Side Bus). As memórias se conectam diretamente a controladora de memória integrada na mesma frequência do processador. A tecnologia HyperTransport é uma conexão ponto a ponto, projetada para aumentar a velocidade da comunicação entre os circuitos integrados periféricos. Os dados são transmitidos em pacotes, de forma similar a um protocolo de rede, usando tecnologia DDR (Double Data Rate) transmitindo dois bits de dados por cada ciclo de clock.

17 Arquitetura Von Neumann - notas de aula 05/08/2014

Outros recursos arquitetônicos do processador Os Registradores de Uso Geral ou GPR (General Purpose Registers) tem capacidade de armazenar números de até 64 bits (2 elevado a 64). Além disso, permite endereçar até 1 Terabyte de memória física e 256 Terabytes de memória virtual. O núcleo o Athlon 64 é um processador superescalar de 9 vias (9 instruções simultâneas) agrupadas em 3 unidades ULAs, 3 Unidades de Geração de Endereços(AGU’s: Adress-Generation Units) e 3 Unidades de Cálculo de Ponto-Flutuante (FPU’s: Floating Point Units).

18 Arquitetura Von Neumann - notas de aula 05/08/2014

Apêndice 3. Introdução ao debug O DEBUG (depurador) é um programa para editar/executar programas em ambiente controlado pelo SO, através de instruções em assembly (montagem). Atua diretamente nos registradores da CPU, na memória e dispositivos de entrada e saída. Pode também usar as rotinas do sistema operacional DOS através das rotinas INT x. O depurador opera através de comandos representados por letras. 1 - Para entrar no DEBUG: Digite debug <enter>.

- <== este é o “prompt” do DEBUG. Para sair do DEBUG: Digite q <enter> <== Este comando é derivado de QUIT. Para acesar o HELP, digite ?. 1 - HEXA-ARITMETICA: Um comando do DEBUG permite somar e subtrair dois números em hexadecimal. Exemplo: -H 3 2 <enter> <= deixe um espaço separando os parâmetros do comando. A resposta será: 0005 0001 ← Resultado apresentado. Exercícios. EFETUE:

-H 2 3 <enter> -H 2 4 <enter> -H 2 5 <enter> -H 12345 1234 <enter>

2 - Registradores como variáveis. Os registradores da CPU podem ser utilizados para armazenar as variáveis que serão utilizadas em operações lógicas, de movimento de dados, de controle, de loop, etc. Para visualizar e alterar os registradores digite -R <enter> AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS =1670 ES=1670 SS =1670 CS=1670 IP= 0100 NP UV EIPL NX NA PO NC 1670:0100 03F1 ADD SI,CX Os valores apresentados representam os registradores da CPU 8088 e os FLAGS, que são sinalizações resultantes de operações lógicas e aritméticas. A terceira linha apresenta a instrução corrente e o endereço na memória onde está esta instrução. Para alterar/visualizar o conteúdo de um registrador específico digite: -R AX <enter> <== permite visualizar/alterar o conteúdo do registrador AX. Ax 0000 : ← espera para receber um novo valor para AX. Exercício. Altere os valores dos registradores AX, Bx, CX e DX, para os valores: 1,2,3 e 4.

19 Arquitetura Von Neumann - notas de aula 05/08/2014 3 – A memória. A memória do sistema é montada em blocos de 64KB chamados de SEGMENTOS. As informações (dados e programas) são alocados na memória a partir do endereço 0000:0000. A primeira sequência representa segmento inicial 0000 e a sequência seguinte representa um deslocamento (OFFSET) no segmento 0000 Modificações em conteúdo da memória RAM. A memória RAM pode ser acessada e alterada pelo DEBUG. DIGITE: -E SEGMENTO:OFFSET OU

- E OFFSET. Exemplo: - -E100 <enter>

O DEBUG define automaticamente os SEGMENTOS de código (CS: CODE SEGMENT), dados (DS:DATA SEGMENT), etc. para operação na sessão de trabalho. O usuário pode alterar estes segmentos através do comando R. OS ENDEREÇOS SEGMENTOS DA MEMÓRIA (área de 64KB de memória) podem ser acessados pela definição de um valor SEGMENTO: OFFSET. Exemplos: -E100 ← permite alterar o endereço de deslocamento 0100 no segmento definido pelo DEBUG. Exercício. Digite: -E B800:001A <enter> B800:001A 30 <espaço> 30 <espaço> 31 <espaço> 31 <enter>. Explique o que acontece. 4 - Execução de um programa. UM PROGRAMA PREVIAMENTE CARREGADO NA MEMÓRIA RAM PODE SER EXECUTADO PELO DEBUG. Seja o exemplo a seguir. Escreva na posição de memória 0100 a seguinte sequência hexadecimal:

-e100 <enter> 01 <espaço> d8 <enter> <== código de máquina para executar [AX} <== [AX] + [BX]

DIGITE: R <enter> <=para visualizar os registradores e a memória AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS =1670 ES=1670 SS =1670 CS=1670 IP= 0100 NP UV EI PL NX NA PO NC 1670:0100 01D8 ADD AX,BX <== 01D8 é o código de máquina para a soma AX+BX A seguir FAÇA COM QUE O REGISTRO IP APONTE PARA O ENDEREÇO DA INSTRUÇÃO. DIGITE: -R IP <enter> e altere o IP para 0100. Para executar uma instrução do pelo DEBUG, digite: -T <enter> == T significa =trace

20 Arquitetura Von Neumann - notas de aula 05/08/2014 Linhas sucessivas são executadas pressionando T sucessivamente.

21 Arquitetura Von Neumann - notas de aula 05/08/2014 Exercício: Somar CAFE + FAFA. Solução.

● Carregue AX com CAFE. Comando -R AX <enter>

● Carregue BX com FAFA.

Comando -R BX <enter>

● Armazene a instrução ADD AX, BX na memória RAM. Comando E 0100 <enter> -01 <espaço> D8 <enter>.

● Altere o IP para 0100. Comando R IP <enter> 0100 <enter>.

● Certifique-se que tudo está correto.

Digite -R<enter>. Analise os dados.

● Para executar a instrução:-T<enter>. Exercícios: Executar as operações a seguir. São dados os códigos assembly. 01D8 ADD AX,BX [AX] <== [AX] + [BX] 29D8 SUB AX,BX [AX] <== [AX] - [BX] Exercício: Usando o DEBUG criar/executar as operações correspondentes: a) 1234 +8765. b) 1234 - 8765

22 Arquitetura Von Neumann - notas de aula 05/08/2014 5 - Saída de dados. INT x. Rotinas do Sistema Operacional A saída de dados dos programas que estão na memória ou em registradores pode ser feita via ROTINAS do sistemas operacional ativadas por meio de INTERRUPÇÕES DE SOFTARE ==> INT X, onde X é um número HEXADECIMAL. Grande número de rotinas do sistema operacional são ativadas pela interrupção INT 21h. A seleção da rotina é feita por um valor armazenado no registrador AH. Como os registradores são definidos na CPU 80XX. Os registradores AX, BX, CX e DX são vistos como duas porções: High (alta) e Low (baixa): Exemplo: AX = AH + AL. Os registradores podem ser alterados via instrução MOV. Exemplos:

MOV AX, BX <=move o conteúdo de BX para AX. MOV AX,32 <=move o valor 32 para o registro AX. MOV AL,32 <=move o valor 32 para a parte alta do registro AX.

Imprimir um caractere ASCII. Colocamos o valor binário correspondente ao caractere no registro DL, o valor 02 em AL e a seguir a instrução INT 21H. Incluir a instrução INT 20H para o programa encerrar-se normalmente. MOV AL, 02 MOV DL, 2A INT 21 INT 20 O COMANDO ASSEMBLY O comando -A(ssembly) permite o recebimento de instruções por meio de mnemônicos. DIGITE:

-a100 <enter> MOV AH,02 <enter> <== IMPRIME NA TELA MOV DL,30<enter> <<== 30 REPRESENTAÇÃO ASCII de 0 (ZERO) INT 21 <enter> INT 20 <enter>

Para executar digite –G<enter>. O comando G(o) executa um programa a partir do endereço IP, até o seu encerramento normal via INT 20. Pergunta: O que faz o programa?

23 Arquitetura Von Neumann - notas de aula 05/08/2014 IMPRESSÃO DE “STRING”. Função 09 da INT 21. Digite o programa (comando Assembly. –A 100<enter>). MOV AH,09 ; Função 9. Imprime string MOV DX,0200 ; DX é um ponteiro para a área de dados INT 21 INT 20 Armazene os seguintes bytes a partir do deslocamento 0200. Comando -E0200<enter>. 44 4F 53 24 ; Estes valores correspondem ao texto ASCII: DOS$. O símbolo $ é um indicador de final de string. Execute o programa. Comando –G<enter>. O que faz o programa? Execute o comando: -D200<enter>. O comando D(ump) apresenta um Dumping de memória ?