210 likes | 337 Views
Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais Ciência da Computação. Software Básico. Aula 05: Programação com o SIC e SIC/XE. Silvio Fernandes 2010.1. Programação com o SIC. Exemplos simples de programação na linguagem assembler do SIC e do SIC/XE
E N D
Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais Ciência da Computação Software Básico Aula 05: Programação com o SIC e SIC/XE Silvio Fernandes 2010.1
Programação com o SIC • Exemplos simples de programação na linguagem assembler do SIC e do SIC/XE • Objetivo de familiarizar com os conjuntos de instruções e o assembler das máquinas
Primeiro exemplo do SIC e SIC/XE • O que fazem esses códigos? • Qual a diferença entre eles? • Qual o mais eficiente? Por quê?
Primeiro exemplo do SIC e SIC/XE • A instrução WORD reserva o espaço de uma palavra na memória, e inicializa esta palavra com o valor especificado • A instrução RESW reserva uma ou mais palavras de memória para que sejam usadas pelo programa • BYTE e RESB são semelhantes às anteriores, porém definem caracteres em vez de palavras
Operações aritméticas • No SIC todas as operações aritméticas são realizadas usando-se o registrador A e um endereço de memória • A sequencia de instruções armazena os valores • (ALPHA + INCR - 1) em BETA • (GAMMA + INCR - 1) em DELTA
Operações loop e indexação • O registrador de indexação X é inicializado com zero • Na 1ª execução o endereço-alvo da instrução LDCH será o 1º byte de STR1, que é copiado para o 1º byte de STR2 • A instrução TIX incrementa o registrador X e com seu novo valor com o operando (constante 11) • JLT executará um salto se o código de condição for “menor que” • A principal diferença no SIC/XE é a instrução TIXR, que funciona como TIX mas a comparação é feita com outro registrador (T) ao invés da memória
Indexação e loop • No último exemplo as variáveis ALPHA, BETA e GAMMA são arrays de 100 palavras cada • A tarefa do loop é somar os elementos correspondentes de ALPHA e BETA, armazenando os resultados em GAMMA • O valor do registrador de indexação tem que ser incrementado em 3 bytes (uma palavra) • A instrução TIX sempre soma 1 ao registrador X, portanto preferimos recorrer a instruções aritméticas
Operações de E/S - SIC • O programa lê um byte de dados do dispositivo F1 e o copia no dispositivo 05 • A entrada é realizada pela instrução RD que transfere um byte de dados deste dispositivo para o byte mais à direita do reg. A • Para que RD possa ser executada é preciso que o dispositivo de entrada esteja pronto • O programa verifica esta condição usando a instrução TD • Se o dispositivo estiver pronto cc passa “menor que” • Se não estiver “igual”
Sub-rotina e entrada de registros • Ler um registro de 100 bytes de um dispositivo de entrada para a memória • A leitura é feita em uma sub-rotina que é chamada pelo programa principal através de JSUB • No final da sub-rotina, uma instrução de RSUB devolve o controle para instrução subsequente a JSUB
Referências • Leland L Beck.. “Desenvolvimento de software básico”. 2ª ed. Rio de Janeiro: Campus, 1993. 525p.