software básico silvio fernandes 2010.1 universidade federal rural do semiárido departamento de...
TRANSCRIPT
Software Básico
Silvio Fernandes2010.1
Universidade Federal Rural do SemiáridoDepartamento 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, 1993. 525p.
21