Lista de Exercicios - Ramses

2
LISTA DE EXERCÍCIOS - RAMSÉS 1) Determinar o valor do registrador A após a execução do trecho de programa abaixo. Resolva o exercício e depois digite e execute o programa no Ramsés para conferir o resultado. LDR B #5 LDR X #135 LDR A 128 loop: JZ fim ADD A 0,X JC fim ADD X #1 SUB B #1 JMP loop fim: HLT 2) Dadas as instruções abaixo: - Carregar o registrador A com o valor 10; - Armazenar o conteúdo do registrador A na posição 128 da memória; - Carregar o registrador B com o valor 135; - Armazenar o conteúdo do registrador B na posição 129 da memória; - Carregar o registrador A com o valor 90; - Armazenar o conteúdo do registrador A na posição 135 da memória; - Carregar o registrador A com o conteúdo da posição 128 da memória; - Adicionar o conteúdo do registrador A com o conteúdo da posição 129 da memória; - Subtrair o conteúdo do registrador A do conteúdo apontado pela posição 129 da memória; - Fazer uma operação AND entre o conteúdo do registrador A e o valor 240; - Deslocar o registrador A uma posição à direita; - Negar o valor do registrador A; - Parar o programa. Preencher a tabela abaixo da seguinte forma (seguir o exemplo para as duas primeiras instruções): - Coluna 1: Endereços da memória de programa - Coluna 2: Opcode (em hexadecimal) - Coluna 3: Mnemônico da Instrução - Coluna 4: Resolução da instrução Opcode (hexa) Endereço Byte (L) Byte (H) Mnemônico Resolução 00 22 0A LDR A #10 A 10 02 10 80 STR A 128 128 (10) Conteúdo da Memória 128 – 10 135 – 80 136 – 115 137 – 40 138 – 70 139 – 20 O código 22 (em hexa) é obtido da seguinte forma: 0 0 1 0 0 0 1 0 Opcode da instrução LDR REG. A modo imediato

Transcript of Lista de Exercicios - Ramses

Page 1: Lista de Exercicios - Ramses

LISTA DE EXERCÍCIOS - RAMSÉS

1) Determinar o valor do registrador A após a execução do trecho de programa abaixo. Resolva o exercício e depois digite e execute o programa no Ramsés para conferir o resultado.

LDR B #5

LDR X #135 LDR A 128 loop: JZ fim

ADD A 0,X JC fim ADD X #1

SUB B #1 JMP loop

fim: HLT 2) Dadas as instruções abaixo:

- Carregar o registrador A com o valor 10; - Armazenar o conteúdo do registrador A na posição 128 da memória; - Carregar o registrador B com o valor 135; - Armazenar o conteúdo do registrador B na posição 129 da memória; - Carregar o registrador A com o valor 90; - Armazenar o conteúdo do registrador A na posição 135 da memória; - Carregar o registrador A com o conteúdo da posição 128 da memória; - Adicionar o conteúdo do registrador A com o conteúdo da posição 129 da memória; - Subtrair o conteúdo do registrador A do conteúdo apontado pela posição 129 da memória; - Fazer uma operação AND entre o conteúdo do registrador A e o valor 240; - Deslocar o registrador A uma posição à direita; - Negar o valor do registrador A; - Parar o programa.

Preencher a tabela abaixo da seguinte forma (seguir o exemplo para as duas primeiras instruções):

- Coluna 1: Endereços da memória de programa - Coluna 2: Opcode (em hexadecimal) - Coluna 3: Mnemônico da Instrução - Coluna 4: Resolução da instrução

Opcode (hexa) Endereço Byte (L) Byte (H)

Mnemônico Resolução

00 22 0A LDR A #10 A � 10 02 10 80 STR A 128 128 � (10)

Conteúdo da Memória 128 – 10 135 – 80 136 – 115 137 – 40 138 – 70 139 – 20

O código 22 (em hexa) é obtido da seguinte forma: 0 0 1 0 0 0 1 0 Opcode da

instrução LDR

REG. A

modo imediato

Page 2: Lista de Exercicios - Ramses

3) Faça um programa para somar duas variáveis de 16 bits representadas em complemento de 2. As variáveis e o resultado estão dispostos segundo o mapa de memória abaixo: DICA: Não esquecer de considerar o carry do 1º para o 2º byte!! - posição 128: byte mais significativo da primeira variável - posição 129: byte menos significativo da primeira variável - posição 130: byte mais significativo da segunda variável - posição 131: byte menos significativo da segunda variável - posição 132: byte mais significativo do resultado - posição 133: byte menos significativo do resultado 4) Faça um programa para contar o número de bits “1” de uma palavra, cujo endereço está armazenado na posição 128 da memória. O resultado deve ser apresentado no registrador X. DICA: A instrução SHR desloca todos os bits uma posição à direita. O bit menos signficativo (ou seja, o mais à direita) é deslocado para o bit de carry.