Temos alocado 3 bits para o código de operação. Podemos ter 8 instruções, conforme o valor de Op.
Código de operação 0:
If Op Eql 0 => Acc <- Acc And Mp[Z()];
Aqui Z() é usado para indicar uma chamada do algoritmo de cálculo de endereço efetivo Z.
Código de operação 1:
If Op Eql 1 => Acc <- Acc + Mp[Z()];
Código de operação 2:
If Op Eql 2 => Begin Mp[Z] <- Mp[Z()] + 1 Next If Mp[Z] Eql 0 => PC <- PC+1 End
A operação 2 corresponde a duas linhas, executadas em sequência, indicadas pela palavra Next. O comando que precede Next deve ser completado antes da execução do comando seguinte. Na linha
Mp[Z] <- Mp[Z()] + 1 Nextnotem que o cálculo de endereço é feito por Z(), apenas uma vez. Mp[Z], onde Z é usado sem parêntesis, significa apenas usar o endereço calculado, sem ativar o algoritmo de cálculo de novo. Isso é particularmente importante quando o algoritmo Z introduz efeitos colaterais, como no exemplo
Z\Effective.Address<0:7>:= Begin Decode Ibit => Begin 0:= Z <- Adr, 1:= Z <- Mp[Adr] <- Mp[Adr]+1 End End
Com esse algoritmo Z, teríamos um resultado diferente se tivéssemos escrito
Mp[Z()] <- Mp[Z()] + 1 Next
A instrução correspondente ao código 2 acrescenta 1 a uma palavra da memória e testa o resultado da adição, pulando a próxima instrução se a adição der resultado zero.
Código de operação 3:
If Op Eql 3 => Mp[Z()]@Acc <- Acc@#0000;
O operador @ é usado para indicar a concatenação de registradores ou cadeia de bits. #0000 indica uma cadeia de 4 dígitos octais. Alternativamente podemos escrever '0000000000000000 (12 dígitos binários) ou ''000 (3 dígitos hexadecimais). Resumindo:
O resultado dessa instrução é armazenar 24 bits (12 do acumulador mais 12 bits 0) no lado esquerdo - 12 bits da memória mais o acumulador. Poderíamos ter usado duas linhas:
Begin Mp[Z()] <- Acc Next Acc <- 0 End
Código de operação 4:
If Op Eql 4 => Stop()
Stop é uma instrução predeclarada do ISPS para congelar o estado da máquina permanentemente.
Código de operação 5:
If Op Eql 5 => PC <- Z();
Essa instrução altera a sequência normal de execução de instruções, alterando o valor do PC.
Códigos de operação 6 e 7:
Vamos por enquanto definir
If Op Eql 6 => Stop(); If Op Eql 7 => Stop()