Cesar - características CESAR. Registradores. Modos de endereçamento. Endereçamento de memória. Modo Registrador. (As bases da civilização atual)

Documentos relacionados
Neander - características

Disciplina de. Organização de Computadores Digitais

Objetivos Gerais. Arquitetura de Computadores. Arquiteturas estudadas. O Computador Neander

Disciplina de Organização de Computadores I

A Arquitetura: conjunto de instruções

ção de Computadores I

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 2. Cibele Lemos Freire Viginoski

7. A pilha e subrotinas

NEANDERWIN. Algumas características do processador Neander são:

Aula 8. Engenharia de Sistemas Embarcados. Prof. Abel Guilhermino Tópico: Arquitetura ARM

7/4/2010. Aula 8. Engenharia de Sistemas Embarcados. Repertório de Instruções. Prof. Abel Guilhermino Tópico: Arquitetura ARM

Universidade de São Paulo

O Computador Neander Neander - Computador Hipotético Didático

Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -

Universidade Federal do Rio de Janeiro Bacharelado em Ciência da Computação. Arquitetura de Computadores I. Organização Básica do Computador

CONJUNTO DE INSTRUÇÕES

Arquitetura: características gerais

Disciplina de Organização de Computadores I

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Aula 4 Conjunto de Instruções do Microprocessador 8085 Grupo Aritmético

Guia Rápido MIPS. Tipos de Dados e Formatações

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios

Arquitetura de Computadores

Conjunto de Instruções (ISA) II

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Símbolos e abreviaturas utilizadas na descrição das instruções

ORGANIZAÇÃO DE COMPUTADORES

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Introdução à Arquitetura de Computadores

2. A influência do tamanho da palavra

SimuS. Gabriel P. Silva. José Antonio Borges. Um Simulador Didático para o Ensino de Arquitetura de Computadores DCC-IM/UFRJ NCE/UFRJ

Organização de Computadores

ção de Computadores I

Professor: Dr. Rogério Rodrigues de Vargas.

Sistemas de Computação. Seção Notas. Endereçamento de Memória. Notas. Oitava Aula. Haroldo Gambini Santos. 3 de setembro de 2009.

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Processador. Processador

Solução Lista de Exercícios Processadores

Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:

Sistemas Processadores e Periféricos Aula 2 - Revisão

CONJUNTO DE INSTRUÇÕES

CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)

Computador Cleópatra

Arquitetura de Computadores Conceitos Fundamentais. Graduação em Engenharia Elétrica - UFPR Prof. Carlos Marcelo Pedroso 2016

Prof. Adilson Gonzaga

TRABALHO PRÁTICO Nro. 01 Definição de 22/08/2010 (versão 0.1)

2. A influência do tamanho da palavra

Infraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento

Organização de Computadores

Arquitetura de Um Processador I

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture

Arquitetura de Computadores. Ciclo de Busca e Execução

Computador Cleópatra

Programação de Microcontroladores II

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

Sistemas de Computação. Instruções de Linguagem de Máquina

William Stallings Arquitetura e Organização de Computadores 8 a Edição

25/8/2010. Praticamente todas as arquiteturas de computadores fornecem mais de um modo de

PSI3441 Arquitetura de Sistemas Embarcados

III.2 - Princípios de Arquitetura

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

Sistemas Embebidos I , Tiago Miguel Dias ADEETC - Secção de Arquitecturas e Sistemas Operativos

Grupo I (5 valores) CD AB

Trabalhos Práticos Arquitetura de Computadores I Prof. Fabian Vargas

Linguagem de Montagem do NeanderX

Arquitetura e Organização de Computadores

Prova de Arquitectura de Computadores (21010) Data: 23 de Junho de 2009

ELE Microprocessadores I

Endereçamento e Formato de Instruções

Prova de Arquitectura de Computadores (21010) Data: 12 de Fevereiro de 2010

Arquitetura e Organização de Computadores

Laboratório de Microprocessadores e Microcontroladores

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

Conjunto de Instruções

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

Arquiteturas de Computadores. Princípios e exemplos de conjuntos de instruções

Instruções do Microcontrolador HC908Q

