1. Por que aprender Assembler em 2026?
Mainframes ainda rodam bilhões de transações bancárias por dia. Uma parcela significativa do código que faz isso funcionar foi escrita em Assembler nas décadas de 1960–1990 e ainda está em produção. Profissionais que conseguem ler, entender e modificar esse código são raros e muito valorizados.
Além disso, Assembler é essencial para:
- Entender as mensagens de dump (ABEND) e diagnosticar falhas profundas de sistema
- Escrever rotinas de performance que COBOL não consegue otimizar o suficiente
- Fazer interface direta com serviços do z/OS via SVC e macros de sistema
- Manter e modernizar sistemas legados que misturam COBOL com sub-rotinas Assembler
🦕 Analogia — Assembler como o motor do carro
Você pode dirigir um carro sem saber como o motor funciona. Mas um mecânico que entende o motor consegue diagnosticar problemas que outros não conseguem, otimizar o desempenho e fazer reparos que nenhum manual previu. Aprender Assembler no mainframe é ser a mecânica do sistema.
2. Estrutura de um programa Assembler
Um programa Assembler z/OS tem três seções principais:
| Seção | Função | Delimitadores típicos |
|---|---|---|
| Prólogo | Salva registradores, estabelece base register, obtém área de trabalho | STM / BALR / USING / GETMAIN |
| Corpo | Lógica do programa — carrega dados, processa, grava resultados | Instruções de lógica e I/O |
| Epílogo | Restaura registradores e retorna ao chamador | FREEMAIN / LM / BR |
Além dessas seções, o programa tem declarações de dados (DC e DS) e macros.
3. Formato de instrução e campos
Uma linha de Assembler ocupa colunas específicas — herdado do formato de cartão perfurado de 80 colunas:
| Colunas | Campo | Descrição |
|---|---|---|
| 1–8 | Label | Nome opcional da instrução — começa na coluna 1, sem espaço antes |
| 10–14 | Operation | O mnemônico da instrução (L, ST, MVC, etc.) — começa na col. 10 |
| 16–71 | Operands | Os operandos da instrução, separados por vírgula, sem espaços |
| 72 | Continuação | Qualquer caractere aqui indica que a instrução continua na próxima linha |
| 73–80 | Número | Número de sequência — ignorado pelo assembler, usado para ordenar cards |
Comentários em Assembler usam um * na coluna 1 (linha inteira de comentário) ou um espaço após os operandos na mesma linha.
4. Primeiro programa — Hello World
Um programa completo e funcional que exibe uma mensagem no console do operador:
💡 WTO — Write To Operator
A macro WTO (Write To Operator) grava uma mensagem no console do sistema. É o equivalente mainframe do printf do C ou do DISPLAY do COBOL. Em programas reais, prefira escrever em datasets — o console é para mensagens de sistema, não para output de aplicação.
5. Compilando e executando com JCL
O processo de compilação Assembler no z/OS tem três passos:
O assembler ASMA90 é o HLASM. Ele precisa das bibliotecas de macros (SYS1.MACLIB e SYS1.MODGEN) para resolver as macros do sistema como WTO e STM. O link-editor IEWL transforma o módulo objeto em um executável carregável.