Assembly. Prof. Jorge Cavalcanti. Prof. Sérgio Faustino.
|
|
- Felícia Leal Freire
- 7 Há anos
- Visualizações:
Transcrição
1 F A C A P E FACULDADE DE CIÊNCIAS APLICADAS E SOCIAIS DE PETROLINA CIÊNCIA DA COMPUTAÇÃO Assembly MANUAL DE REFERÊNCIA Prof. Jorge Cavalcanti jorge.cavalcanti@uol.com.br Prof. Sérgio Faustino sergiofaustino@hotmail.com Laboratório de Arquitetura de Computadores
2 1. INTRODUÇÃO Este manual objetiva abordar superficialmente diversos tópicos relacionados ao conjunto de instruções dos microprocessadores 8086/88. É o suporte necessário aos diversos experimentos que são realizados utilizando o SID como depurador assembly. Inicialmente é apresentada uma rápida revisão sobre sistemas de numeração e suas conversões, depois são feitos comentários sobre os microprocessadores apresentando a arquitetura do 8086/88. A partir de então são descritos os diversos registradores e flags utilizados pelo microprocessador, e finalmente são apresentadas as principais instruções assembly utilizadas nos experimentos com suas funções. No final são mostrados pequenos programas exemplos fazendo uso de interrupções. Qualquer conhecimento mais aprofundado consulte livros específicos indicados na bibliografia. 2. CONVERSÃO ENTRE SISTEMAS DE NUMERAÇÃO Existem vários sistemas numéricos, dentre os quais se destacam: o sistema decimal, o binário, o octal e o hexadecimal. Os sistemas binário e hexadecimal são muito importantes nas áreas de técnicas digitais e informática pois há uma forte ligação entre estes sistemas de numeração e os circuitos lógicos. Utilizando o conceito básico de formação de um número, obtém-se o equivalente decimal do número binário da seguinte forma: x x x x 2 0 = 1 x x 1 = = 9 10 Será visto agora a transformação inversa, ou seja, a conversão de um número do sistema decimal para o sistema binário. Para converter em binário faz-se: 47 2 = 23 1 resto = = 11 2 resto = = 5 3 resto = = 2 4 resto = = 1 5 resto = = 0 6 resto = 1 O último resto será o algarismo mais significativo e ficará à esquerda. Os outros algarismos seguem-se na ordem até o primeiro resto. Logo: = O sistema hexadecimal possui 16 algarismos, sendo sua base igual a 16. Os algarismos são assim enumerados: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, e F A tabela 1 mostra a seqüência de numeração do sistema hexadecimal ate a quantidade dezoito. A regra de conversão do sistema hexadecimal para o sistema decimal é análoga à de outros sistemas, somente neste caso, a base é 16. Como exemplo, será convertido o número 3F 16 em decimal F 3 x F x 16 0 = sendo F 16 = 15 10, substituindo: 3 x x 16 0 = 3 x x 1 = F 16 =
3 Tabela 1 Seqüência de numeração hexadecimal e binária. DECIMAL HEXADECIMAL BINÁRIO A B C D E F A conversão do sistema decimal para hexadecimal se dá da seguinte forma, considerando a conversão do número em hexa: = 62 1 resto = = 3 2 resto = = 0 3 resto = 3 sendo = E 16, temos: = 3E8 16 Para converter números hexadecimais em binários necessitam-se de 4 bits para representar cada algarismo hexadecimal. Por exemplo, para converter o número C13 16 para o sistema binário, faz-se: C C13 16 = A conversão do sistema binário para o sistema hexadecimal é feita agrupando-se os dígitos binários de 4 em 4 bits da direita para a esquerda. Por exemplo, para transformar o número em hexadecimal: = OPERAÇÕES ARITMÉTICAS NO SISTEMA BINÁRIO Para efetuar a adição no sistema binário, deve-se agir como numa adição convencional no sistema decimal, lembrando que, no sistema binário, tem-se apenas 2 algarismos. Para exemplificar, serão somados os números binários e
4 = verificação: ( = ) O método de subtração no sistema binário é análogo a uma subtração no sistema decimal. Observa-se que para o caso 0 1, o resultado será igual a 1, porém haverá um transporte para a coluna seguinte que deve ser acumulado no subtraendo e, obviamente, subtraído do minuendo. Por exemplo, é mostrada abaixo a resolução da operação passo a passo. 4. MICROPROCESSADORES Este componente é o principal responsável pelo desempenho de um microcomputador. Exemplos de microprocessadores usados nos PCs são o Pentium, o 486 e o 386, além de outros, é claro. Todos os microprocessadores usados nos PCs são descendentes do 8086, o primeiro microprocessador de 16 bits lançado pela Intel, no final dos anos 70. Antes deles, reinavam os microprocessadores de 8 bits, entre os quais pode-se citar o 8080, , o Z80, o 6502, o 6800 e o Um microprocessador é um chip que contém o que é chamado de Unidade Central de Processamento (em inglês, Central Processing Unit, ou CPU). É responsável por buscar e executar instruções existentes na memória. Essas instruções são chamadas de linguagem assembly ou propriamente linguagem de máquina. São comandos muito simples, como operações aritméticas e lógicas, leituras, gravações, comparações e movimentações de dados. Essas instruções simples, quando agrupadas, formam os programas Lançado pela Intel em 1978, o 8086 tinha um desempenho dez vezes melhor que seu antecessor o Seus registradores tinham a largura de 16 bits, o barramento de dados passou de 8 para 16 bits e o barramento de 4
5 endereços se tornou maior com 20 bits de largura, permitindo assim que fosse controlado mais de 1 milhão de bytes de memória. A memória passou a ser tratada de maneira diferente pois esse processador tratava a mesma como se fosse dividida em até 16 segmentos contendo 64 kilobytes cada, e não permitia que nenhuma estrutura de dados ultrapassasse a barreira entre os segmentos O 8088 surgiu da necessidade em se criar um processador com características parecidas com as do 8086 mas que tivesse um custo menor. Dessa forma, a Intel colocou no mercado um chip que só se diferenciava do 8086 pelo fato de ter um barramento de dados de 8 bits. Em virtude de sua concepção menos avançada e do baixo custo de produção o 8088 foi escolhido pela IBM, para o projeto de seu computador pessoal, pois, além de possuir o projeto interno de 16 bits também pertencia à mesma linhagem do A figura 1 apresenta o diagrama de blocos do microprocessador 8086/88. Figura 1 Diagrama de Blocos do 8086/ O QUE É ASSEMBLY? Assembly é uma linguagem de baixo nível, que pode ser usado em conjunto com linguagens de alto nível para acelerar tarefas lentas. Basicamente ela consiste de sentenças que representam instruções em linguagem de máquina, e, como está próxima ao código de máquina, ela é rápida. Há décadas atrás, quando surgiu o 8086, programar não era uma tarefa fácil. Quando os primeiros computadores foram desenvolvidos, a programação tinha que ser feita em código de máquina. Como não era uma tarefa fácil criaram a linguagem Assembly. Para programar em assembly é necessário o tradutor assembler, um programa de computador que produz um código binário correspondente a cada mnemônico (instrução assembly). Os programas de tradução avisam quando encontra algum erro no programa. Nos experimentos em laboratório será utilizado o SID como tradutor assembler. 5.1 Por que aprender assembly? A primeira razão para se trabalhar com assembly é a oportunidade de conhecer melhor o funcionamento do PC, o que permite o desenvolvimento de programas de forma mais consistente. Uma outra razão é que programas assembly são mais rápidos, menores e mais poderosos do que os criados com outras linguagens. Também 5
6 oferece maior flexibilidade e controle sobre o PC, ao nível de hardware. Além do mais, o assembler (montador) permite uma otimização ideal nos programas, seja no seu tamanho ou execução. Uma outra vantagem é que o programador assembly tem acesso a todos os recursos e instruções disponíveis na máquina. O programador de linguagem de alto nível não tem este acesso. Por exemplo, se for necessário verificar um bit de estouro (overflow) em um registrador, um programa assembly pode testá-lo, mas não um programa Pascal. 6. REGISTRADORES E FLAGS NO 8086/88 Quando se está trabalhando com assembly, tem-se que usar registradores. Pode-se imaginá-los como sendo variáveis já definidas para o programador. O 8086/88 possui 14 registradores distribuídos nas unidades internas EU (Unidade de Execução) e BIU (Unidade de Interface com o Barramento). Segundo a Intel, os registradores podem ser agrupados da seguinte forma: Registradores de Uso Geral: AX, BX, CX, DX, SP, SI e DI; Registradores de Segmento: CS, DS, SS e ES; Apontador de Instrução: IP; Registrador de FLAGS. 6.1 Registradores de Uso Geral (AX, BX, CX, DX, SP, SI e DI) Estes registradores são definidos como registradores de uso geral pois se pode realmente armazenar qualquer coisa neles. São também registradores de 16 bits, o que significa que é possível armazenar um inteiro positivo de 0 a 65535, ou um inteiro com sinal de to Então se tiver que armazenar 0A4C (hexadecimal) em AX, AH conterá 0A, e AL conterá 4C. Os registradores de uso geral são subdivididos em dois conjuntos de 4 registradores: Registradores de Dados: AX, BX, CX e DX. Seus bytes superiores (AH, BH, CH e DH) e inferiores (AL, BL, CL e DL) podem ser acessados de modo separado. Isto significa que cada registrador pode ser usado como um registrador de 8 ou 16 bits. Isto é vantajoso porque evita o uso de registradores de 16 bits quando se realizam operações de 8 bits. Eles podem ser utilizados sem restrições na maioria das operações lógicas e aritméticas. Como será visto a seguir, adicionalmente algumas instruções usam certos registradores de forma implícita, permitindo uma poderosa forma de codificação. Registradores Apontadores e de Indexação: SP, BP, SI e DI. Todo acesso é feito em 16 bits. Podem também participar da maioria das operações lógicas e aritméticas. Registrador AX (AH + AL) Também denominado acumulador primário. Todas as operações de I/O são realizadas através deste registrador. As operações que utilizam dados imediatos necessitam de menos memória quando são feitas através de AX. Geralmente é utilizado como hospedeiro para valores retornados de sub-rotinas. Registrador BX (BH + BL) Também denominado Registrador Base. Usado preferencialmente como apontador da base de uma tabela de dados. Todas as referências à memória que usam esse registrador no cálculo do endereço usam o registrador DS como segmento padrão. Registrador CX (CH + CL) Também denominado contador, sendo usado prioritariamente para contar o número de interações no interior de um loop e também na manipulação de strings. Ele é decrementado durante as operações envolvendo loops e strings. Também utilizado na rotação e deslocamento de vários bits. 6
7 Registrador DX (DH + DL) Também chamado de registrador de dados ou endereçador de I/O. É usado para guardar dados de 16 bits nas operações com a ULA e controle indireto de I/O. Pode ser usado por compiladores para retornar valores de subrotinas. Registrador SP É denominado Stack Pointer (Ponteiro de Pilha). Utilizado juntamente com BP para acessar dados no segmento da pilha. Armazena o offset do endereço do topo da pilha. Todas as referências ao SP, por definição, utilizam juntamente o registrador de segmento SS. Também pode ser usado como operando em operações lógicas e aritméticas de 16 bits. Registrador BP É denominado Base Pointer (Ponteiro da Base). Permite acessar dados no segmento da pilha. Tipicamente é usado para acessar parâmetros que foram passados pela pilha. Também pode ser usado como operando em operações lógicas e aritméticas de 16 bits. Registradores de Indexação (SI e DI) São denominados Source Index (Índice de Origem) e Destination Index (Índice de Destino). São usados para acessar dados na memória de dados. São extensivamente usados nas operações com strings. Também podem ser usados como operando em operações lógicas e aritméticas de 16 bits. 6.2 Registradores de Segmentos A memória do 8086/88 é dividida em segmentos lógicos de até 64 Kb. A CPU tem acesso simultâneo a até 4 segmentos, utilizando os seguintes registradores como seletores de endereço: CS, DS, SS e ES. Estes registradores estão localizados na BIU, sendo acessíveis para programas, podendo ser manipulados por várias instruções. São descritas a seguir as principais funções de cada um destes registradores. Registrador CS É denominado Code Segment (Segmento de Código). É utilizado para montar o endereço de uma instrução (code) a ser buscada (fetch) na memória. CS define o endereço base (segmento) e deve ser somado ao registrador IP (também localizado na BIU) para formar o endereço de 20 bits da instrução. Em outras palavras, aponta para o segmento de código de instrução em uso. Registrador DS É denominado Data Segment (Segmento de Dados). Aponta para os segmentos de dados onde geralmente são armazenadas as variáveis de programa. Em conjunto com IP define o endereço efetivo do dado a ser lido ou escrito na memória. Registrador SS É denominado Stack Segment (Segmento de Pilha). Aponta para o segmento da pilha em uso. Todos os acessos à pilha utilizam os registradores SP e BP e utilizam como referência o registrador de segmento de pilha (SS). Registrador ES É denominado Extra Segment (Segmento Extra). É uma opção extra para apontar a base de um segmento de dados (strings). Por exemplo, ele é utilizado juntamente com o DI para formar o endereço da base de strings de dados. 7
8 6.3 Registrador IP É denominado Instruction Pointer (Ponteiro de Instruções). Este registrador é atualizado pela BIU e contém a distância em bytes (offset) da próxima instrução em relação ao início do código que está sendo executado, isto é, ele aponta para a próxima instrução. Os programadores não têm acesso direto ao registrador. 6.4 Registrador de FLAGs O microprocessador 8086/88 contém em seu interior um total de 9 sinalizadores, também conhecidos como flags. Eles existem para indicar resultados obtidos sempre na última operação lógica ou aritmética executada, ou para definir o comportamento do microprocessador na execução de certas instruções. Estes 9 flags estão agrupados, para facilidade de acesso, em um registrador de 16 bits, chamado de Registrador de Flags, Registrador de Estado ou Palavra de Estado do Programa, sendo localizado na EU. Como mostra a figura 2, ele utiliza bits para armazenar informações de estado (status) e de controle O D I T S Z A P C Flags de estado: O, S, Z, P, C e A. Flags de controle: T, D, I Flags de Estado Figura 2 Registrador de Flags do 8086/88. Os bits de estado refletem certas propriedades de resultados de operações lógicas e aritméticas realizadas na EU, a qual é responsável por setar estes bits no registrador. A seguir é descrito o significado dos flags de estado. Flag A (Auxiliary): reflete o vai um do terceiro bit de uma operação de 8 bits. É utilizado por instruções que trabalham com operações decimais. Flag C (Carry): reflete o vai um do bit mais significativo nas operações aritméticas (de 8 e 16 bits). É também modificado por algumas instruções de rotação e deslocamento. Flag O (Overflow): é setado quando o resultado de uma operação aritmética excede os limites da área destinada ao armazenamento (que pode ser 8 ou 16 bits). Ou quando ocorre um vai um do penúltimo bit mais significativo para o último bit mais significativo. Se o registrador ou variável for de 8 bits, e O = 1, significa que houve um vai um do 6º para o 7º bit do registrador ou variável. Se o registrador ou variável for de 16 bits, e O = 1, significa que houve um vai um do 14º para 15º bit do registrador ou variável. Flag S (Sign): é igual ao bit de mais alta ordem do resultado de uma operação aritmética, ou seja, indica se o resultado da operação é positivo (S = 0) ou negativo (S = 1). Flag P (Parity): indica a paridade (par) dos 8 bits menos significativos do resultado da operação realizada (aritmética ou lógica): P = 1 número par de 1 nos 8 bits menos significativos. P = 0 número ímpar de 1 nos 8 bits menos significativos. Flag Z (Zero): é setado (Z = 1) se o resultado da operação for igual a zero Flags de Controle Existem 3 flags que podem ser setados pelos programas, alterando as operações do processador: Flag D (Direction): determina se as operações de string devem ser auto-decrementadas (D = l) ou incrementadas (D = 0). Em outras palavras, determina se as operações com strings vão incrementar ou decrementar os registradores de indexação (SI e DI). 8
9 Flag I (Interrupt Enable): caso a CPU esteja habilitada para receber instruções mascaráveis, então I = l. Caso contrário, I = 0 desabilita interrupções mascaráveis. Flag T (Trap): utilizado para depuração de programa. Se T = 1, o processador executará as instruções passo a passo. 7. INSTRUÇÕES DO MICROPROCESSADOR Para que um programa possa ser executado por um computador, ele precisa ser constituído de uma série de instruções de máquina e estar armazenado em células sucessivas na memória principal. A CPU é responsável pela execução das instruções que estão na memória. Quem executa um programa é o hardware e o que ele espera encontrar é um programa em linguagem de máquina (uma seqüência de instruções de máquina em código binário). A linguagem de máquina é composta de códigos binários, representando instruções, endereços e dados e está totalmente vinculada ao conjunto de instruções do microprocessador. Um ser humano usa seu conhecimento e inteligência para traduzir uma tarefa complexa (tal como, por exemplo, a tarefa de buscar uma pasta em um arquivo) em uma série de passos elementares (identificar o móvel e gaveta onde está a pasta, andar até o móvel, abrir a gaveta. encontrar a pasta, retirar a pasta e fechar a gaveta). Para o computador, uma instrução precisa ser detalhada, dividida em pequenas etapas de operações, que são dependentes do conjunto de instruções do microprocessador e individualmente executáveis. 7.1 Conjunto de Instruções A tabela 2 apresenta um conjunto das principais instruções utilizadas nos experimentos de laboratório. Para maiores detalhes consulte livros específicos indicados na bibliografia. Tabela 2 Conjunto de Instruções do 8086/88. INSTRUÇÃO OPERAÇÃO FLAGS AAA Ascii Adjust for Addition (Ajuste Ascii para Adição): Altera o conteúdo de Aft: A, CXXX AL para um decimal válido. Ind: P, S, Z, O AAS Ascii Adjust for Subtraction (Ajuste Ascii para Subtração): Corrige o Aft: A, C resultado de uma subtração de decimais em AL. Ind: P, S, Z, O ADC destino, Add with Carry (Adição com Carry): Soma dois operandos binários e põe o Aft: A, C, O, P, resultado no destino. Se C estiver setado, soma 1 ao resultado. S, Z ADD destino, Arithmetic Addition (Soma Aritmética): Soma e destino, repondo o Aft: A, C, O, P, valor original do destino. Ambos os operandos são binários. S, Z AND destino, Logical And (E Lógico): Faz um E Lógico entre os dois operandos, Aft: C,O,P,S,Z substituindo o destino com o resultado. Ind: A Procedure Call (Procedimento de Chamada): Põe o Ponteiro de Instrução (e o AAAXXXXX CALL destino Segmento de Código para chamadas do tipo far) na pilha e carrega o Ponteiro de Instrução com o endereço do nome do procedimento. O código continua com a execução em CS:IP. CLC Clear Carry (Limpa Carry): Limpa (zera) o Flag Carry. Aft: C Clear Direction Flag (Limpa o Flag de Direção): Limpa (zera) o Flag de CLD Direção levando instruções de string a incrementar os índices dos Aft: D registradores SI e DI. CMP destino, DAA Compare (Compara): Subtrai a do destino, atualiza os flags mas não guarda o resultado (não altera os valores de destino e ). Decimal Adjust for Addition (Ajuste Decimal para Adição): Corrige o resultado (em AL) de uma operação BCD de adição prévia. O conteúdo de AL é modificado para um par de dígitos decimais. Aft: A, C, O, P S, Z Aft: A,C,P,S,Z Ind: O 9
10 DAS Decimal Adjust for Subtraction (Ajuste Decimal para Subtração): Corrige o resultado (em AL) de uma operação BCD de subtração prévia. O conteúdo de AL é modificado para um par de dígitos decimais. Aft: A,C,P,S,Z DEC destino Decrement (Decrementa): Subtração binária sem sinal de um (1) do destino. Aft: A,O,P,S,Z Divide: Divisão sem sinal do acumulador pela. Se o divisor for DIV um valor byte, então BL é dividido pela e o quociente é colocado em Ind: A, C, O, BL e o resto em BH. Se o operando for um valor word, então DX:AX é P, S, Z dividido pela e o quociente é colocado em BX e o resto em DX. INC destino INT valor Increment (Incremento): adiciona um (1) ao operando binário sem sinal destino. Interrupt (Interrupção): inicia uma interrupção por software colocando (push) os flags na pilha, limpando a Trap e os flags de Interrupção, pondo (push) CS seguido do IP na pilha e carregando CS:IP com os valores encontrados na tabela de vetores de interrupção. A execução começa no ponto endereçado pelo novo CS:IP. Aft: A, O, P, S, Z Aft: I, T Jxx TODOS OS SALTOS (JUMPS) CONDICIONAIS (ver tabela 3) JCXZ label Jump if Register CX is Zero (Salte se o Registrador CX for Zero): desvia a execução para label se CX for zero. Usa uma comparação sem sinal. Obs: label é o endereço da instrução a ser executada. JMP label LOOP label LOOPE label LOOPZ label LOOPNZ label LOOPNE label MOV destino, MOVS destino, MOVSB MOVSW MOVSD MUL NEG destino Uncoditional Jump (Salto Incondicional): transfere o controle para label incondicionalmente. Os saltos estão entre e bytes distantes da instrução seguinte ao salto. Saltos NEAR e SHORT provocam a atualização do IP, enquanto que saltos FAR provocam a atualização de CS e IP. Decrement CX and Loop if CX Not Zero (Decrementa CX e faz Loop se CX for Não Zero): decrementa CX em 1 e transfere o controle para label se CX não for zero. O operando label precisa estar a -128 ou 127 bytes da instrução que segue a instrução de loop. Loop While Equal / Loop While Zero (Loop enquanto Igual / Loop enquanto Zero): decrementa CX em 1 (sem modificar flags) e transfere o controle para label se CX não for zero e o flag Zero estiver setado. O operando label precisa estar a -128 ou 127 bytes da instrução que segue a instrução de loop. Loop While Not Zero / Loop While Not Equal (Loop enquanto Não Zero / Loop enquanto Não Igual): decrementa CX em 1 (sem modificar flags) e transfere o controle para label se CX não for zero e o flag Zero estiver resetado (zerado). O operando label precisa estar a -128 ou 127 bytes da instrução que segue a instrução de loop. Move Byte or Word (Move Byte ou Word): copia um byte ou word do operando para o operando destino. Se o destino é SS, as interrupções são desabilitadas, exceto nas CPUs 808x mais antigas e com bug. Algumas CPUs desabilitam as interrupções se o destino for um dos registradores de segmento. Não copia byte ou word de memória para memória. Move String - Byte or Word (Move String - Byte ou Word): copia dados endereçados por DS:SI (mesmo que um operando seja fornecido) para a localização ES:DI e atualiza SI e DI baseado no tamanho do operando ou da instrução usada. Se o flag de direção estiver resetado (zerado), SI e DI são incrementados, se estiver setado, SI e DI são decrementados. Use com REP. Unsigned Multiply (Multiplicação sem Sinal): multiplicação sem sinal do acumulador pela. Se a for um valor byte, então AL é usado como o outro multiplicando e o resultado é colocado em AX. Se a for um valor word, então AX é multiplicado pela e EX:AX recebe o resultado. Two's Complement Negation (Negação com Complemento de 2): subtrai o destino de 0 (zero) e salva o complemento de 2 no próprio destino. Aft: C, O Ind: A, P, S, Z Aft: A, C, O, P, S, Z 10
11 NOP NOT destino OR destino, POP destino POPF PUSH PUSHF RCL destino, vezes RCR destino, vezes ROL destino, vezes ROR destino, vezes SAR destino, vezes SBB destino, SHL destino, vezes SHR destino, vezes SUB destino, TEST destino XCHG destino, XOR destino, No Operation (Nenhuma Operação): esta é uma instrução de fazer nada. Resulta na ocupação tanto de espaço quanto de tempo e é muito útil para fazer patches em segmentos de código. One's Complement Negation - Logical NOT (Negação com Complemento de 1 - NÃO Lógico): Inverte os bits do operando destino formando seu complemento de 1. Inclusive Logical OR (OU Inclusive Lógico): OU Inclusive Lógico dos dois operandos, retornando o resultado no destino. Todos os bits ativos em qualquer dos operandos estará ativo no resultado. Pop Word off Stack (Tire Word da Pilha): transfere o word do topo da pilha (SS:SP) para destino e incrementa SP em 2 para indicar o novo topo de pilha. Pop Flags off Stack (Tire os Flags da Pilha): tira word da pilha e os transfere para os registradores de flags. Depois incrementa SP em 2. Push Word onto Stack (Ponha Word na Pilha): decrementa SP pelo tamanho do operando (dois, ou quatro, valores byte são estendidos por sinal) e transfere um word da para o topo da pilha (SS:SP) Push Flags onto Stack (Ponha os Flags na Pilha): transfere os registradores de flags para a pilha. PUSHF guarda um valor de 16 bits. Rotate Through Carry Left (Rolar através do Carry para a Esquerda): Rola os bits do destino para a esquerda as vezes indicadas com todos os dados que vazarem pela esquerda re-entrando pela direita. O flag de carry conterá o valor do último bit rolado. Rotate Through Carry Right (Rolar através do Carry para a Direita): Rola os bits do destino para a direita as vezes indicadas com todos os dados que vazarem pela direita re-entrando pela esquerda. O flag de carry conterá o valor do último bit rolado. Rotate Left (Rotação para a Esquerda): Rola os bits do destino para a esquerda as vezes indicadas com todos os dados que vazarem pela esquerda re-entrando pela direita. O flag C conterá o último bit rolado. Rotate Right (Rotação para a Direita): Rola os bits do destino para a direita as vezes indicadas com todos os dados que vazarem pela direita re-entrando pela esquerda. O flag de carry conterá o valor do último bit rolado. Shift Arithmetic Right (Deslocamento Aritmético para a Direita): Desloca os bits do destino para a direita as vezes indicadas com o bit de sinal replicado no último bit. O flag de carry conterá o valor do último bit deslocado. Subtract with Borrow (Subtração com Empréstimo): Subtrai a do destino, além de subtrair 1 se o flag de carry estiver setado. O resultado é armazenado no destino. Shift Logical Left (Deslocamento Lógico para a Esquerda): Desloca os bits do destino para a esquerda as vezes indicadas com zeros colocados à direita. O flag de carry conterá o valor do último bit deslocado. Shift Logical Right (Deslocamento Lógico para a Diretita): Desloca os bits do destino para a direita as vezes indicadas com zeros colocados à esquerda. O flag de carry conterá o valor do último bit deslocado. Subtraction (Subtração): Subtrai a do destino e o resultado é armazenado em destino. Test (Testar): Faz um AND lógico entre os operandos, atualizando os flags e sem armazenar o resultado. Exchange (Troca): Troca o destino pela e vice-versa. Fonte e destino podem ser dois registradores ou um registrador e uma posição de memória. Exclusive Or (OU Exclusivo): faz um OU Exclusivo entre os operandos e retorna o resultado no destino. Aft: C,O,P,S,Z Ind: A todos são afetados Aft: C, O Aft: C, O Aft: C, O Aft: C, O Aft: C, O, P, S, Z Ind: A Aft: A, C, O, P, S, Z Aft: C,O,P,S,Z Ind: A Aft: C,O,P,S,Z Ind: A Aft: A, C, O, P, S, Z Aft: C,O,P,S,Z Ind: A XCHGpdestino, Aft: C,O,P,S,Z Ind: A 11
12 Obs: Aft significa Afetado. Indica quais flags são afetados depois de executada determinada instrução. Ind significa Indefinido. Indica quais flags são setados indefinidamente (aleatoriamente). A tabela 3 mostra instruções de quebra ou mudança de seqüência do tipo Jxx. Tabela 3 Conjunto de Instruções de Transferência Condicional. Mnemônico Significado Condição de Salto JA Salte se Acima (Jump if Above) C = 0 e Z = 0 JAE Salte se Acima ou Igual (Jump if Above or Equal) C = 0 JB Salte se Abaixo (Jump if Below) C = 1 JBE Salte se Abaixo ou Igual (Jump if Below or Equal) C = 1 ou Z = 1 JC Salte se Carry (Jump if Carry) C = 1 JCXZ Salte se CX for Zero (Jump if CX Zero) CX = 0 JE Salte se Igual (Jump if Equal) Z = 1 JG Salte se Maior (Jump if Greater) (COM SINAL) Z = 0 e S = O JGE Salte se Maior ou Igual (Jump if Greater or Equal) (COM SINAL) S = O JL Salte se Menor (Jump if Less) (COM SINAL) S <> O JLE Salte se Menor ou Igual (Jump if Less or Equal) (COM SINAL) Z = 1 ou S <> O JMP Salto Incondicional (Unconditional Jump) JNA Salte se Não Acima (Jump if Not Above) C = 1 ou Z = 1 JNAE Salte se Não Acima ou Igual (Jump if Not Above or Equal) C = 1 JNB Salte se Não Abaixo (Jump if Not Below) C = 0 JNBE Salte se Não Abaixo ou Igual (Jump if Not Below or Equal) C = 0 e Z = 0 JNC Salte se Não Carry (Jump if Not Carry) C = 0 JNE Salte se Não Igual (Jump if Not Equal) Z = 0 JNG Salte se Não Maior (Jump if Not Greater) (COM SINAL) Z = 1 ou S <> O JNGE Salte se Não Maior ou Igual (Jump if Not Greater or Equal) (COM SINAL) S <> O JNL Salte se Não Menor (Jump if Not Less) (COM SINAL) S = O JNLE Salte se Não Menor ou Igual (Jump Not Less or Equal) (COM SINAL) Z = 0 e S = O JNO Salte se Não Overflow (Jump if Not Overflow) (COM SINAL) O = 0 JNP Salte se Não Paridade (Jump if Not Parity) P = 0 JNS Salte se Não Sinal (Jump if Not Signed) (COM SINAL) S = 0 JNZ Salte se Não Zero (Jump if Not Zero) Z = 0 JO Salte se Overflow (Jump if Overflow) (COM SINAL) O = 1 JP Salte se Paridade (Jump if Parity) P = 1 Uma vez apresentadas as diversas instruções reconhecidas pelo microprocessador 8086/88 da Intel, será exemplificado abaixo um pequeno programa feito no SID utilizando estas instruções, e entendendo passo a passo o que o programa faz. ENDEREÇO MNEMÔNICOS COMENTÁRIOS 0000 SUB AX, AX Faz AX = ADD AX, [BX] Adiciona uma Word apontada por BX em AX 0004 ADD BX, 2 Adiciona 2 à BX 0007 CMP DX, BX Compara DX com BX 0009 JNS 0002 Se DX BX salta para o endereço B INT 3 Finaliza o programa A programação em assembly é feita através de mnemônicos, que são, posteriormente, convertidos em opcodes pelo montador, que é a linguagem de máquina entendida pelo processador. 12
13 8. INTERRUPÇÕES Uma das coisas essenciais que tornam um computador diferente de qualquer outro tipo de máquina feita pelo homem é sua capacidade de responder a uma imprevisível variedade de trabalhos. O recurso de interrupção permite ao computador suspender o que estiver fazendo e passar a fazer outra coisa em resposta a uma interrupção (por exemplo, pressionar uma tecla no teclado). Os processos de interrupções permitem este tipo de resposta imediata sem ter que desperdiçar tempo de CPU e códigos de programa, verificando todas as possíveis tarefas paralelas que precisem ser realizadas em um determinado momento. 8.1 Interrupções por Hardware Interno Interrupções internas são geradas por certos eventos que ocorrem durante a execução de um programa. Estes tipos de interrupções são gerenciados, na sua totalidade, pelo hardware e não é possível modificá-las. Um exemplo claro deste tipo de interrupção é a que atualiza o contador do clock interno do computador, o hardware chama esta interrupção muitas vezes durante um segundo. Não é permitido ao programador gerenciar diretamente esta interrupção, uma vez que não se pode controlar a hora atualizada por software. Mas o programador pode usar seus efeitos no computador para o seu benefício, por exemplo para criar um virtual clock atualizado continuamente pelo contador interno de clock. Para tanto, é necessário apenas ler o valor atual do contador e o transformar num formato compreensível pelo usuário. 8.2 Interrupções por Hardware Externo Interrupções externas são geradas através de dispositivos periféricos, tais como teclados, impressoras, placas de comunicação, entre outros. São também geradas por co-processadores. Não é possível desativar interrupções externas. Estas interrupções não são enviadas diretamente para a CPU, mas, de uma forma melhor, são enviadas para um circuito integrado cuja função exclusiva é manusear este tipo de interrupção. O circuito, chamado PIC8259A, é controlado pela CPU através de uma série de comunicação chamada paths. 8.3 Interrupções por Software Interrupções por software podem ser ativadas diretamente por programas assembly, invocando o número da interrupção desejada com a instrução INT. O uso das interrupções facilita bastante a criação dos programas, tornando-os menores. Além disso, é fácil compreendê-las e geram boa performance. Estes tipos de interrupções podem ser separados em duas categorias: Interrupções do Sistema Operacional DOS e interrupções do BIOS. A diferença entre ambas é que as interrupções do sistema operacional são mais fáceis de usar, mas também são mais lentas, uma vez que acessam os serviços do BIOS. Por outro lado, interrupções do BIOS são muito mais rápidas, mas possuem a desvantagem de serem parte do hardware, o que significa serem específicas à arquitetura do computador em questão. A escolha sobre qual o tipo de interrupção usar irá depender somente das características que deseja dar ao seu programa: velocidade (use BIOS), portabilidade (use DOS). 8.4 Principais Interrupções BIOS: Interrupção 16h serviço 0 MOV AH, 0 INT 16H 13
14 função: leitura do teclado sem ecoar na tela. Na saída, AL contém o código do caractere que foi digitado. Se AL = 0 então foi pressionada uma tecla especial cujo código estará em AH = SCAN CODE. Interrupção 10h serviço 2 MOV AH, 2 MOV DH, linha MOV DL, coluna MOV BH, 0 ; pagina de video. INT 10H função: posiciona o cursor. Interrupção 10h serviço 6 MOV AH, 6 MOV AL, numero de linhas a rolar MOV CH, linha superior esquerdo MOV CL, coluna superior esquerdo MOV DH, linha inferior direito MOV DL, coluna inferior direito MOV BH, atributo INT 10H função: limpa a tela. DOS: Interrupção 21h serviço 1 MOV AH, 1 INT 21H função: leitura do teclado com eco na tela. O caractere lido está em AL, se AL = 0, deve repetir a leitura (tecla especial). Interrupção 21h serviço 9 MOV AH, 9 MOV DX, offset string INT 21H função: imprime na tela uma string que inicia no endereço apontado por DX e vai até encontrar um "$". Interrupção 21h serviço 2 MOV AH, 2 INT 21H função: escreve o caractere que está em DL na tela. 9. BIBLIOGRAFIA 1. Lance A. Leventhal /8085 Assembly Language Programming, Osborne/McGraw-Hill, Berkeley, California, Lance A. Leventhal and Winthrop Saville /8085 Assembly Language Subroutines, Osborne/McGraw-Hill, Berkeley, California, Antonio C. J. F. Visconti - Microprocessadores 8080 e 8085 : Software, Livros Érica Editora Ltda., Vol. 2, São Paulo, Intel Corporation - MCS-85 User's Manual, Intel Corporation /8085 Assembly Language Programming Manual,
No. de bits. O primeiro IBM PC foi construído com o 8088 (versão de 8 bits do 8086).
Cap2.1 2. Arquitetura do microprocessador 8086 2.1 A família Intel iapx86 (ou 80X86) Processador Co-proc. Ano de introdução No. de bits No. de transistores Velocidade (MHz) 4004-1971 4 2.205-8008 - 1972
Leia maisCPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados
CPU CPU Unidade Central de Processamento Função: leitura, escrita e processamento de dados Constituída por: dispositivos que gerem a entrada (leitura) e saída (escrita) de dados; registos (memórias auxiliares)
Leia maisLaboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly
Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly Gustavo G. Parma Lista dos comandos assembly que serão utilizados ao longo das práticas. 1 Comandos 1. ADD destino, fonte
Leia maisx86 arquitetura e instruções básicas
x86 arquitetura e instruções básicas 1 Família x86 Data CPU Palavra Endereço (bits) 1978 8086, 8088 1982 80186, 80188 1985 80386 1989 80486 1993 Pentium, Pentium MMX 1995 Pentium Pro 1997 Pentium II/III,
Leia maisOrganização de Computadores 1
Organização de Computadores 1 3.1 CPU: Unidade de Processamento Central Prof. Luiz Gustavo A. Martins Arquitetura de von Newmann Unidade de Processamento Central (CPU): Memória Principal Unidade de Processamento
Leia maisProfessor: Dr. Rogério Rodrigues de Vargas.
UNIVERSIDADE ESTADUAL DE SANTA CRUZ DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Bacharelado em Ciência da Computação Software Básico Linguagem de Programação Assembly: Uma introdução no Linux/i386 (AT&T)
Leia maisARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA Prof. Dr. Daniel Caetano 2012-1 Objetivos Conhecer o processador Compreender os registradores
Leia maisMicroprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios
Microprocessadores I ELE 1078 Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios Grupos de Instruções do 8085 As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência da
Leia maisRegistradores. Os processadores possuem espaços específicos onde são guardados valores, os chamados registradores.
Os processadores possuem espaços específicos onde são guardados valores, os chamados registradores. Esses espaços são parecidos com variáveis de uma linguagem de programação de alto nível, onde se guarda
Leia maisEEL Microprocessadores
EEL7030 - Microprocessadores 8086 Primeiro (1980) da família do Pentium (80x86). Componente com arquitetura similar (8088) utilizado no primeiro IBM PC. Cada descendente executa código dos antepassados
Leia maisMicroprocessadores. Família x86 - Programação do i8086
Família x86 - António M. Gonçalves Pinheiro Departamento de Física Covilhã - Portugal pinheiro@ubi.pt Estudo Genérico de Microprocessador Microprocessadores i8086 1. Modelo de Programação; 2. Espaço de
Leia mais2º Estudo Dirigido CAP 3
2º Estudo Dirigido CAP 3 1. Cite três exemplos de aspecto na definição e implementação de uma arquitetura que são influenciados pelas características do conjunto de instruções? R.: Operações lógicas e
Leia mais7. A pilha e subrotinas
Cap7.1 7. A pilha e subrotinas 7.1 Organização da Pilha (stack) Stack: estrutura de dados de uma dimensão organizada em algum trecho (segmento) da Memória; o primeiro item adicionado é o último a ser removido
Leia mais2.5 - Instruções Lógicas do ULA
2.5 - Instruções Lógicas do 8085 - ULA Todas as operações lógicas e aritméticas em qualquer microprocessador são realizadas em uma unidade dedicada denominada Unidade Lógica e Aritmética (ULA). Para auxiliar
Leia maisJosé Augusto Fabri. Assembly Básico
José Augusto Fabri Assembly Básico Aritmética em Modo Hexadecimal Operações da adição e subtração em hexadecimal (comando H) Número negativos: Que número representa o FFFF? Aritmética em Modo Hexadecimal
Leia maisOrganização Funcional
Organização Funcional Modelo de Arquitectura de Von Neuman 26 Organização Funcional Modelo de Arquitectura de Von Neuman CPU Unidade Central de processamento (central process unit) Onde tudo se passa ;
Leia maisMÓDULO. Conjunto de Instruções do 8086/88 Aritméticas, lógicas, deslocamento e rotação M 02
MÓDULO M 02 Conjunto de Instruções do 8086/88 Aritméticas, lógicas, deslocamento e rotação OBJETIVOS Compreender o significado dos bits de estado no registrador de flags do 8086/88; Conhecer as representações
Leia maisARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA Prof. Dr. Daniel Caetano 2012-2 Objetivos Conhecer o processador Compreender os registradores
Leia maisArquitectura de Computadores 3º Teste. Instruções do x86
Arquitectura de Computadores 3º Teste Ano Lectivo: 2009/2010 Data: 19 de Dezembro de 2009 Duração: 2h00 INFORMAÇÕES GERAIS 1. Mantenha na secretária apenas a sua identificação e uma caneta (azul ou preta).
Leia maisARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA Prof. Msc. Tiago Alves de Oliveira Objetivos Conhecer o processador Compreender os registradores
Leia maisAJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:
Introdução aos Sistemas de Computação (4) Estrutura do tema ISC 1. Representação de informação num computador 2. Organização e estrutura interna dum computador 3. Execução de programas num computador 4.
Leia maisSSC510 Arquitetura de Computadores 1ª AULA
SSC510 Arquitetura de Computadores 1ª AULA REVISÃO DE ORGANIZAÇÃO DE COMPUTADORES Arquitetura X Organização Arquitetura - Atributos de um Sistema Computacional como visto pelo programador, isto é a estrutura
Leia maisSolução Lista de Exercícios Processadores
Solução Lista de Exercícios Processadores Questão 1 A ULA é o dispositivo da CPU que executa operações tais como : Adição Subtração Multiplicação Divisão Incremento Decremento Operação lógica AND Operação
Leia maisArquitetura de Computadores Conceitos Fundamentais. Graduação em Engenharia Elétrica - UFPR Prof. Carlos Marcelo Pedroso 2016
Arquitetura de Computadores Conceitos Fundamentais Graduação em Engenharia Elétrica - UFPR Prof. Carlos Marcelo Pedroso 2016 Um Computador Muito Simples CPU UC ULA A B PC IR FLAGS SP CS DS SS... 0A 09
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Conjunto de Instruções Slide 1 Sumário Características de Instruções de Máquina Tipos de Operandos Tipos de Operações Linguagem de Montagem Slide 2 Características
Leia maisLinguagem de Montagem e Assembly. André Luiz da Costa Carvalho
Linguagem de Montagem e Assembly André Luiz da Costa Carvalho Linguagem de Montagem Todo programa para ser executado precisar ser convertido de linguagem fonte (alto nível) para um programa equivalente
Leia maisUniversidade de São Paulo
Universidade de São Paulo Organização de Computadoresres Dr. Jorge Luiz e Silva Cap 3 Estrutura da Unidade de Processamento 8086/8088 14 Registradores.PC Contador de programa.sp Ponteiro de Pilha.SP Índice
Leia maisOrganização de Computadores
Organização de Computadores Aula 25 Conjunto de Instruções: Características e Funções Rodrigo Hausen 10 de novembro de 2011 http://cuco.pro.br/ach2034 1/92 Apresentação 1. Bases Teóricas 2. Organização
Leia maisArquitetura e Organização de Computadores
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO Arquitetura e Organização de Computadores Conjunto de Instruções Prof. Sílvio Fernandes
Leia mais2. A influência do tamanho da palavra
PROCESSAMENTO 1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos etc.) e de controle, durante
Leia maisPeriféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa. Aula Teórica 3
Aula Teórica 3 Sumário: Descrição das arquitecturas 8086, 80286, 80386, 80486 e família Pentium. Leitura Recomendada: Capítulos 2, 3, 4, 5, 8, 10, 12, 13 e 14 - Hans-Peter Messmer, The Indispensable PC
Leia maisAula 14 Funcionamento de Processadores (Visão específica)
Aula 14 Funcionamento de Processadores (Visão específica) Com base nas aulas de Prof. José Delgado (autorizado) Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm
Leia maisArquitetura e Organização de Computadores
Arquitetura e Organização de Computadores Linguagem de Montagem e Linguagem de Máquina Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br Conceitos básicos Linguagem/código
Leia maisDisciplina: Arquitetura de Computadores
Disciplina: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof a. Carla Katarina de Monteiro Marques UERN Introdução Responsável por: Processamento e execução de programas armazenados na
Leia maisCONJUNTO DE INSTRUÇÕES
CONJUNTO DE INSTRUÇÕES 1 CARACTERÍSTICAS DE INSTRUÇÕES DE MÁQUINA Quando um programador usa uma linguagem de alto-nível, como C, muito pouco da arquitetura da máquina é visível. O usuário que deseja programar
Leia mais2. A influência do tamanho da palavra
1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos etc.) e de controle, durante a execução de
Leia maisOperadores lógicos (bit a bit)
Operadores lógicos (bit a bit) Instrução AND Instruções: AND OR XOR NOT Os operandos destas instruções podem ser de 8 ou 16 bits 10010011
Leia maisArquitetura e Organização de Computadores
Arquitetura e Organização de Computadores Conjunto de Instruções Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br Material do prof. Sílvio Fernandes - UFERSA
Leia maisWilliam Stallings Arquitetura e Organização de Computadores 8 a Edição
William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 10 Conjuntos de instruções: Características e funções slide 1 O que é um conjunto de instruções? A coleção completa de instruções
Leia maisSistemas de Microprocessadores I Lista de exercícios (questões de provas de semestre anteriores)
Sistemas de Microprocessadores I Lista de exercícios (questões de provas de semestre anteriores) 1 - Fazendo uma comparação entre a arquitetura proposta por Von Neumann e a arquitetura de um microcomputador
Leia maisORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira
ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES Prof. Juliana Santiago Teixeira julianasteixeira@hotmail.com INTRODUÇÃO INTRODUÇÃO O processador é o componente vital do sistema de computação, responsável
Leia maisMicroprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -
Microprocessadores I ELE 1078 Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS - 9.1 - Grupos de Instruções As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência
Leia maisAula 4 Conjunto de Instruções do Microprocessador 8085 Grupo Aritmético
Microprocessadores I Aula 4 Conjunto de Instruções do Microprocessador 8085 Grupo Aritmético 4.1 - Grupos de Instruções As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência da
Leia maisENGENHARIA DE SISTEMAS MICROPROCESSADOS
ENGENHARIA DE SISTEMAS MICROPROCESSADOS PROF. PIERRE VILAR DANTAS AULA 10 01/11/2017 TURMA: 0040- A HORÁRIO: 4N PIERREDANTASBLOG.WORDPRESS.COM 1/43 Objetivos da Aula Conhecer conceitos de processadores
Leia maisSistemas de Computação
Sistemas de Computação Introdução a programação Assembly Haroldo Gambini Santos Universidade Federal de Ouro Preto - UFOP 5 de novembro de 2009 Haroldo Gambini Santos Sistemas de Computação 1/30 Assembly
Leia maisMicroprocessador Intel 8086
Pontifícia Universidade Católica do Rio Grande do Sul Microprocessador Intel 8086 Disciplina: Arquitetura de Computadores I Professor: Eduardo Augusto Bezerra Alunos: Fabiano Klein Franklin Mota Amormino
Leia maisProf. Gustavo Oliveira Cavalcanti https://sites.google.com/a/poli.br/professorgustavooc/
Sistemas Digitais Prof. Gustavo Oliveira Cavalcanti gustavooc@poli.br https://sites.google.com/a/poli.br/professorgustavooc/ Conteúdo Programático (Organização e Arquitetura) Arquitetura e história dos
Leia maisEXEMPLO DE ARQUITETURAS REAIS INTEL 8086 AULA 07 Arquitetura de Computadores Gil Eduardo de Andrade
EXEMPLO DE ARQUITETURAS REAIS INTEL 8086 AULA 07 Arquitetura de Computadores Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro Princípios Básicos de Arquitetura e Organização de Computadores
Leia maisProf. Adilson Gonzaga
Microprocessadores são Máquinas de Estado Seqüenciais Síncronas que operam mediante a execução de uma seqüência de códigos binários armazenados em memória. Prof. Adilson Gonzaga 1 As ordens ou comandos
Leia maisConjunto de Instruções e Modelos de Arquiteturas
Departamento de Engenharia Elétrica e de Computação EESC-USP SEL-0415 Introdução à Organização de Computadores Conjunto de Instruções e Modelos de Arquiteturas Aula 7 Prof. Marcelo Andrade da Costa Vieira
Leia maisMicroprocessadores CPU. Unidade de Controle. Prof. Henrique
Microprocessadores CPU Unidade de Controle Prof. Henrique Roteiro Registradores; Unidade de Controle Níveis de Complexidade Introdução Um sistema microprocessado conta com diversos dispositivos para um
Leia maisULA. Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade.
PROCESSADOR ULA Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade. ULA Uma ULA típica pode realizar as operações artiméticas: - adição; - subtração; E lógicas: - comparação
Leia maisConjunto de Instruções e Modelos de Arquiteturas
Departamento de Engenharia Elétrica e de Computação EESC-USP SEL-0415 Introdução à Organização de Computadores Conjunto de Instruções e Modelos de Arquiteturas Aula 7 Prof. Marcelo Andrade da Costa Vieira
Leia mais14/3/2016. Prof. Evandro L. L. Rodrigues
SEL 433 APLICAÇÕES DE MICROPROCESSADORES I SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Prof. Evandro L. L. Rodrigues Tópicos do curso Conceitos básicos - Aplicações e utilizações dos microcontroladores
Leia maisAlgoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas Aula Tópico 2 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para o compilador
Leia maisSistemas de Computação para Controle e Automação CIC132. Assembly. Assembly. Notas. Décima quarta aula: Introdução a programação Assembly
Sistemas de Computação para Controle e Automação CIC132 Décima quarta aula: Introdução a programação Assembly Haroldo Gambini Santos Universidade Federal de Ouro Preto - UFOP 5 de novembro de 2009 Haroldo
Leia maisINSTRUÇÕES DE TRANSFERÊNCIA
INSTRUÇÕES DE TRANSFERÊNCIA Transferência de dados MOV destino, fonte move fonte para destino (byte, word ou double word) PUSH fonte coloca fonte na pilha (word ou double word) POP destino retira topo
Leia maisProgramação de Microcontroladores II
Programação de Microcontroladores II L.M.S. e P.S.C. / 2001 (revisão) E.T.M./2003 (revisão) E.T.M./2011 (revisão) E.T.M./2012 (revisão) RESUMO Nesta experiência, dando continuidade à experiência anterior,
Leia maisTodo processador é constituído de circuitos capazes de realizar algumas operações primitivas:
Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas: Somar e subtrair Mover um dado de um local de armazenamento para outro Transferir um dado para um dispositivo
Leia maisSEL-433 APLICAÇÕES DE MICROPROCESSADORES I
SEL 433 APLICAÇÕES DE MICROPROCESSADORES I SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Apresentação do curso Critério de avaliação Média final = 0.8 * MP + 0.2 * ME onde MP = (P1 + P2) / 2 e ME = Notas
Leia maisNEANDERWIN. Algumas características do processador Neander são:
NEANDERWIN O NeanderWin é um simulador da máquina Neander, definida no livro do Raul F. Weber (UFRGS), Fundamentos de Arquitetura de Computadores, Ed. Sagra Luzzatto. A máquina original foi estendida aqui
Leia maisCONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)
CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP) 1 LINGUAGENS Constituída de seqüência de zeros (0) e uns (1) Cada instrução em ASSEMBLY constitui-se em um mnemônico (uma forma fácil de se lembra) de uma
Leia maisWilliam Stallings Arquitetura e Organização de Computadores 8 a Edição
William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 11 Conjuntos de instruções: Modos de endereçamento e formatos slide 1 Diagrama do endereçamento imediato Instrução Opcode
Leia maisIntrodução à Organização de Computadores. Aula 8
SEL-0415 Introdução à Organização de Computadores Set de Instruções Modelos de Arquiteturas Aula 8 Prof. Dr. Marcelo Andrade da Costa Vieira INSTRUÇÕES n Padrão de código binário armazenado em um dispositivo
Leia maisOrganização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores
Ciência da Computação Arq. e Org. de Computadores Processadores Prof. Sergio Ribeiro Composição básica de um computador eletrônico digital: Processador Memória Memória Principal Memória Secundária Dispositivos
Leia maisLinguagem de Montagem Assembly
Linguagem de Montagem Assembly Especificações O programa em Assembly Fica sobre a camada do Sistema Operacional Efetua chamadas ao Sistema Operacional O montador Chama-se Assembler Traduz a linguagem de
Leia maisOTermo Assembly significa montagem, ou seja, linguagem
Linguagem Assembly Roteiro N o 01 Fundação Universidade Federal de Rondônia, Núcleo de Ciência e Tecnologia, Departamento de Engenharia - DEE Curso de Bacharelado em Engenharia Elétrica - Disciplina de
Leia maisA linguagem ASSEMBLY
A linguagem ASSEMBLY Assembly é uma linguagem de baixo nível, chamada freqüentemente de linguagem de montagem É uma linguagem considerada difícil, principalmente porque o programador precisa conhecer a
Leia maisUnidade de Controle. UC - Introdução
Unidade de Controle Prof. Alexandre Beletti (Cap. 3 Weber, Cap.8 Monteiro, Cap. 10,11 Stallings) UC - Introdução Para gerenciar o fluxo interno de dados e o instante em que ocorrem as transferências entre
Leia maisCONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)
CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP) 1 LINGUAGENS Conhecida pelo PROCESSADOR Conhecida pelo Usuário COMPILADOR LINGUAGEM DE ALTO NÍVEL LINGUAGEM ASSEMBLY 2 INSTRUÇÕES EM ASSEMBLY Para programar
Leia maisArquitectura de Computadores
Arquitectura de Computadores Exemplos de Microprogramação (12.3); Família Intel x86 José Monteiro Licenciatura em Engenharia Informática e de Computadores Departamento de Engenharia Informática (DEI) Instituto
Leia maisLISTA 02 CONJUNTO DE INSTRUÇÕES - GABARITO
LISTA 02 CONJUNTO DE INSTRUÇÕES - GABARITO 1) Identifique na instrução em linguagem de máquina armazenada na memória, os elementos da instrução 2) Na figura acima, qual a quantidade de código de operações
Leia maisConjunto de Instruções do 8051
Apêndice B Conjunto de Instruções do 8051 A.G. e E.T.M. / 2001 (revisão) O 8051 apresenta 111 tipos de instruções, sendo 49 de um byte, 45 de dois bytes e 17 de três bytes. Levando-se em contas as variações
Leia maisA arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.
A arquitectura IA32 A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. Tamanho da palavra Número de registos visíveis Número de operandos Endereçamento
Leia maisNeander - características
NEANDER x RAMSES (Ou porque da necessidade de upgrade :-) Texto original: ftp://ftp.inf.ufrgs.br/pub/inf108/ramses-instrucoes.ppt Neander - características Largura de dados e endereços de 8 bits Dados
Leia maisEvolução dos computadores
A máquina de Von Neumann AOC: Arquitetura e Organização de Computadores Evolução dos computadores Caracterizado: Aumento da velocidade dos processadores Diminuição do tamanho dos componentes Aumento da
Leia maisArquitetura de Computadores I
Arquitetura de Computadores I Aritmética Computacional - Inteiros - Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário A unidade lógico-aritmética Representação de números inteiros
Leia maisSímbolos e abreviaturas utilizadas na descrição das instruções
Símbolos e abreviaturas utilizadas na descrição das instruções acumulador registo A addr endereço de 16 bits data quantidade de 8 bits data 16 quantidade de 16 bits byte 2 segundo byte da instrução byte
Leia maisELETRÔNICA DIGITAL II. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR
ELETRÔNICA DIGITAL II AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR acjunior@facthus.edu.br 1º SEMESTRE 2009 CONTEÚDO PROGRAMADO: 1 O que é um computador digital? 2 Como funcionam os computadores 3 O agente
Leia maisAlgoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4
Algoritmos e Estruturas de Dados I (DCC/003) 2013/1 Estruturas Básicas Aula Tópico 4 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para
Leia maisção de Computadores I
Universidade Federal de Pelotas Instituto de Física e Matemática Departamento de Informática Bacharelado em Ciência da Computação Arquitetura e Organizaçã ção de Computadores I Aula 2 1. Projeto da Arquitetura
Leia maisHistórico de desenvolvimento de computadores Prof. Luís Caldas Aula 02 Processador de uso geral
Processador de uso geral 1. Introdução: Um sistema digital completo é constituído de uma unidade controle e o bloco operacional. Na figura a seguir alguns elementos externos necessários para completar
Leia maisSEL-614 MICROPROCESSADORES E APLICAÇÕES. Adilson Gonzaga
SEL-614 MICROPROCESSADORES E APLICAÇÕES Prof: Adilson Gonzaga HISTÓRICO Microprocessador Circuito integrado ( chip ) capaz de executar instruções. 1971 Intel Corporation lançou no mercado o microprocessador
Leia maisEstrutura Básica de um Computador
SEL-0415 Introdução à Organização de Computadores Estrutura Básica de um Computador Aula 2 Prof. Dr. Marcelo Andrade da Costa Vieira INTRODUÇÃO n Organização Æ implementação do hardware, componentes, construção
Leia maisTrabalhos Práticos Arquitetura de Computadores I Prof. Fabian Vargas
Trabalhos Práticos Arquitetura de Computadores I Prof. Fabian Vargas Material a ser utilizado: Kits de desenvolvimento de sistemas microprocessados para aplicações em DSP Texas DSK-TMS320C67xx. Apresentação
Leia maisConjunto de Instruções. Alisson Brito
Conjunto de Instruções Alisson Brito 1 1 O que é o Conjunto de Instruções? Instruction Set Architecture (ISA) Interface entre Programas e CPU A coleção completa de instruções reconhecidas pela CPU Programas
Leia maisPara facilitar o entendimento das rotinas escritas em assembly, apresentadas em aula, estudar as seguintes instruções da linguagem assembly:
FATEC-SP - Análise e Desenvolv. De Sistemas - Ambiente Operacional PÁG. 1 Para facilitar o entendimento das rotinas escritas em assembly, apresentadas em aula, estudar as seguintes instruções da linguagem
Leia maisArquitetura de Computadores. Ciclo de Busca e Execução
Arquitetura de Computadores Ciclo de Busca e Execução Ciclo de Busca e Execução Início Buscar a próxima instrução Interpretar a instrução Executar a instrução Término Funções realizadas pela UCP Funções
Leia maisPCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca
PCS-2529 Introdução aos Processadores Prof. Dr. Paulo Sérgio Cugnasca 1 2 Existem 4 esquemas diferentes de E/S possíveis, cada um se aplicando em uma determinada situação. E/S Programada. E/S Acionada
Leia maisConjunto de Instruções (ISA) I
Conjunto de Instruções (ISA) I José Costa Introdução à Arquitetura de Computadores Departamento de Engenharia Informática (DEI) Instituto Superior Técnico 2013-10-16 José Costa (DEI/IST) Conjunto de Instruções
Leia maisUNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES
Tecnologia da informação e comunicação UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES ESSA APRESENTAÇÃO POSSUI QRCODE PARA ACESSAR INFORMAÇÕES ADICIONAIS AOS SLIDES. Código QR Reader Código QR INTRODUÇÃO
Leia maisArquitetura e Organização de Computadores
Arquitetura e Organização de Computadores Unidade Central de Processamento (CPU) Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br Baseado nos slides do capítulo
Leia maisProf. Leonardo Augusto Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 2 Estrutura de um processador Prof. Leonardo Augusto Casillo Arquitetura de Von Neumann: Conceito de programa armazenado; Dados
Leia maisNível do Conjunto de Instruções Prof. Edson Pedro Ferlin
1 Definições Nível ISA (Instruction Set Architecture). Está posicionado entre o nível da microarquitetura e o nível do sistema operacional. É a interface entre o software e o hardware. Nesse nível está
Leia maisProcessador. Processador
Departamento de Ciência da Computação - UFF Processador Processador Prof. Prof.Marcos MarcosGuerine Guerine mguerine@ic.uff.br mguerine@ic.uff.br 1 Processador Organização básica de um computador: 2 Processador
Leia maissumário 1 bases numéricas 1 2 sistemas de numeração em computação introdução representação de números... 3
sumário 1 bases numéricas 1 1.1 introdução... 2 1.2 representação de números... 3 1.3 transformação entre bases... 4 1.3.1 método polinomial...4 1.3.2 método de subtrações...5 1.3.3 método das divisões...6
Leia maisArquitetura do 8086/8088
Arquitetura do 8086/8088 Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica Copyright (c) Walter Fetter Lages p.1 Introdução
Leia maisUNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES
UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES ESSA APRESENTAÇÃO POSSUI QRCODE PARA ACESSAR INFORMAÇÕES ADICIONAIS AOS SLIDES. Código QR Reader Código QR INTRODUÇÃO A ARQUITETURA DE COMPUTADORES Qual
Leia maisIntrodução à Computação: Arquitetura von Neumann
Introdução à Computação: Arquitetura von Neumann Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,
Leia maisProf. Leonardo Augusto Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 1 Conceitos necessários Prof. Leonardo Augusto Casillo Sistema de numeração: conjunto de regras que nos permite escrever e ler
Leia mais