LISTA 02 CONJUNTO DE INSTRUÇÕES - GABARITO

Instruções de Máquina

Arquitetura e Organização de Computadores

Conceitos Básicos Processador

Introdução ao PIC. Guilherme Luiz Moritz 1. 6 de novembro de DAELT - Universidade Tecnológica Federal do Paraná

Disciplina: Arquitetura de Computadores

7. PROGRAMANDO O MICROCONTROLADOR. Microcontroladores - Prof: Demantova

No. de bits. O primeiro IBM PC foi construído com o 8088 (versão de 8 bits do 8086).

Conjunto de Instruções do 8051

Tópicos: 1 - Modos de endereçamento do Pilha e instruções de Pilha. 3 - Instruções que usam pilha: - instrução CALL - instrução RET

Aula 14 Funcionamento de Processadores (Visão específica)

Disciplina de Arquitetura de Computadores

Instruções. Maicon A. Sartin

Organização e Arquitetura de Computadores I

TRABALHO PROCESSADOR H8

2.5 - Instruções Lógicas do ULA

CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)

Assembly Sintaxe do Assembly. Instruções que afectam Flags. Aplicações de Microprocessadores 2006/2007

Organização de Computadores

Arquitetura e Organização de Processadores. Aula 4. Pipelines

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.

Transcrição:

Cesar - características CESAR (As bases da civilização atual) Largura de dados e s de 16 bits Dados representados em complemento de dois 8 de uso geral de 16 bits (R-R) 1 registrador de estado com 4 códigos de condição: negativo (N), zero (Z), carry (C) e overflow (V) 8 modos de endereçamento instruções com 2, 1 e zero s suporte para pilha (stack) Registradores Modos de endereçamento 8 (R-R) R = program counter (PC) R6 = stack pointer (SP) três bits para seleção de registrador R e R6 tem funções específicas, mas também são de uso geral = registrador 1 = registrador pós-incrementado 1 = registrador pré-decrementado 11 = indexado 1 = registrador indireto 11 = pós-incrementado indireto 11 = pré-decrementado indireto 111 = indexado indireto Endereçamento de Modo Registrador Arquitetura de 16 bits Memória organizada em bytes (8 bits) Big endian - byte mais significativo armazenado no menor (PDP, Motorola, Cesar) Little endian - byte menos significativo armazenado no menor (Intel) Exemplo: mem(128) = mem(129) = 1 mem(13) = 2 Cesar - sem restrições no endereçamento (par ou ímpar) MOV R, R1 R1 R R R 1

Pós-incrementado Pré-decrementado 1 R 1 R R 2 4 R 4 +2 3 3-2 2 MOV R, (R1)+ Mem(R1) R; R1 R1 + 2 MOV R, -(R1) R1 R1-2 ;Mem(R1) R Indexado Registrador indireto R R deslocamento R R + MOV R, ddd(r1) Mem(R1+ddd) R MOV R, (R1) Mem(R1) R Pós-incrementado indireto Pré-decrementado indireto 1 R 2 1 R 4 3 5 R R 5 +2 4 3-2 2 MOV R, ((R1)+) Mem(Mem(R1)) R; R1 R1 + 2 MOV R, (-(R1)) R1 R1-2 ;Mem(Mem(R1)) R 2

