Baixe o app para aproveitar ainda mais
Prévia do material em texto
ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 11 ASSEMBLER para Mainframes IBM Prof. Alberto Romano Schiesari (1a edição: 1974; última revisão:Julho/2009) http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 22 SUMÁRIO 1. Introdução.................................................................................................................................................................................................. 7 1-1 A Linguagem Assembler ..................................................................................................................................................................... 7 1-2 Revisão dos Sistemas de Numeração Binário e Hexadecimal ............................................................................................................. 7 1-2-1 Conversões ................................................................................................................................................................................... 8 1-2-1-1 Conversão de decimal para binário ....................................................................................................................................... 8 1-2-1-2 Conversão de decimal para hexadecimal ............................................................................................................................ 10 1-2-1-3 Conversão de binário para hexadecimal.............................................................................................................................. 11 1-2-1-4 Conversão de hexadecimal para binário.............................................................................................................................. 12 1-2-1-5 Conversão de binário para decimal ..................................................................................................................................... 13 1-2-1-6 Conversão de hexadecimal para decimal ............................................................................................................................ 14 1-2-2 Operações aritméticas ................................................................................................................................................................ 15 1-2-2-1 Soma em binário ................................................................................................................................................................. 15 1-2-2-2 Subtração em binário .......................................................................................................................................................... 16 1-2-2-3 Soma em hexadecimal......................................................................................................................................................... 17 1-2-2-4 Subtração em hexadecimal.................................................................................................................................................. 18 1-3. Arquitetura de Mainframes IBM ...................................................................................................................................................... 19 1-3-1 Visão Geral ................................................................................................................................................................................ 19 1-3-2 Endereçamento ........................................................................................................................................................................... 22 BASE + DESLOCAMENTO........................................................................................................................................................... 22 INDEXADOR + BASE + DESLOCAMENTO............................................................................................................................... 23 Deslocamento máximo; uso de bases............................................................................................................................................... 24 Carga de registradores base ................................................................................................................................................................. 26 1-3-3 Representação de Dados............................................................................................................................................................. 29 1-3-3-1 Formato binário de ponto fixo............................................................................................................................................. 29 1-3-3-2 Formato decimal zonado..................................................................................................................................................... 30 1-3-3-3 Formato decimal compactado ............................................................................................................................................. 30 1-3-3-4 Formato caracter (padrão EBCDIC) ................................................................................................................................... 30 1-3-4 Representação de Instruções ...................................................................................................................................................... 31 RR - 2 bytes .................................................................................................................................................................................... 31 E - 2 bytes ...................................................................................................................................................................................... 31 QST - 4 bytes ................................................................................................................................................................................... 31 QV - 4 bytes.................................................................................................................................................................................... 31 RRE - 4 bytes................................................................................................................................................................................... 31 RS - 4 bytes..................................................................................................................................................................................... 31 RX - 4 bytes .................................................................................................................................................................................... 31 S - 4 bytes ...................................................................................................................................................................................... 31 SI - 4 bytes ...................................................................................................................................................................................... 31 VR - 4 bytes .................................................................................................................................................................................... 32 VS - 4 bytes..................................................................................................................................................................................... 32 VST - 4 bytes ................................................................................................................................................................................... 32 VV - 4 bytes.................................................................................................................................................................................... 32RSE - 6 bytes ................................................................................................................................................................................... 32 SS - 6 bytes ..................................................................................................................................................................................... 32 SSE - 6 bytes.................................................................................................................................................................................... 32 2. Montador Assembler e Especificação de Elementos ............................................................................................................................... 37 2-1. Introdução......................................................................................................................................................................................... 37 2-1-1 O Montador Assembler .............................................................................................................................................................. 37 2-1-2 O Statement Assembler .............................................................................................................................................................. 39 2-2. Símbolo ............................................................................................................................................................................................ 39 2-3. Código de Instrução.......................................................................................................................................................................... 40 2-3-1 Instruções ao Montador.............................................................................................................................................................. 40 2-3-2 Instruções de Máquina ............................................................................................................................................................... 40 2-3-3 Macro-Instruções........................................................................................................................................................................ 40 2-4. Operandos e Comentários................................................................................................................................................................. 40 2-4-1 Operandos em Registrador ......................................................................................................................................................... 40 2-4-2 Operandos em Memória ............................................................................................................................................................. 41 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 33 2-4-2-1 Termos de Expressões......................................................................................................................................................... 41 2-4-2-2 Expressões para referência de Operandos........................................................................................................................... 42 2-5. Continuação de Statements............................................................................................................................................................... 44 2-6. Identificação e Sequência de Statements .......................................................................................................................................... 44 3. Instruções ao Montador Assembler.......................................................................................................................................................... 45 3-1. Instruções para definição de áreas .................................................................................................................................................... 45 DC (Define Constant - Definir Constante)........................................................................................................................................... 45 TABELA DE CONSTANTES......................................................................................................................................................... 46 DC tipo C......................................................................................................................................................................................... 47 DC tipo X......................................................................................................................................................................................... 47 DC tipo B......................................................................................................................................................................................... 47 DC tipo F ......................................................................................................................................................................................... 48 DC tipo H......................................................................................................................................................................................... 48 DC tipo P ......................................................................................................................................................................................... 48 DC tipo Z ......................................................................................................................................................................................... 48 DC tipo A......................................................................................................................................................................................... 49 DC tipo Y......................................................................................................................................................................................... 50 DC tipo S ......................................................................................................................................................................................... 50 DC tipo V......................................................................................................................................................................................... 50 DC tipo Q......................................................................................................................................................................................... 50 DS (Define Storage - Definir Memória) .............................................................................................................................................. 51 3-2. Literais.............................................................................................................................................................................................. 52 3-3. Outras instruções ao montador ......................................................................................................................................................... 53 CCW ou CCW0 (Channel Command Word - Palavra de Comando de Canal).................................................................................... 53 CCW1 (Channel Command Word - Palavra de Comando de Canal)................................................................................................... 54 START (Começo)................................................................................................................................................................................ 55 CSECT (Control Section - Seção deControle).................................................................................................................................... 55 DSECT (Dummy Section - Seção Simulada)....................................................................................................................................... 56 DXD (Define External Dummy Section - Definir Dummy Section Externa)....................................................................................... 56 CXD..................................................................................................................................................................................................... 57 COM (Blank Common Control Section - Seção de Controle Branca Comum) ................................................................................... 57 LOCTR (Multiple Location Counters - Múltiplos Contadores de localização) ................................................................................... 58 AMODE (Adressing Mode - Modo de endereçamento) ...................................................................................................................... 59 RMODE (Residence Mode - Modo de residência) .............................................................................................................................. 59 ENTRY (Entrada)................................................................................................................................................................................ 60 EXTRN (External - Externo) ............................................................................................................................................................... 60 WXTRN............................................................................................................................................................................................... 60 USING (Usando) ................................................................................................................................................................................. 61 DROP (Por de lado, Deixar) ................................................................................................................................................................ 61 TITLE (Título)..................................................................................................................................................................................... 62 EJECT (Ejetar) .................................................................................................................................................................................... 62 SPACE (Espaço).................................................................................................................................................................................. 62 PRINT (Impressão).............................................................................................................................................................................. 63 ICTL (Input Control - Controle de Entrada) ........................................................................................................................................ 63 ISEQ (Input Sequence - Sequência de Entrada)................................................................................................................................... 64 PUNCH (Perfure) ................................................................................................................................................................................ 64 REPRO (Reproduza) ........................................................................................................................................................................... 64 ORG..................................................................................................................................................................................................... 65 EQU (Equate - Igualar)........................................................................................................................................................................ 65 OPSYN (Operation Code Synonim - Sinônimo para código de operação).......................................................................................... 66 PUSH (Empurrar) ................................................................................................................................................................................ 66 POP...................................................................................................................................................................................................... 66 LTORG................................................................................................................................................................................................ 66 CNOP (Conditional Nop - Nop Condicional)...................................................................................................................................... 67 COPY (Copiar) .................................................................................................................................................................................... 67 END (Fim) ........................................................................................................................................................................................... 67 4. Instruções de Máquina ............................................................................................................................................................................. 71 4-1. Instruções de movimento de memória para memória ....................................................................................................................... 73 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 44 MVC (Move Character - Movimentar Caracteres) .............................................................................................................................. 73 MVZ (Move Zones – Movimentar Zonas)........................................................................................................................................... 74 MVN (Move Numerics - Movimentar Numéricos).............................................................................................................................. 74 MVI (Move Immediate - Movimentar Imediato)................................................................................................................................. 75 MVO (Move with Offset – Movimetar com deslocamento) ................................................................................................................ 76 ZAP (Zero and Add Packed – Zerar e Somar em Compactado) .......................................................................................................... 77 MVCL (Move Long – Mover [campo] Longo) ................................................................................................................................... 78 PACK (Compactar).............................................................................................................................................................................. 79 UNPK (Unpack – descompactar)......................................................................................................................................................... 80 MVCIN (Move Inverse – Mover invertido)......................................................................................................................................... 81 4-2. Instruções aritméticas com campos compactados.............................................................................................................................82 AP (Add Packed – Somar em compactado) ......................................................................................................................................... 82 SP (Subtract Packed – Subtrair em compactado)................................................................................................................................. 83 MP (Multiply Packed – Multiplicar em compactado).......................................................................................................................... 84 DP (Divide Packed – Dividir em compactado).................................................................................................................................... 84 SRP (Shift and Round Packed – Deslocar e arredondar compactado)................................................................................................. 85 4-3. Instruções de comparação................................................................................................................................................................. 86 CP (Compare Packed – Comparar em compactado) ............................................................................................................................ 86 CLC (Compare Logical Character – Comparar Caracteres Logicamente)........................................................................................... 86 CLI (Compare Logical Immediate - Comparar Logicamente com Operando Imediato)...................................................................... 86 CLCL (Compare Logocal Character Long – Comparar Logicamente campos longos) ....................................................................... 87 C (Compare) ........................................................................................................................................................................................ 88 CH (Compare Halfword) ..................................................................................................................................................................... 88 CL (Compare Logical – Compare Logicamente)................................................................................................................................. 89 CLM (Compare Logical Characters Under Mask - Comparar campos lógicamente, sob máscara) ..................................................... 89 CR (Compare Register – Comparar Registradores) ............................................................................................................................. 90 CLR (Compare Logical Register – Comparar Registradores Logicamente) ........................................................................................ 90 4-4. Instruções de desvio ......................................................................................................................................................................... 91 4-4-1 Introdução e mnemônicos........................................................................................................................................................... 91 4-4-2 Instruções de desvio condicional e incondicional ...................................................................................................................... 93 BC (Branch on Condition – Desviar na Condição).............................................................................................................................. 93 BCR (Branch on Condition Register – Desviar [para endereço de registrador] na Condição) ............................................................ 93 4-5. Instruções de controle de loop .......................................................................................................................................................... 94 BCT (Branch on Count – Desvie na condição [de contagem] testada) ................................................................................................ 94 BCTR (Branch on Count Register – Desvie na condição [de contagem] testada para [endereço contido em] registrador) ................ 94 BXH (Branch on Index High – Desvie se o Índice for Maior) ............................................................................................................ 95 BXLE (Branch on Index Low or Equal – Desvie se o Índice for Menor ou Igual).............................................................................. 96 4-6. Instruções de edição ......................................................................................................................................................................... 97 ED (Edit – Editar)................................................................................................................................................................................ 97 EDMK (Edit and Mark – Editar e Marcar) .......................................................................................................................................... 98 4-7. Instruções de tradução e teste de bytes ............................................................................................................................................. 99 TR (Translate – Traduzir) .................................................................................................................................................................... 99 TRT (Translate and Test – Traduzir e Testar) ................................................................................................................................... 100 4-8. Shift (deslocamento de bits) em registradores ................................................................................................................................ 101 SLL (Shift Left Logical – Deslocamento Simples Lógico à esquerda) .............................................................................................. 101 SRL (Shift Right Logical – Deslocamento Simples Lógico à direita)................................................................................................ 101 SLDL (Shift Left Double Logical – Deslocamento Duplo Lógico à esquerda) ................................................................................. 102 SRDL (Shift Right Double Logical – Deslocamento Duplo Lógico à direita)................................................................................... 102 SLA (Shift Left Algebraic – Deslocamento Simples Algébrico à esquerda) ..................................................................................... 103 SRA (Shift Right Algebraic – Deslocamento Simples Algébrico à direita) ....................................................................................... 103 SLDA (Shift Left Double Algebraic – Deslocamento Duplo Algébrico à esquerda)......................................................................... 104 SRDA (Shift Right Double Algebraic – Deslocamento Duplo Algébrico à direita) .......................................................................... 104 4-9. Instruções de álgebra booleana....................................................................................................................................................... 105 N (And – E) ....................................................................................................................................................................................... 105 O (Or – Ou)........................................................................................................................................................................................ 106 X (Exclusive Or – Ou exclusivo) ....................................................................................................................................................... 106 NR (And Register – E entre registradores) ........................................................................................................................................ 107 OR (Or Register– Ou entre registradores) ........................................................................................................................................ 107 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 55 XR (Exclusive or Register – Ou exclusivo entre registradores)......................................................................................................... 107 NI (And Immediate – E [com operando] imediato) ........................................................................................................................... 108 OI (Or Immediate – Ou [com operando] imediato) ........................................................................................................................... 108 XI (Exclusive Or Immediate – Ou exclusivo [com operando] imediato)........................................................................................... 108 NC (And Character – E entre campos com caracteres)...................................................................................................................... 109 OC (Or Character – Ou entre campos com caracteres) ...................................................................................................................... 109 XC (Exclusive Or Character – Ou exclusivo entre campos com caracteres) ..................................................................................... 109 4-10. Instruções de carga e desvio ......................................................................................................................................................... 110 BALR (Branch and Link Register – Desviar e ligar via registrador) ................................................................................................. 110 BAL (Branch and Link – Desviar e ligar).......................................................................................................................................... 111 BAS (Branch and Save – Desviar e salvar) ....................................................................................................................................... 112 BASR (Branch and Save Register – Desviar para endereço em registrador e salvar)........................................................................ 113 BASSM (Branch and Save and Set Mode – Desviar, salvar e posicionar modo) .............................................................................. 114 BSM (Branch and Set Mode – Desviar e posicionar modo) .............................................................................................................. 115 4-11. Instruções de movimento de dados de registrador para memória ................................................................................................. 116 ST (Store – Armazenar)..................................................................................................................................................................... 116 STH (Store Halfword – Armazenar halfword)................................................................................................................................... 116 STM (Store Multiple – Armazenar Múltiplos) .................................................................................................................................. 117 STC (Store Character – Armazenar um byte) .................................................................................................................................... 117 STCM (Store Characters under Mask – Armazenar caracteres por máscara) .................................................................................... 118 CVD (Convert to decimal – Converter [de binário] para [decimal] compactado) ............................................................................. 118 4-12. Instruções de movimento de dados de campo de memória para registrador................................................................................. 119 L (Load – Carregar) ........................................................................................................................................................................... 119 LH (Load Halfword – Carregar halfword)......................................................................................................................................... 119 LM (Load Multiple – Carregar Múltiplos)......................................................................................................................................... 120 IC (Insert Character – Inserir Byte) ................................................................................................................................................... 120 ICM (Insert Character under Mask – Inserir bytes sob máscara)....................................................................................................... 121 CVB (Convert to binary – Converter [de compactado] para binário) ................................................................................................ 121 4-13. Instruções de movimento de dados de registrador para registrador .............................................................................................. 122 LR (Load Register – Carregar registrador) ........................................................................................................................................ 122 LPR (Load Positive Register – Carregar registrador positivo) .......................................................................................................... 122 LNR (Load Negative Register – Carregar registrador negativo) ....................................................................................................... 123 LCR (Load Complement Register – Carregar o complemento do registrador).................................................................................. 123 LTR (Load and test Register – Carregar e testar registrador) ............................................................................................................ 124 4-14. Operações aritméticas entre registradores .................................................................................................................................... 125 AR (Add Register – Somar registradores) ......................................................................................................................................... 125 SR (Subtract Register – Subtrair registradores) ................................................................................................................................. 125 MR (Multiply Register – Multiplicar registradores) .......................................................................................................................... 126 DR (Divide Register – Dividir registradores) .................................................................................................................................... 126 ALR (Add Logical Register – Somar registradores logicamente)...................................................................................................... 127 SLR (Subtract Logical Register – Subtrair registradores logicamente) ............................................................................................. 127 4-15. Operações aritméticas entre registradores e campos de memória................................................................................................. 128 A (Add – Somar)................................................................................................................................................................................ 128 S (Subtract – Subtrair) ....................................................................................................................................................................... 128 M (Multiply – Multiplicar) ................................................................................................................................................................129 D (Divide – Dividir) .......................................................................................................................................................................... 129 AH (Add Halfword – Somar hafword) .............................................................................................................................................. 130 SH (Subtract Halfword – Subtrair hafword) ...................................................................................................................................... 130 MH (Multiply Halfword – Multiplicar hafword) ............................................................................................................................... 131 AL (Add Logical – Somar logicamente)............................................................................................................................................ 131 SL (Subtract Logical – Subtrair logicamente).................................................................................................................................... 132 4-16. Outras instruções .......................................................................................................................................................................... 133 LA (Load Address – Carregar Endereço) .......................................................................................................................................... 133 TM (Test Under Mask – Testar com máscara) .................................................................................................................................. 133 EX (Execute) ..................................................................................................................................................................................... 134 SVC (Supervisor Call – Chamada ao Supervisor) ............................................................................................................................. 134 MC (Monitor Call – Chamada do monitor) ....................................................................................................................................... 135 SPM (Set Program Mask – estabelecer máscara de programa).......................................................................................................... 135 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 66 IPM (Insert Program Mask – inserir máscara de programa) .............................................................................................................. 135 STCK (Store clock – armazenar clock) ............................................................................................................................................. 136 TS (Test and Set – Testar e posicionar) ............................................................................................................................................. 136 CS (Compare and Swap – Comparar e Trocar) ................................................................................................................................. 136 CDS (Compare Double and Swap – Comparar double e Trocar) ...................................................................................................... 137 5. Macro-Instruções ................................................................................................................................................................................... 138 5-1. Introdução....................................................................................................................................................................................... 138 5-2. Símbolos variáveis e de sequência.................................................................................................................................................. 139 5-3. Expressões ...................................................................................................................................................................................... 142 5-4. Variáveis de montagem : declaração e atribuição de conteúdo ...................................................................................................... 143 5-5. ANOP, MNOTE e AREAD............................................................................................................................................................ 145 ANOP.............................................................................................................................................................................................. 145 MNOTE ........................................................................................................................................................................................... 145 5-6. MHELP .......................................................................................................................................................................................... 147 5-7. Desvios - AGO, ACTR E AIF........................................................................................................................................................148 5-8. Parâmetros posicionais e keyword.................................................................................................................................................. 149 5-9. Funcionamento das macros - exemplos .......................................................................................................................................... 151 5-9-1 Macro sem símbolo e sem parâmetros...................................................................................................................................... 151 5-9-2 Macro com símbolo fixo e sem parâmetros.............................................................................................................................. 151 5-9-3 Macro com símbolo variável e sem parâmetros ....................................................................................................................... 152 5-9-4 Macro com símbolo variável e com 1 parâmetro posicional .................................................................................................... 152 5-9-5 Macro com símbolo variável e com 2 parâmetros posicionais ................................................................................................. 153 5-9-6 Macro com símbolo variável e com 1 parâmetro keyword (sem default)................................................................................. 153 5-9-7 Macro com símbolo variável e com 1 parâmetro keyword (com default) ................................................................................ 154 5-9-8 Macro com símbolo variável e com 2 parâmetros keyword (sem default) ............................................................................... 154 5-9-9 Macro com símbolo variável e com 2 parâmetros keyword (com default)............................................................................... 155 A P E N D I C E S ............................................................................................................................................................................. 156 APÊNDICE A - Instruções (ordem alfabética de mnemônico e ordem código de instrução)................................................................ 157 APÊNDICE B - Tabelas de potências de 2 e 16 .................................................................................................................................... 168 APÊNDICE C - Caracteres EBCDIC .................................................................................................................................................... 170 APÊNDICE D - Caracteres ASCII ........................................................................................................................................................171 APÊNDICE E – Caracteres de controle de impressão........................................................................................................................... 172 APÊNDICE F - Interrupções por erro de programa............................................................................................................................... 173 APÊNDICE G - Truques úteis a programas Assembler......................................................................................................................... 174 APÊNDICE H – Exemplos de macro instruções MVS.......................................................................................................................... 176 APÊNDICE I - Exemplo de programa MVS ......................................................................................................................................... 177 APÊNDICE J – Exemplos de macro Instruções VSE............................................................................................................................ 178 APÊNDICE K - Exemplo de programa VSE......................................................................................................................................... 179 APÊNDICE L – Exemplo de macro instruções VM.............................................................................................................................. 180 APÊNDICE M - Exemplo de programa VM ......................................................................................................................................... 181 APÊNDICE N - Macro instruções XEGUEI e TCHAU........................................................................................................................ 182 APÊNDICE O - Exemplo de Subrotina ................................................................................................................................................. 186 APÊNDICE P - Exemplo 2 de subrotina ............................................................................................................................................... 187 APÊNDICE Q - Montagem de programa de demonstração 1................................................................................................................ 189 APÊNDICE R - Montagem de programa de demonstração 2 ................................................................................................................ 202 EXERCíCIOS PROPOSTOS .................................................................................................................................................................... 213 EXERCÍCIOS RESOLVIDOS .................................................................................................................................................................. 228 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 77 1. Introdução 1-1 A Linguagem Assembler Convém observar que, como toda linguagem Assembler, esta, para poder ser melhor compreendida e utilizada em seu pleno potencial, exige o conhecimento da arquitetura do equipamento no qual ela é utilizada. Uma revisão nos conceitos e princípios básicos da arquitetura IBM é fundamental para o acompanhamento deste curso, recomendando-se a leitura do Principles of Operation do equipamento. 1-2 Revisão dos Sistemas de Numeração Binário e Hexadecimal A base do sistema de numeração binário é 2. Ele possui 2 algarismos, cujos símbolos gráficos são o 0 e o 1. Cada algarismo tem seu valor dependendo da posição que ocupa no número. A base do sistema de numeração hexadecimal é 16. Ele possui 16 algarismos, cujos símbolos gráficos são: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F. Cada algarismo tem seu valor dependendo da posição que ocupa no número. TABELA BÁSICA DE EQUIVALÊNCIA DECIMAL HEXA BINÁRIO DECIMAL HEXA BINÁRIO 0 0 0000 8 8 1000 1 1 0001 9 9 1001 2 2 0010 10 A 1010 3 3 0011 11 B 1011 4 4 0100 12 C 1100 5 5 0101 13 D 1101 6 6 0110 14 E 1110 7 7 0111 15 F 1111 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 88 1-2-1 Conversões 1-2-1-1 Conversão de decimal para binário Dividir o número decimal desejado por 2 e "guardar" o resto (que só pode ser 0 ou 1); o cociente dessa divisão deve ser calculado somente em sua parte inteira, e deve-se dividi-lo por 2, "guardando" o resto, e assim por diante, até que o cociente seja zero. Em seguida, os restos devem ser anotados, do último para o primeiro, da esquerda para a direita; o número formado pelos restos transcritos dessa forma, será o número binário equivalente ao decimal que se desejava converter para binário. Exemplo: achar o número binário equivalente ao decimal 154. 154 / 2 = cociente 77 resto 0 77 / 2 = cociente 38 resto 1 38 / 2 = cociente 19 resto 0 19 / 2 = cociente 9 resto 1 9 / 2 = cociente 4 resto 1 4 / 2 = cociente 2 resto 0 2 / 2 = cociente 1 resto 0 1 / 2 = cociente 0 resto 1 Portanto, o número binário 10011010 vale 154 em decimal. Se o número for negativo: Converter o mesmo número decimal positivo para binário, conforme exposto acima Inverter os bits (bit 0 transformar em 1; bit 1 transformar em 0) Somar 1 (ver item 1.2.2.1 – Somar em binário) Preencher com 1’s à esquerda até completar a quantidade de bits do campo desejado (16 se half-word, 32 se full-word ou 32 se double-word) Exemplos: (154)10 = (10011010)2 10011010 invertido : 01100101 somando 1 : + 1 -------- 01100110 completando à esquerda com 1’s para completar 16 bites (half-word): 1111111101100110 Portanto: (-154)10 = (1111111101100110)2 = (FF66)16 (7)10 = (111)2 111 invertido : 000 somando 1 : + 1 -------- 001 completando à esquerda com 1’s para completar 16 bites (half-word): 1111111111111001 Portanto: (-7)10 = (1111111111111001)2 = (FFF9)16 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 99 EXERCÍCIOS PROPOSTOS Converter de decimal para binário: EP001: 987654 EP002: 4095 EP003: 7 EP004: 1023 EP005: 4096 EP006: 255 EP007: 1024 EP008: 10010001 EP009: 256 EP010: 1025 EP011: 999888 EP012: 65432 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 1010 1-2-1-2 Conversão de decimal para hexadecimal Dividir o número decimal desejado por 16 e "guardar" o resto (que só pode ser de 0 a 15); o cociente dessa divisão deve ser calculado somente em sua parte inteira, e deve-se dividi-lo por 16, "guardando" o resto, e assim por diante, até que o cociente seja zero. Em seguida, os restos devem ser anotados, do último para o primeiro, da esquerda para a direita, observando-se que se o resto for 10 deve-se transcrever A, e assim por diante, de acordo com a tabela básica de equivalência colocada na introdução do tópico 1-2; o número formado pelos restos transcritos dessa forma, será o número hexadecimal equivalente ao decimal que se desejava converter para hexadecimal. Exemplo: determinar o número hexadecimal equivalente ao decimal 1234567. 1234567 / 16 = cociente 77160 resto 7 77160 / 16 = cociente 4822 resto 8 4822 / 16 = cociente 301 resto 6 301 / 16 = cociente 18 resto 13 13 / 16 = cociente 0 resto 13 Portanto,DD687 é o número hexadecimal equivalente ao decimal 1234567. EXERCÍCIOS PROPOSTOS Converter de decimal para hexadecimal: EP013: 987654 EP014: 4095 EP015: 7 EP016: 1023 EP017: 4096 EP018: 255 EP019: 1024 EP020: 10010001 EP021: 256 EP022: 1025 EP023: 999888 EP024: 65432 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 1111 1-2-1-3 Conversão de binário para hexadecimal Basta separar o número binário em grupos de 4 algarismos, da direita para a esquerda (completando com zeros à esquerda, o último grupo à esquerda, se for necessário para completar 4 algarismos), e, em seguida, colocar, para cada grupo de 4 algarismos binários, o algarismo hexadecimal equivalente, conforme a tabela básica de equivalência colocada na introdução do tópico 1-2. Exemplo: determinar o número hexadecimal equivalente ao binário 11001101010001010000011. 0110 0110 1010 0010 1000 0011 6 6 A 2 8 3 Portanto, 66A283 é o número hexadecimal equivalente ao binário 11001101010001010000011. EXERCÍCIOS PROPOSTOS Converter de binário para hexadecimal: EP025: 11111000111010100100001 EP026: 1000000111000111111110000011111110 EP027: 1100 EP028: 11111110001 EP029: 1010101010101000110011000111 EP030: 110011001100110011001 EP031: 1000000000000001 EP032: 1000000001 EP033: 111111100000001111111 EP034: 1 EP035: 1100101011111110 EP036: 101011010111000111000000001111110001111 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 1212 1-2-1-4 Conversão de hexadecimal para binário Basta transcrever, para cada algarismo hexadecimal, o grupo de 4 algarismos binários a ele correspondente, conforme a tabela do item anterior. Para o último grupo à esquerda pode-se deixar de transcrever os zeros binários à esquerda não significativos. Exemplo: determinar o número binário correspondente ao hexa 1AB4C. 1 A B 4 C 0001 1010 1011 0100 1100 Portanto, o número binário 11010101101001100 é equivalente ao hexadecimal 1AB4C. EXERCÍCIOS PROPOSTOS Converter de hexadecimal para binário: EP037: CAFE EP038: CDF EP039: 1AB4D EP040: 15 EP041: F EP042: 87B54 EP043: 1001 EP044: 234 EP045: CAD EP046: 7F7 EP047: 1990 EP048: 33 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 1313 1-2-1-5 Conversão de binário para decimal Deve-se efetuar a soma das potências de 2 correspondentes aos algarismos 1 do número binário. Exemplo: determinar o número decimal equivalente ao binário 111001101. 1 . (2**8) = 1 . 256 = 256 1 . (2**7) = 1 . 128 = 128 1 . (2**6) = 1 . 64 = 64 0 . (2**5) = 0 . 32 = 0 0 . (2**4) = 0 . 16 = 0 1 . (2**3) = 1 . 8 = 8 1 . (2**2) = 1 . 4 = 4 0 . (2**1) = 0 . 2 = 0 1 . (2**0) = 1 . 1 = 1 TOTAL 461 Portanto, o número decimal 461 é equivalente ao binário 111001101. EXERCÍCIOS PROPOSTOS Converter de binário para decimal: EP049: 11 EP050: 100001111111 EP051: 101010010101 EP052: 110000001111111 EP053: 11111110000011 EP054: 11110000111000 EP055: 11 EP056: 111111110 EP057: 1111100001111000111001101 EP058: 1000000000000 EP059: 11111001 EP060: 1000000000000001 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 1414 1-2-1-6 Conversão de hexadecimal para decimal Deve-se efetuar a soma das potências de 16 multiplicadas pelo valor decimal do algarismo hexadecimal. Exemplo: determinar o número decimal equivalente ao hexadecimal 1AC5F. 1 . (16**4) = 1 . (16**4) = 1 . 65536 = 65536 A . (16**3) = 10 . (16**3) = 10 . 4096 = 40960 C . (16**2) = 12 . (16**2) = 12 . 256 = 3072 5 . (16**1) = 5 . (16**1) = 5 . 16 = 80 F . (16**0) = 15 . (16**0) = 15 . 1 = 15 TOTAL 109663 Portanto, o número decimal 109663 é equivalente ao hexadecimal 1AC5F. EXERCÍCIOS PROPOSTOS Converter de hexadecimal para decimal: EP061: 11 EP062: AAF45 EP063: 1B567 EP064: 100 EP065: 1000 EP066: FF EP067: FFF EP068: CDF EP069: CAFE EP070: FACA EP071: DAD0 EP072: F1E2D3C4 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 1515 1-2-2 Operações aritméticas 1-2-2-1 Soma em binário Os números devem estar alinhados à direita. Análoga à soma em decimal, observando-se a seguinte "tabuada": 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 e vai 1 para a "casa" da esquerda Exemplos: 11001001 1001111011 111 + 1010 + 110110 + 1 ----------- ------------- ------ 11010011 1010110001 1000 EXERCÍCIOS PROPOSTOS EP073: 11001100 + 10101010 EP074: 1111001111 + 1001111001 EP075: 1111 + 1 EP076: 1111 + 111 EP077: 100001 + 11110 EP078: 1011110011 + 111101111 EP079: 110011001100 + 101011110000 EP080: 1111100001111000 + 101111 EP081: 111 + 1111 + 100 EP082: 11 + 111 + 1111 + 11111 EP083: 1111 + 1001 + 111 + 101 + 11 + 1 EP084: 111 + 1000 + 1 + 1100 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 1616 1-2-2-2 Subtração em binário Os números devem estar alinhados à direita. A subtração é análoga à soma em decimal, observando-se a seguinte "tabuada": 0 - 0 = 0 1 - 0 = 1 1 + 1 = 0 0 - 1 = tira-se 1 da "casa" da esquerda (que fica valendo 1 a menos), e que vem para a "casa" presente valendo 2 Exemplos: 11001001 1001111011 100 100 - 1010 - 110110 - 1 - 1000 ----------- ------------- ------ --------- 10111111 1001000101 11 ...1111100 EXERCÍCIOS PROPOSTOS EP085: 11001100 - 1010101 EP086: 1111001111 - 1111001 EP087: 1111 - 1 EP088: 1111 - 111 EP089: 100001 - 11110 EP090: 1011110011 - 111101111 EP091: 11001100 - 111011110000 EP092: 1111000 + 101010111 EP093: 111 - 1111 EP094: 10001 - 111111 EP095: 0 - 1 EP096: 0 - 10 http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 1717 1-2-2-3 Soma em hexadecimal Os números devem estar alinhados à direita. Análoga à soma em decimal, observando-se que só vai 1 para a "casa" da esquerda quando o resultado da soma de dois algarismos das duas parcelas for maior que 15 (o algarismo resultante deve ser a soma achada - 16). Os resultados de cada "casa" devem ser colocados em algarismos hexadecimais (se for 10, coloca-se A; e assim por diante, até o 15, que coloca-se F). Exemplos: 1AB4 CF55 A2BC89 FFF F0F0 + 123 + 102D + F00F + 4 + CCCC ------- ------- --------- ------- -------- 1BD7 DF82 A3AC98 1003 1BDBC EXERCÍCIOS PROPOSTOS EP097: F12B + 321 EP098: 1100 + 111 EP099: 1000F + F0001 EP100: A9B8C7 + D6E5F4 EP101: CAFE + CDF EP102: B001 + FD EP103: 999 + 111 EP104: 123456 + 789ABC EP105: FFF + EEE EP106: DDD + 333 EP107: 987AED + CF01 EP108: FACA + CAFE http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 1818 1-2-2-4 Subtração em hexadecimal Os números devem estar alinhados à direita. Análoga à subtração em decimal, observando-se que vem 1 da "casa" da esquerda (que fica valendo 1 a menos) quando o algarismo do minuendo for menor que o do subtraendo. Neste caso, o 1 que veio, vem valendo 16, o qual deve ser somado ao algarismo do minuendo, para que o resultado desta adição possa ser subtraído do algarismo do subtraendo, e cujo valor máximo pode ser15. Os resultados de cada "casa" devem ser colocados em algarismos hexadecimais (se for 10, coloca-se A; e assim por diante, até o 15, que coloca-se F). Exemplos: 1AB4 CF55 A2BC89 FFF 0 - 123 - 102D - F00F - 4 - 2 ------- ------- --------- ------- -------- 1991 BF28 A1CC7A FFB ...FFE EXERCÍCIOS PROPOSTOS EP109: F1C5 - 101 EP110: 1AD87C - FDE9 EP111: 112233 - 44556 EP112: AABBCC - DDEEF EP113: F1E2D3 - C4B5A6 EP114: FF00001 - 10000F EP115: CAFE - FACA EP116: CDF - FDC EP117: 10001 - 20001 EP118: 10000 - FFFE EP119: 0 - 9 EP120: 0 - 1A http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 1919 1-3. Arquitetura de Mainframes IBM 1-3-1 Visão Geral Com o lançamento da linha /360, a IBM introduziu o conceito de "família" de equipamentos, onde, com compatibilidade, era possível migrar de um modelo menor para qualquer maior, permitindo que se preservasse os investimentos em hardware (periféricos) e software. O principal criador da arquitetura /360 foi Gene Amdahl (1922-). Gene Amdahl A compatibilidade era fruto de diversos fatores, e um deles era a arquitetura dos equipamentos, igual em todos os modelos (exceção aos modelos com características específicas, como os modelos 44 e o 67). Essa arquitetura era a 360, que evoluiu para a arquitetura 370, que apresentava poucas modificações, a principal delas referente ao uso de memória virtual. A arquitetura 370 evoluiu para a XA (eXtended Architecture), e, desta, para a arquitetura ESA (Extended System Architecture). Vários são os elementos que compõe a arquitetura de um sistema de computação: a capacidade e a forma de endereçamento, a forma de comunicação entre o hardware e o software, o conjunto de instruções, os componentes do(s) processador(es), etc... Alguns desses elementos são: o sistema de interrupções os "clocks" os sub-sistemas de entrada e saída o sistema de proteção de memória o sistema de memória virtual a forma de comunicação entre hardware e software http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 2020 Um sistema mainframe IBM tem, entre outros, os seguintes componentes: Memória: é um componente fundamental, e é constituída por bytes, cada qual com 8 bits. 16 registradores gerais (ou registradores de ponto fixo), cada qual com 4 bytes 16 registradores de controle, cada qual com 4 bytes 4 registradores de ponto flutuante, cada qual com 8 bytes PSW atual : registrador especial com 8 bytes; nela existem dois "campos" importantes: um (com 3 ou 4 bytes e) que contem um endereço (vide item seguinte) que corresponde ao endereço da próxima instrução que deve ser executada, e outro com o CONDITION CODE, com 2 bits, que indica, após a execução de algumas instruções, alguma condição referente à execução da instrução, como por exemplo, o resultado de comparações. LAYOUT DA PSW ATUAL (BC MODE) BYTE 0 BITS 0-5 = máscaras de canal BIT 6 = máscara para canais 6 e acima BIT 7 = máscara externa BYTE 1 BITS 8-11 = chave de proteção BIT 12 = 0 = Basic Control Mode BIT 13 = máscara de machine-check BIT 14 = 1 = estado de wait BIT 15 = 1 = estado de programa problema BYTES 2-3 (BITS 16-31) = Interruption code BYTE 4 BITS 32-33 = ILC = Instruction length code BITS 34-35 = CC = Condition code BITS 36-39 = máscara de programa BYTES 5-7 (BITS 40-63) = Instruction address LAYOUT DA PSW ATUAL (EC MODE) BYTE 0 BIT 0 = 0 BIT 1 = máscara de program-event recording BIT 2 = 0 BIT 3 = 0 BIT 4 = 0 BIT 5 = translation mode BIT 6 = máscara de I/O BIT 7 = máscara externa BYTE 1 BITS 8-11 = chave de proteção BIT 12 = 1 = Extended Control Mode BIT 13 = máscara de machine-check BIT 14 = 1 = estado de wait BIT 15 = 1 = estado de programa problema BYTE 2 BIT 16 = 0 BIT 17 = 0 BITS 18-19 = CC = condition code BITS 20-23 = máscara de programa BIT 20 = máscara de fixed-point overflow BIT 21 = máscara de decimal-overflow BIT 22 = máscara de exponent underflow BIT 23 = máscara de significância BYTE 3 (BITS 24-31) = 00000000 BYTE 4 (BITS 32-39) = 00000000 BYTES 5-7 (BITS 40-63) = Instruction address http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 2121 LAYOUT DA PSW ATUAL (XA MODE) BYTE 0 BIT 0 = 0 BIT 1 = máscara de program-event recording BIT 2-4 = 000 BIT 5 = translation mode BIT 6 = máscara de I/O BIT 7 = máscara externa BYTE 1 BITS 8-11 = chave de proteção BIT 12 = 1 BIT 13 = máscara de machine-check BIT 14 = 1 = estado de wait BIT 15 = 1 = estado de programa problema BYTE 2 BIT 16 = address space mode (junto c/ bit 5) BIT 17 = 0 BITS 18-19 = CC = condition code BITS 20-23 = máscara de programa BIT 20 = máscara de fixed-point overflow BIT 21 = máscara de decimal-overflow BIT 22 = máscara de exponent underflow BIT 23 = máscara de significância BYTE 3 (BITS 24-31) = 00000000 BYTE 4 BIT 32 = 0 = 24 bit addressing = 1 = 31 bit addressing BYTE 4/5/6/7 (BITS 33-63) = Instruction address LAYOUT DA PSW ATUAL (ESA MODE) BYTE 0 BIT 0 = 0 BIT 1 = máscara de program-event recording BIT 2-4 = 000 BIT 5 = translation mode BIT 6 = máscara de I/O BIT 7 = máscara externa BYTE 1 BITS 8-11 = chave de proteção BIT 12 = 1 BIT 13 = máscara de machine-check BIT 14 = 1 = estado de wait BIT 15 = 1 = estado de programa problema BYTE 2 BIT 16-17 = address space control = 00 = Primary space mode (bit 5 = 1) = 01 = Access-register mode (bit 5 = 1) = 10 = Secondary space mode (bit 5 = 1) = 11 = Home space mode (bit 5 = 1) BITS 18-19 = CC = condition code BITS 20-23 = máscara de programa BIT 20 = máscara de fixed-point overflow BIT 21 = máscara de decimal-overflow BIT 22 = máscara de exponent underflow BIT 23 = máscara de significância BYTE 3 (BITS 24-31) = 00000000 BYTE 4 BIT 32 = 0 = 24 bit addressing = 1 = 31 bit addressing BYTE 4/5/6/7 (BITS 33-63) = Instruction address http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 2222 1-3-2 Endereçamento Cada byte de memória tem um número que o identifica e o individualiza. A esse número dá-se o nome de endereço, e é expresso através do sistema de numeração hexadecimal. Para as arquiteturas anteriores à XA, o endereço de um byte era um número hexadecimal de 6 algarismos (24 algarismos binários - 24 bits), variando, portanto, de 000000 até FFFFFF, o que possibilitava referências a endereços até 16MB. A partir da arquitetura XA, o endereço máximo possível é de 31 bits, equivalentes a 8 algarismos hexadecimais menos 1 bit (31 algarismos binários = 31 bits); pode haver, portanto, referências a endereços que vão desde 00000000 até 7FFFFFFF, possibilitando a utilização de até 2 GB. No entanto, para que uma instrução possa fazer referência a endereços de campos de memória com os quais ela trabalhe, e para que isso seja feito de forma mais econômica (se uma instrução precisasse fazer referência a dois endereços de memória de 31 bits, ela precisaria - só para isso - de 62 bits, ou seja, praticamente8 bytes), convencionou-se que as referências a endereços em instruções seriam feitas de forma indireta (Base + Deslocamento ou Base + Deslocamento + Indexador). BASE + DESLOCAMENTO Consiste na citação do número (endereço) de um dos 16 registradores gerais (que são endereçados de 0 a F - por serem 16), além de outro número hexadecimal composto sempre de 3 algarismos. O registrador geral usado com essa finalidade recebe o nome de registrador BASE, e o número hexadecimal complementar recebe o nome de DESLOCAMENTO. O endereço desejado é obtido através da soma entre o número contido no registrador base e o deslocamento. Nas arquiteturas anteriores à XA, o conteúdo do registrador (que tem 4 bytes = 8 algarismos hexadecimais) tem o primeiro byte à esquerda desprezado, e é levado em consideração somente o número formado pelos 3 bytes à direita. Nas outras arquiteturas, o conteúdo do registrador base tem seu primeiro bit à esquerda desprezado, e os 31 bits restantes formam um número que é levado em consideração no cálculo do endereço. Vejamos o seguinte exemplo: Caso uma instrução referencie um endereço na forma BASE + DESLOCAMENTO, onde o registrador base é o registrador geral 12, e o deslocamento é o número C5A, temos que (supondo que o conteúdo do registrador 12 seja 610AB428): Conteúdo do registrador Base = 0AB428 ou 610AB428 Deslocamento = C5A C5A Endereço do campo de memória = 0AC082 610AC082 dependendo da arquitetura utilizada. http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 2323 INDEXADOR + BASE + DESLOCAMENTO que consiste na citação do número (endereço) de dois dos 16 registradores gerais, além do deslocamento. Um dos registradores gerais usado recebe o nome de registrador INDEXADOR, e o outro de registrador BASE; e o número hexadecimal complementar recebe o nome de DESLOCAMENTO. O endereço desejado é obtido através da soma com 3 parcelas: o número contido no registrador indexador, o número contido no registrador base e o deslocamento. Vale aqui as mesmas considerações anteriores relativas ao tratamento do conteúdo do registrador base (24 ou 31 bits) e elas se estendem também ao número contido no registrador indexador. Vejamos o seguinte exemplo: Caso uma instrução referencie um endereço na forma INDEXADOR + BASE + DESLOCAMENTO, em que o registrador indexador é o 8, o registrador base é o registrador 2, e o deslocamento é o número F84, temos que (supondo que o conteúdo do registrador 8 seja 30C0A800 e que o conteúdo do registrador 2 seja 10002800): Conteúdo do registrador indexador = C0A800 ou 30C0A800 Conteúdo do registrador Base = 002800 ou 10002800 Deslocamento = F84 F84 Endereço do campo de memória = C0DF84 ou 40C0DF84 dependendo da arquitetura utilizada. Exemplo de uso: endereçar itens de tabela. Endereço inicial da tabela : Símbolo = TABUFS (transformado pelo montador em base + deslocamento) Endereço do item desejado (8o) = Endereço inicial da tabela + [ tamanho de 1 item * ( quantidade itens – 1) ] = TABUFS + [ 2 * (8 – 1) ] = TABUFS + 2 * 7 = TABUFS + 14 Endereço do item desejado (8o) = Base+deslocamento de TBUFS + Registrador Indexador (ex.: 17C0A = Indexador=1, Base = 7, deslocamento = C0A) Endereço de TABUFS = na instrução, na forma Base + deslocamento (montador coloca); supor Base=7 e deslocamento = X’C0A’ Conteúdo reg. Indexador = registrador 1 (responsabilidade de nosso programa colocar) com conteúdo X’0000000E’ GODFPARNCERSPBMSMTTOSPSCBAAMAC http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 2424 IMPORTANTE : se o registrador base ou o registrador indexador for o registrador 0, o seu conteúdo é desprezado no cálculo do endereço. Exemplos: 1) Registrador indexador = R0; conteúdo = 00345CB9 Registrador base = R7; conteúdo = 00FCD800 Deslocamento = 12A Endereço de memória = 00FCD92A 2) Registrador indexador = R9; conteúdo = 00345CB9 Registrador base = R0; conteúdo = 00FCD800 Deslocamento = 12A Endereço de memória = 00345DE3 3) Registrador indexador = R0; conteúdo = 00345CB9 Registrador base = R0; conteúdo = 00FCD800 Deslocamento = 12A Endereço de memória = 0000012A 4) Registrador base = R0; conteúdo = 00334400 Deslocamento = 123 Endereço de memória = 00000123 5) Registrador base = R9; conteúdo = 00334400 Deslocamento = 123 Endereço de memória = 00334523 Deslocamento máximo; uso de bases Por poder ser representado em 1 byte e meio, o deslocamento máximo é X’FFF’ (4095 bytes). Ou seja: se o registrador base tiver x’00000000’ como conteúdo, ele só consegue ser usado como base para fazer referência aos endereços desde x’00000000’ até x’00000FFF’ (endereçamento base+deslocamento). Se uma instrução precisar endereçar 2 campos na forma base+deslocamento: - um deles com endereço x’00000048’ e outro com endereço x’00001CB0’, na hora em que ela for executada, ela precisa mais do que um registrador base preparado convenientemente. Pode-se, por exemplo, ter o registrador C com o conteúdo x’00000000’, e outro registrador (o D, por exemplo) com o conteúdo x’00001000’. O registrador base C (12) endereça o primeiro campo: Base+deslocamento = C048 = Base C (com conteúdo x’00000000’) + Deslocamento x’048’ O registrador base D (13) endereça o segundo campo Base+deslocamento = DCB0 = Base D (com conteúdo x’00001000’) + Deslocamento x’CB0’ Não há como, em uma única instrução, neste caso, usar só um registrador base. Como o registrador zero não é considerado no cálculo de endereços, pode-se usar no máximo 15 registradores base. Como cada base consegue endereçar 4096 bytes (desde o byte cujo endereço é o valor do registrador base +0 até o byte cujo endereço é o valor do registrador base + X’FFF’). Isso significa que 1 registrador base consegue endereçar um conjunto de 4K bytes de memória. http://www.pdfonline.com/easypdf/?gad=CLjUiqcCEgjbNejkqKEugRjG27j-AyCw_-AP ASSEMBLER - PROF. ALBERTO ROMANO SCHIESARI 2525 Com no máximo 15 registradores base: 15 registradores X 4K cada = Máximo de 60K endereçáveis. Caso o programa seja maior que isso, deve-se dividir o programa em blocos separados, e cada bloco ser “servido” por um conjunto de registradores base, que serão reutilizados (com outros conteúdos), nos demais blocos. Uma sugestão: Pensar em quais serão os registradores bases do programa inteiro, e quais serão os registradores de trabalho. Segue tabela com sugestão para uso dos 16 registradores: 0 = Evitar; usado pelas rotinas dos métodos de acesso e Sist. Op. 1 = Evitar; usado pelas rotinas dos métodos de acesso e Sist. Op. Usado pelas instruções TRT e EDMK 2 = Evitar se necessário ou usar para work; usado pela instrução TRT de edição 3 = Usar como base 4 = Usar como base 5 = Usar como base 6 = Usar como base 7 = Usar como base 8 = Usar como work 9 = Usar como work 10 = Usar como work 11 = Usar como work 12 = Usar como work 13 = Evitar; usado como base de área de salvação de saveareas nos processos de interface entre softwares 14 = Evitar; usado em geral como “guardador” do endereço de volta do programa chamador 15 = Evitar; usado em geral como pointer para efetuar algum desvio para programa chamado Neste caso, há 5 registradores usados como base: R3, R4, R5, R6 e R7 Isso permite endereçar (5 x 4K) = 20K no máximo. Supondo um programa de 60K dividido em 3 trechos (blocos) de 20K cada um, em cada bloco podemos carregar os bases e usar só coisas (instruções e áreas) desse trecho. Memória de 60K bytes Programa com 60K R3 com x’00000000’
Compartilhar