Software Básico Silvio Fernandes Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula 05: Programação com o SIC e SIC/XE 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 2
Primeiro exemplo do SIC 3
Primeiro exemplo do SIC/XE 4
Primeiro exemplo do SIC e SIC/XE 5 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 6 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 - SIC 7
Operações aritméticas – SIC/XE 8
Operações aritméticas 9 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 - SIC 10
Operações loop e indexação – SIC/XE 11
Operações loop e indexação 12 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 - SIC 13
Indexação e loop – SIC/XE 14
Indexação e loop 15 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 16
Operações de E/S - SIC 17 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 - SIC 18
Sub-rotina e entrada de registros – SIC/XE 19
Sub-rotina e entrada de registros 20 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, p. 21