Buscar

assembler-para-mainframes-ibm

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 245 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 245 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 245 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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’

Outros materiais