Indexado indireto R deslocamento R + MOV R, (ddd(r1)) Mem(Mem(R1+ddd)) R Exemplos Modo registrador CLR R R Modo registrador indireto CLR (R) Mem(R) Modo indexado CLR ddd(r) Mem(R+ddd) ; Modo pós-incrementado CLR (R)+ Mem(R) ; R R + 2 Modo pré-decrementado CLR -(R) R R - 2 ; Mem(R) Modo indexado indireto CLR (ddd(r)) Mem(Mem(R+ddd)) Modo pós-incrementado indireto CLR ((R)+) Mem(Mem(R)) ; R R + 2 Modo pré-decrementado indireto CLR (-(R)) R R - 2 ; Mem(Mem(R)) Endereçamento com PC (R) MOV R, R R R MOV R, R R R MOV R, (R)+ Mem(R) R; R R + 2 MOV (R)+, R R Mem(R) ; R R + 2 MOV R, -(R) R R - 2 ;Mem(R) R MOV -(R), R R R - 2 ;R Mem(R) MOV R, ddd(r) Mem(R+ddd) R MOV ddd(r), R R Mem(R+ddd) MOV R, (R) Mem(R) R MOV (R), R R Mem(R) MOV R, ((R)+) Mem(Mem(R)) R; R R + 2 MOV ((R)+), R R Mem(Mem(R)); R R + 2 MOV R, (-(R)) R R - 2 ;Mem(Mem(R)) R MOV (-(R)), R R R - 2 ; R Mem(Mem(R)) MOV R, (ddd(r)) Mem(Mem(R+ddd)) R MOV (ddd(r)), R R Mem(Mem(R+ddd)) Endereçamento com PC (R) MOV R, R R R MOV R, R R R MOV R, (R)+ Mem(R) R; R R + 2 MOV (R)+, R R Mem(R) ; R R + 2 MOV R, -(R) R R - 2 ;Mem(R) R MOV -(R), R R R - 2 ;R Mem(R) MOV R, ddd(r) Mem(R+ddd) R MOV ddd(r), R R Mem(R+ddd) MOV R, (R) Mem(R) R MOV (R), R R Mem(R) MOV R, ((R)+) Mem(Mem(R)) R; R R + 2 MOV ((R)+), R R Mem(Mem(R)); R R + 2 MOV R, (-(R)) R R - 2 ;Mem(Mem(R)) R MOV (-(R)), R R R - 2 ; R Mem(Mem(R)) MOV R, (ddd(r)) Mem(Mem(R+ddd)) R MOV (ddd(r)), R R Mem(Mem(R+ddd)) Útil Cuidado! Não usar!! Pilha Pilha Cresce dos s superiores para os inferiores Ponteiro da pilha aponta para o dado no topo da pilha Colocação de um dado na pilha (push) SP SP - 2 Mem(SP) dado Retirada de um dado da pilha (pop) dado Mem(SP) SP SP + 2 Cresce dos s superiores para os inferiores Ponteiro da pilha aponta para o dado no topo da pilha Colocação de um dado na pilha (push) SP SP - 2 Mem(SP) dado MOV origem,-(r6) Retirada de um dado da pilha (pop) dado Mem(SP) SP SP + 2 MOV (R6)+,destino 3

Endereçamento com SP (R6) MOV R, R6 R6 R MOV R, (R6)+ Mem(R6) R; R6 R6 + 2 MOV R, -(R6) R6 R6-2 ;Mem(R6) R MOV R, ddd(r6) Mem(R6+ddd) R MOV R, (R6) Mem(R6) R MOV R, ((R6)+) Mem(Mem(R6)) R; R6 R6 + 2 MOV R, (-(R6)) R6 R6-2 ;Mem(Mem(R6)) R MOV R, (ddd(r6)) Mem(Mem(R6+ddd)) R MOV (R6)+, R R Mem(R6) ; R6 R6 + 2 MOV -(R6), R R6 R6-2 ;R Mem(R6) MOV (R6), R R Mem(R6) Endereçamento com SP (R6) MOV R, R6 R6 R MOV R, (R6)+ Mem(R6) R; R6 R6 + 2 MOV R, -(R6) R6 R6-2 ;Mem(R6) R ; (PUSH) MOV R, ddd(r6) Mem(R6+ddd) R MOV R, (R6) Mem(R6) R MOV R, ((R6)+) Mem(Mem(R6)) R; R6 R6 + 2 MOV R, (-(R6)) R6 R6-2 ;Mem(Mem(R6)) R MOV R, (ddd(r6)) Mem(Mem(R6+ddd)) R MOV (R6)+, R R Mem(R6) ; R6 R6 + 2 ; (POP) MOV -(R6), R R6 R6-2 ;R Mem(R6) MOV (R6), R R Mem(R6) ; (COPIAR SEM REMOVER) Útil Cuidado! Não usar!! Identificação da : 4 bits mais significativos Código Tipo de NOP 1 e 1 instruções sobre os códigos de condição 11 instruções de desvio condicional 1 de desvio incondicional (JMP) 11 de controle de laço (SOB) 11 de desvio para subrotina (JSR) 111 de retorno de subrotina (RTS) 1 instruções de um 11 a 111 instruções de dois s 1111 de parada () NOP CCC SCC x x x x 1 n z v c 1 n z v c 1 1 1 1 x x x x Bccc 1 1 c c c c d d d d d d d d cccc mnemônico Condição de desvio BR (always) sempre verdadeira 1 BNE (Not Equal) z = 1 BEQ (EQual) z = 1 11 BPL (PLus) n = 1 BMI (MInus) n = 1 11 BVC (overflow Clear) v = 11 BVS (overflow Set) v = 1 111 BCC (Carry Clear) c = 1 BCS (Carry Set) c = 1 11 BGE (Greater or Equal) n = v 11 BLT (Less Than) n < > v 111 BGT (GreaTer) n = v and z = 11 BLE (Less or Equal) n < > v or z = 1 111 BHI (HIgher) c = and z = 111 BLS (Lower or Same) c = 1 or z = 1 JMP SOB 1 x x x x x x m m m r r r PC de desvio (modo = NOP) 1 1 x r r r d d d d d d d d r r - 1; if r<> then PC PC - d 4

