PIN

Editor Assembly

Montador e Memória

Memória (0-31, 8 bits cada)

Estado do Processador

Busca Decodificação Execução

Registradores de Uso Geral (R0-R3)

Registradores Especiais

PC: 00
IR: 0000
Z: 0

POUT

00

Conjunto de Instruções do Processador

Instrução Formato Descrição Opcode (Hex) Opcode (Bin)
MOVImovi Rx, imediatoMove um valor imediato de 8 bits para o registrador Rx (R0-R3). Atualiza Z.10001
MOVmov Rx, RyMove o conteúdo do registrador Ry para Rx (R0-R3). Atualiza Z.20010
INin RxLê valor de PIN para Rx (R0-R3). Atualiza Z.30011
OUTout RyEscreve o conteúdo de Ry (R0-R3) na porta POUT. Não afeta Z.40100
ADDadd Rx, RyRx = Rx + Ry (R0-R3). Atualiza Z.50101
SUBsub Rx, RyRx = Rx - Ry (R0-R3). Atualiza Z.60110
INCinc RxIncrementa Rx (R0-R3). Atualiza Z.70111
JMPjmp labelDesvia para 'label'. Não afeta Z.81000
JZjz labelDesvia para 'label' se Z_FLAG = 1. Não afeta Z.91001

Detalhes da Codificação da Instrução (16 bits):

Cada instrução ocupa 2 bytes (16 bits) na memória.

  • Byte 1:
    • Bits 7-4: Opcode da instrução (4 bits)
    • Bits 3-0: Código do Registrador Rx (ou Ry para OUT) (2 bits para R0-R3). Para JMP/JZ, estes bits são 0.
  • Byte 2:
    • Para MOVI: Valor imediato (8 bits)
    • Para MOV, ADD, SUB: Bits 7-4: Código do Registrador Ry (2 bits para R0-R3); Bits 3-0: Não utilizados (0000)
    • Para IN, INC, OUT: Não utilizado (geralmente 00000000)
    • Para JMP, JZ: Endereço de destino (8 bits, deve ser par)

Flag Zero (Z): É 1 se o resultado da última operação aritmética (ADD, SUB, INC) ou de movimentação (MOVI, MOV, IN) for zero. Caso contrário, é 0.