Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais Ciência da Computação Software Básico Aula 04: SIC/XE Silvio Fernandes 2010.1 1 Memória do SIC/XE • A estrutura de memória do SIC/XE é a mesma do SIC. As posições de memória são formadas por três bytes consecutivos. • A capacidade de memória é aumentada para 1 Mbyte (220). • Este aumento de capacidade de endereçamento provoca modificações no formato das instruções e modos de endereçamento. 2 Registradores no SIC/XE • O SIC/XE possui quatro registradores a mais do que o SIC. Registrador Endereço/Número Utilização B 3 Registrador de Base: Usado para endereçamento S 4 Registrador de Trabalho: Sem uso especial T 5 Registrador de Trabalho: Sem uso especial F 6 Acumulador de Ponto Flutuante: Registrador de 48 bits 3 Formato de dados no SIC/XE • O Formato do SIC standard continua válido. • É acrescentado um tipo de dados de ponto flutuante de 48 bits. S 1 bit Expoente 11 bits Mantissa 36 bits 4 Dados de ponto flutuante • A mantissa é um valor entre 0 e 1. (0.XXX). • O expoente é um número binário sem sinal entre 0 e 2047 (211). • O sinal do número é indicado pelo valor de S. – S = 0 número positivo. – S = 1 Número negativo. • Um valor igual a zero é indicado com todos os bits iguais a zero. 5 Formatos de instrução no SIC/XE • O Formato do SIC não é mais válido devido ao aumento da capacidade de memória. • O SIC/XE possui 4 formatos. • Formato 1: usado para instruções que não utilizam nenhum operando. Código da Operação 8 bits 6 Formatos de instrução no SIC/XE • Formato 2: usado para instruções que utilizam como operando o conteúdo de dois registradores ou o conteúdo de um registrador e uma constante de até quatro bits Código da Operação 8 bits R1 4 bits R2 4 bits 7 Formatos de instrução no SIC/XE • Formato 3: usado para instruções em que um dos operandos é o conteúdo de uma posição de memória que pode ser alcançada por um deslocamento de 15 bits. • Formato compatível com o SIC standard. – Flags N e I devem fazer parte do código da operação, o flag X deve indicar o modo de endereçamento e os flags B, P e E se juntem ao campo Deslocamento formando o campo endereço. Código da Operação N I 6 bits X B P E 6 x 1 bit Deslocamento 12 bits 8 Formatos de instrução no SIC/XE • Formato 4: usado para instruções que acessam operandos em uma memória com capacidade de endereçamento de 220 posições. • Por possuir 32 bits, não é compatível com o formato SIC standard. Código da Operação N I 6 bits X B P E 6 x 1 bit Deslocamento 20 bits 9 Modos de endereçamento no SIC/XE • Endereçamento Relativo: – Criados para serem usados com instruções de formato 3. Modo de endereçamento Codificação Relativo a Base B = 1, P = 0 Relativo ao PC B = 0, P = 1 Endereço Alvo Deslocamento EA = (B) + Deslocamento 0 Deslocamento 4095 Inteiro sem sinal EA = (PC) + Deslocamento -2048 Deslocamento 2047 Inteiro. Negativos em compl. de 2 10 Modos de endereçamento no SIC/XE • Endereçamento Direto: – Se B = 0 e P = 0 o campo deslocamento em uma instrução de formato 3 (E = 0) será o endereço alvo. • EA = Deslocamento (12 bits). – Para instruções no formato 4 (E = 1), B e P são necessariamente iguais a 0, • EA = Endereço (20 bits). 11 Modos de endereçamento no SIC/XE • Endereçamentos Relativo e Direto: – Se X = 1 (endereçamento indexado) Codificação Endereço Alvo Tipo (indexado) B = 1, P = 0, X = 1 EA = (B) + (X) + Deslocamento Relativo a base B = 0, P = 1, X = 1 EA = (PC) + (X) +Deslocamento Relativo ao PC B = 0, P = 0, X = 1 EA = (X)+Deslocamento (12 bits) Direto (formato 3) B = 0, P = 0, X = 1 Direto (formato 4) EA = (X) + Endereço (20 bits) 12 Modos de endereçamento no SIC/XE • Os flags I e N são usados para indicar o uso apropriado do endereço alvo. – I = 1 e N = 0: o endereço alvo será usado como operando e nenhum acesso será feito a memória (Endereçamento Imediato). – I = 0 e N = 1: o endereço alvo apontará para a posição de memória cujo conteúdo é o endereço do operando (Endereçamento Indireto). – I = 1 e N = 1: instruções SIC/XE que não usam endereçamento imediato ou indireto (endereço da memória) – I = 0 e N = 0: instruções no formato SIC (formato 3). Flags B,P e E são usados como parte do endereço (endereço da memória) 13 Modos de endereçamento no SIC/XE • Formatos de instrução Sem referência a memória Endereçamento relativo 0 Para cálculo do endereço alvo Campo de endereço extendido 1 Modos de endereçamento no SIC/XE • Compatibilidade – Todas as instruções SIC tem 8 bits de código de operação terminando com 00 – Se n=i=0, bits b,p,e são considerados como parte dos 15 bits campo de endereço Conjunto de instruções do SIC • O SIC possui um formato básico de instruções suficiente para executar a maioria das tarefas (programas) simples. • Existem instruções que definem e armazenam o conteúdo dos registradores (LDA, LDX, STA, STX, etc). • Existem instruções aritméticas (ADD, SUB, MUL, etc). – Todas as operações aritméticas envolvem o registrador A e uma palavra de memória. • Existe a instrução COMP, que compara o valor do registrador A com uma palavra de memória. – Utiliza um código de condição (CC) para determinar o resultado da comparação (<, = ou >). • Existem instruções de salto condicional (JLT, JEQ, JGT) que executam o salto com base no valor de CC. • Existem duas instruções específicas para o uso de sub-rotinas (JSUB e RSUB). 16 Conjunto de instruções do SIC Mnemômico: nome da instrução. Formato: qual formato a instrução foi codificada e montada. Código da Operação: normalmente em hexadecimal. Efeito: significado da instrução. Notas: informações adicionais: P instrução privilegiada. Xinstrução disponível apenas no SIC/XE. F instrução de ponto flutuante. C Código de condição. 17 Conjunto de instruções do SIC Ex: ADD m ¾ 18 A (A) + (m..m+2) Mnemônico: ADD m Formatos: 3 ou 4 Código: 18H ou 00011000B Efeito: adicionar a palavra composta pelos bytes m, m+1 e m+2 da memória com a palavra contida no registrador acumulador. Notas: nenhuma 18 Conjunto de instruções do SIC Ex: COMP m ¾ 28 A (A) : (m..m+2) C Mnemônico: COMP m. Formatos: 3 ou 4. Código: 28H ou 00101000B. Efeito: compara o conteúdo do registrador acumulador com a palavra armazenada nas posições m, m+1 e m+2. Notas: o resultado é armazenado no código de condição (<, + ou >) 19 Conjunto de instruções do SIC ADD m AADF m ADDR r1.r2 AND m CLEAR r1 COMP m COMPF m COMPR r1.r2 DIV m DIVF m DIVR r1.r2 ¾ ¾ 2 ¾ 2 ¾ ¾ 2 ¾ ¾ 2 18 58 90 40 B4 28 88 A0 24 64 9C A (A) + (m..m+2) F (F) + (m..m+5) r2 (r2) + (r1) A (A) & (m..m+2) r1 0 (A) : (m..m+2) (F) + (m..m+5) (r1) : (r2) A (A) / (m..m+2) F (F) + (m..m+5) r2 (r2) / (r1) XF X X C XFC XC XF X 20 Conjunto de instruções do SIC FIX FLOAT HIO 1 1 1 C4 C0 F4 A (F) {converte em inteiro} F (A){ converte em flutuante} Interrompe canal de I/O número (A) Jm JEQ m JGT m JLT m ¾ ¾ ¾ ¾ 3C 30 34 38 PC m PC m if CC definido como = PC m if CC definido como > PC m if CC definido como < JSUB m ¾ 48 L (PC) ; PC m LDA m LDB m ¾ ¾ 00 68 A (m..m+2) B (m..m+2) LDCH m ¾ 50 A [byte mais à direita] (m) XF PX X 21 Conjunto de instruções do SIC LDF m LDL m LDS m LDT m ¾ ¾ ¾ ¾ 70 08 6C 74 F (m..m+5) L (m..m+2) S (m..m+2) T (m..m+2) LDX m LPS m MUL m ¾ ¾ ¾ 04 D0 20 X (m..m+2) ** A (A) * (m..m+2) PX MULF m ¾ 60 F (F) * (m..m+5) XF MULR r1.r2 NORM 2 1 98 C8 r2 (r2) * (r1) F (F) {normalizado} X XF OR m ¾ 44 A (A) | (m..m+2) XF X X 22 Conjunto de instruções do SIC RD m ¾ D8 A [byte mais à direita] dados do P dispositivo especificado por m RMO r1. R2 RSUB 2 ¾ AC r2 (r1) 4C PC L X SHIFTL r1.n SHIFTR r1.n 2 2 A4 r1 (r1); desl. n bits à esquerda A8 r1 (r1); desl. n bits à direita X X SIO SSK m 1 ¾ F0 *** PX EC Chave de proteção do end. m (A) P X STA m STB m ¾ ¾ 0C m..m+2 (A) 78 m..m+2 (B) STCH m STF m ¾ ¾ 54 80 m A {byte mais à direita} m..m+5 (F) X X 23F Conjunto de instruções do SIC Valor do timer de intervalos (m..m+2) PX m..m+2 (L) m..m+2 (S) m..m+2 (SW) X P STI m STL m STS m STSW m ¾ ¾ ¾ ¾ D4 14 7C E8 STT m STX m SUB m ¾ ¾ ¾ 84 m..m+2 (T) 10 m..m+2 (X) 1C A (A) - (m..m+2) X SUBF m ¾ SUBR r1.r2 2 5C F (F) - (m..m+5) 94 r2 (r2) - (r1) XF X SVC n TD m 2 B0 Gera interrupção SVC ¾ E0 Testa disp. especificado por (m) X PC 24 Conjunto de instruções do SIC TIO TIX m TIXR r1 WD m 1 ¾ 2 ¾ F8 2C B8 DC Testa canal de I/O número (A) X (X) + 1; (X) : (m..m+2) X (X) + 1; (X) : (r1) Dispos. especificidado por (m) (A) {byte mais à direita} PXC C XC P • ** LPS: carrega status do processador com base em informações que se iniciam no endereço m • ***: SIO: ativa canal de I/O número (A); endereço do programa do canal é dado por (S) 25 Tabela de modos de endereçamento • C = constante entre 0 e 4095 ou um endereço de memória contido nesta faixa. • m = endereço de memória ou constante maior que 4095. • Coluna notas: – 4 = instrução somente no formato 4. – D = instrução de endereçamento direto. – A = O assembler seleciona o modo relativo ao contador do programa ou ao registrador base. – S = compatível com o formato SIC standard. 26 Tabela de modos de endereçamento Tipo Simples Flags nixbpe Notação Assembler Cálculo de EA operandos Notas 1 1 0 0 0 0 oper. c Desl. (TA) D 1 1 0 0 0 1 + oper. m Endereço (TA) 4D 1 1 0 0 1 0 oper. m (PC) + desl. (TA) A 1 1 0 1 0 0 oper. c. x (B) + desl (TA) A 1 1 1 0 0 0 +oper. m. x Disp + (X) (TA) D 1 1 1 0 0 1 oper. m. x Endereço + (X) (TA) 4D 1 1 1 0 1 0 oper. m. x (PC) + desl + (X) (TA) A 1 1 1 1 0 0 oper. m. x (B) + desl + (X) (TA) A 000--- oper. m b/p/e/desl (TA) DS 001--- oper. m. x b/p/e/desl + (X) (TA) DS 27 Tabela de modos de endereçamento Tipo Indireto Imediato Flags nixbpe Notação Assembler Cálculo de EA operandos Notas 1 0 0 0 0 0 oper. @c Desl. ((TA)) D 1 0 0 0 0 1 + oper. @m Endereço ((TA)) 4D 1 0 0 0 1 0 oper. @m (PC) + desl. ((TA)) A 1 0 0 1 0 0 oper. @m (B) + desl ((TA)) A 0 1 0 0 0 0 oper.#c Disp TA D 0 1 0 0 0 1 +oper.#m Endereço TA 4D 0 1 0 0 1 0 oper.#m (PC) + desl TA A 0 1 0 1 0 0 oper.#m (B) + desl TA A 28 Referências • Leland L Beck.. “Desenvolvimento de software básico”. 2ª ed. Rio de Janeiro: Campus, 1993. 525p. 29