JSR 1 1 x r r r x x m m m r r r temp de desvio (modo = NOP) pilha registrador r registrador r PC PC temp RTS 1 1 1 x r r r PC registrador r registrador r pilha 1 c c c c x x m m m r r r cccc significado N Z C V CLR op t t 1 NOT op NOT op t t 1 1 INC op op + 1 t t t t 11 DEC op op - 1 t t not(t) t 1 NEG op - op t t not(t) t 11 TST op op t t 11 ROR op SHR(c & op) t t lsb xor 111 ROL op SHL(op & c) t t msb xor 1 ASR op SHR(msb & op) t t lsb xor 11 ASL op SHL(op & ) t t msb xor 11 ADC op op + c t t t t 111 SBC op op - c t t t t Obs: após uma subtração, C = 1 indica BORROW! 1 c c c m m m r r r m m m r r r ccc significado N Z V C 1 MOV dst src t t - 1 ADD dst dst + src t t t t 11 SUB dst dst - src t t t not(t) 1 CMP src - dst t t t not(t) 11 AND dst dst AND src t t - 11 OR dst dst OR src t t - Primeiro = origem Segundo = destino Obs: após uma subtração, C = 1 indica BORROW! Exemplos de somas - codificar R1 = R1 +R2 ADD R2,R1 R1 = R1 + MEM(2) ADD 2,R1 MEM(3) = MEM(3) + r2 ADD R2,3 MEM(3) = MEM(3) + MEM(2) ADD 2,3 R1 = R1 + 5 ADD #5,R1 MEM(13) = MEM(13) + 3 ADD #3,13 Exemplos de somas - codificar R1 = R1 + Topo da pilha, sem retirar da pilha ADD (R6),R1 R1 = R1 + Topo da pilha, retirando da pilha ADD (R6)+,R1 Somar as duas palavras do topo da pilha, e devolver o resultado para o topo da pilha ADD (R6)+,(R6) Entrada e Saída visor alfanumérico de 36 posições, que permite visualizar letras (maiúsculas e minúsculas), dígitos ( a 9) e caracteres especiais do conjunto ASCII padrão americano (códigos ASCII a 12). teclado que permite ler um caractere (ASCII) e testar se uma tecla foi pressionada. 5

Entrada e Saída E/S mapeada na. os últimos 38 s de (65498 a 65535) são mapeados para os dois periféricos. transferências para esta área são sempre de 1 byte - somente os 8 bits menos significativos do são transferidos. Visor Mapeado para os s 655 a 65535 da Somente caracteres representáveis do conjunto ASCII padrão americano são visíveis (32 1 código ASCII 126 1 -ver Tabela 8.12) Todos os demais caracteres são mostrados como um espaço em branco Teclado A interface com o teclado é mapeada para dois bytes da O byte 65499 contém o último caractere digitado ( buffer ) O byte 65498 indica o estado do teclado Valor 128 (8H) : foi digitado um caractere Valor : nenhuma tecla foi pressionada Uso do teclado Esperar até que o 65498 contenha 128 Ler do 65499 o código ASCII digitado Após, o 65498 deve ser zerado Isto indica que outro caractere pode ser recebido do teclado Enquanto o 65498 não for zerado, todas as teclas pressionadas são ignoradas Exemplo de E/S Rotina para ler um caractere CLR 65498 TST 65498 BEQ -6 ; (25) Alternativa mais eficiente - para digitadores profissionais ;-) MOV #65498, R3 CLR (R3) TST (R3) BEQ -4 Exemplo de E/S Leitura de caractere com eco (exibição no visor) MOV #65498, R3 CLR (R3) TST (R3) BEQ -4 ; (252) MOV 65499, 655 BR -14 ; (242) 6

Exemplo de E/S Leitura de caractere com eco e fila (exibição em posições consecutivas do visor) MOV #65498, R3 MOV #655, R1 CLR (R3) TST (R3) BEQ -4 ; (252) MOV 65499, (R1) INC R1 BR -14 ; (242) Exemplo de E/S Resolvendo o problema de estouro do visor MOV #65498, R3 MOV #655, R1 CLR (R3) TST (R3) BEQ -4 ; (252) MOV 65499, (R1) INC R1 BEQ -18 ; (238) BR -16 ; (24) Subrotina - caso 1 Três parâmetros, por valor 1 JSR R5, 1 1 MOV (R5)+,R1 14 param1 12 MOV (R5)+,R2 16 param2 14 MOV (R5)+,R3 18 param3 16. 11 <próx.instr.>.. 11 RTS R5 Subrotina - caso 2 Três parâmetros, último por nome () 1 JSR R5, 1 1 MOV (R5)+,R1 14 param1 12 MOV (R5)+,R2 16 param2 14 MOV ((R5)+),R3 18 end.param3 16. 11 <próx.instr.>.. 11 RTS R5 Subrotina - caso 3 Dois parâmetros e um resultado 1 JSR R5, 1 1 MOV (R5)+,R1 14 param1 12 MOV (R5)+,R2 16 param2 14 MOV (R5)+,R4 18 end.resultado 16. 11 <próx.instr.>.. 196 MOV resul,(r4) 11 RTS R5 Subrotina - parâmetros na pilha Três parâmetros 1 MOV param1, -(R6) 12 MOV param2, -(R6) 14 MOV param3, -(R6) 16 JSR R, 1 11 <próx.instr.> Como obter os parâmetros e deixar a pilha em ordem?

Subrotina - parâmetros na pilha Como deixar a pilha em ordem? Não mexer na pilha! 1 MOV param1, -(R6) 12 MOV param2, -(R6) 14 MOV param3, -(R6) 16 JSR R, 1 11 ADD #6, R6 ; 6 bytes = 3 parâmetros 114 <próx.instr.> Subrotina - parâmetros na pilha Como obter os parâmetros? Modo indexado! 1 MOV param1, -(R6) 1 MOV 6(R6),R1 12 MOV param2, -(R6) 12 MOV 4(R6),R2 14 MOV param3, -(R6) 14 MOV 2(R6),R3 16 JSR R, 1 16. 11 ADD #6, R6.. 114 <próx.instr.> 11 RTS R Subrotina - parâmetros na pilha Como obter os parâmetros? 1 MOV R6,R5 1 MOV -2(R5),R1 12 MOV param1, -(R6) 12 MOV -4(R5),R2 14 MOV param2, -(R6) 14 MOV -6(R5),R3 16 MOV param3, -(R6) 16. 18 JSR R, 1.. 112 ADD #6, R6 11 RTS R 116 <próx.instr.> Programa Exemplo Somar (totalizar) n posições consecutivas de, a partir do inicial e. (Sem consistência sobre os valores de n e e). Em alto nível, o programa seria: total:= ponteiro := e contador := n laço: if contador =, termina total := total + mem(ponteiro) ponteiro := ponteiro + 1 contador := contador 1 goto laço LDA 132 ; inicializa (zera) o total 2 STA 13 4 LDA 129 ; inicializa ponteiro 6 STA 1 8 LDA 128 ; inicializa contador 1 STA 131 12 JZ 34 ; testa se contador é zero 14 LDA 13 ; carrega total no acumulador 16 ADD 1 ; soma com posição de 18 STA 13 ; atualiza total 2 LDA 1 ; incrementa ponteiro 22 ADD 134 24 STA 1 26 LDA 131 ; decrementa contador 28 ADD 133 3 STA 131 32 JMP 12 ; retorna ao início do laço 34 128 n número de posições 129 e inicial 13 tot total 131 cont contador 132 constante zero 133 255 constante -1 134 1 constante 1 Neander Implementação Ramses LDR A # ; inicializa (zera) o total 2 LDR X 129 ; inicializa ponteiro 4 LDR B 128 ; inicializa contador 6 JZ 16 ; testa se contador é zero 8 ADD A,X ; soma com posição de 1 ADD X #1 ; incrementa ponteiro 12 SUB B #1 ; decrementa contador 14 JMP 6 ; retorna ao início do laço 16 STR A 13 ; atualiza total 18 128 n número de posições 129 e inicial 13 total 8

Implementação Cesar Tradução literal de cada MOV #, R ; inicializa (zera) o total 4 MOV 126, R2 ; inicializa ponteiro 8 MOV 124, R1 ; inicializa contador 12 BEQ +14 ; testa se contador é zero 14 ADD (R2), R ; soma com posição de 16 ADD #2, R2 ; incrementa ponteiro 2 SUB #1, R1 ; decrementa contador 24 JMP 12 ; retorna ao início do laço 28 MOV R, 128 ; atualiza total 32 124 n número de posições 126 e inicial 128 total Implementação Cesar Usando instruções específicas do Cesar CLR R ; inicializa (zera) o total 2 MOV 126, R2 ; inicializa ponteiro 6 MOV 124, R1 ; inicializa contador 1 BEQ +1 ; testa se contador é zero 12 ADD (R2), R ; soma com posição de 14 ADD #2, R2 ; incrementa ponteiro 18 DEC R1 ; decrementa contador 2 BR -14 ; retorna ao início do laço 22 MOV R, 128 ; atualiza total 26 124 n número de posições 126 e inicial 128 total Implementação Cesar Usando endereçamento pós incrementado CLR R ; inicializa (zera) o total 2 MOV 126, R2 ; inicializa ponteiro 6 MOV 124, R1 ; inicializa contador 1 BEQ +6 ; testa se contador é zero 12 ADD (R2)+, R ; soma com posição de ; e incrementa ponteiro 14 DEC R1 ; decrementa contador 16 BR -14 ; retorna ao início do laço 18 MOV R, 128 ; atualiza total 22 124 n número de posições 126 e inicial 128 total Implementação Cesar Usando SOB CLR R ; inicializa (zera) o total 2 MOV 126, R2 ; inicializa ponteiro 6 MOV 124, R1 ; inicializa contador 1 BEQ +4 ; testa se contador é zero 12 ADD (R2)+, R ; soma com posição de ; e incrementa ponteiro 14 SOB R1, 4 ; decrementa contador ; retorna ao início do laço 16 MOV R, 128 ; atualiza total 2 124 n número de posições 126 e inicial 128 total Soma de variáveis de 32 bits carga REM R E MEM M read write MOV 126, R ; Bits menos significativos da primeira variável ADD 13, R ; Soma com bits menos significativos da segunda variável MOV R, 134 ; Salva resultado da soma (nos bits menos significativos ) MOV #, R ; Zera o registrador R (prepara para receber o carry) ADC R ; Soma o carry da soma anterior ADD 124, R ; Soma com bits mais significativos da primeira variável ADD 128, R ; Soma com bits mais significativos da segunda variável MOV R, 132 ; Salva o resultado (bits mais significativos) Reg. Gerais e Temporário s1 X carry in UAL write reg read reg sel reg carga Raux Raux Y V N C Z DECOD. RI carga RI RDM carga RDM carga liga desliga V N C Z Unidade de Controle Sinais de Controle para a UCP 9

Movimento de blocos de n posições: faça um programa para mover (sem zerar a origem) um número qualquer de posições consecutivas na. O número de posições é determinado pelo conteúdo da posição 124 de, a posição inicial do bloco de a ser movido é dada pelo conteúdo da posição 126 de e o inicial do bloco de destino é dado pela posição 128. posição 124: número de posições posição 126: posição inicial da origem posição 128: posição inicial do destino MOV 124, R MOV 126, R1 MOV 128, R2 CMP R2, R1 BGT 5 MOV (R1)+, (R2)+ SOB R, 4 ASL R ADD R, R1 ADD R, R2 MOV 124, R MOV -(R1), -(R2) SOB R, 4 ; Tamanho do bloco (em palavras) ; Endereço inicial da origem ; Endereço inicial do destino ; Compara de destino com o de origem ; Desvia de end.destino > end.origem ; Move uma palavra no sentido crescente ; Laço para mover toda a área ; Fim do programa ; Multiplica tamanho por dois (obtém tamanho em bytes) ; Endereço final da origem (+ 2 bytes) ; Endereço final do destino (+ 2 bytes) ; Restaura tamanho para palavras ; Move uma palavra, no sentido decrescente ; Laço para mover toda a área Pesquisa em vetores: faça um programa para determinar o maior valor armazenado em um vetor (array). O tamanho do vetor é determinado pelo conteúdo da posição 124 de e a posição inicial do vetor é dada pelo conteúdo da posição 126. O maior valor encontrado deve ser colocado na posição 128, e a posição relativa desse valor no vetor (1º, 2º,..., n-ésimo) na posição 13. posição 124: número de posições (tamanho do vetor) posição 126: posição inicial do vetor posição 128: resultado: maior valor encontrado posição 13: resultado: posição relativa do maior valor MOV 124, R ; Tamanho do vetor (em palavras) MOV 126, R1 ; Endereço inicial do vetor MOV (R1)+, R2 ; Inicializa o primeiro elemento como sendo o maior MOV R, R3 ; Inicializa R3 com o índice ( tamanho ) do maior elemento DEC R ; Inicializa contador (tamanho 1) CMP (R1), R2 ; Compara um elemento com o maior atual BLE 4 ; Desvia se for menor ou igual MOV (R1), R2 ; Se for maior, atualiza R2 MOV R, R3 ; Salva índice do novo maior valor ( contador atual ) ADD #2, R1 ; Em qualquer caso, incrementa ponteiro SOB R, 14 ; Controle do laço MOV R2, 128 ; Fornece maior valor encontrado MOV 124, R4 ; Calcula índice do maior valor SUB R3, R4 ; índice = tamanho contador + 1 INC R4 ; índice = mem(124) R3 + 1 MOV R4, 13 ; Fornece o índice do maior valor Alteração de bits: escreva um programa que zere (clear) ou ligue (set) um bit qualquer de uma palavra qualquer da, conforme indicado por um parâmetro na. posição 124: da palavra a ser alterada posição 126: posição do bit a ser alterado ( é o lsb) posição 128: conteúdo =, para zerar conteúdo = 1, para ligar MOV 126, R1 ; Obtém índice do bit a ser alterado JSR R, 1 ; Chama a subrotina de geração da máscara TST 128 ; Testa se o bit deve ser ligado ou desligado BEQ 6 ; Deve ser desligado OR R, 124 ; Deve ser ligado, usar OR BR 6 ; Vai para o fim do programa NOT R ; Desligar bit: inverte a máscara AND R, 124 ; Desliga o bit usando AND No 1: MOV #1, R ; R contém a máscara (inicializada com 1) TST R1 ; R1 contém o índice do bit a ser isolado ( é o bit menos sign.) BEQ 4 ; Se o índice é zero, a máscara está pronta ASL R ; Desloca o bit da máscara para esquerda SOB R1, 4 ; Decrementa o índice e desloca a máscara até o índice ser zero RTS R ; Retorna ao programa principal (máscara em R) 1