PB - 1000
 

 

Site Home

PB-1000 Home

Informations

Les codes ASM

La mémoire

Le Désassembleur

Les programmes

Le "Hardware"

Description des differents TYPES d'instructions ASSEMBLEUR

 

Les codes des instructions assembleur du PB-1000 utilisent entre 1 et 4 octets.
La signification de chaque octet varie en fonction du type de l'instruction.
Pour chaque instruction, le premier octet est invariable et permet d'identifier l'instruction, les autres varient en fonction des paramètres utilises par l'instruction.
Il existe 9 TYPES d'instructions

WARNING
Certaines instructions peuvent avoir un octet supplémentaire par rapport à la documentation CASIO. Il s'agit d'une instruction de saut relatif (JR +/- C7) qui sera exécutée juste apres l'instruction précedente.Dans ce cas, l'un des bits d'un des octets du code initialement à 0 passe à1.C est le cas des type 2, 4 et 5.

CONVENTIONS :
$c5 : numéro d'un registre (code sur 5 bits : 0 à31)
C7 : valeur numérique codée sur 7 bits (0 à127)
C8 ou n : valeur numérique codée sur 8 bits (0 à255)
+/- : bit de signe 0 ou 1

Les bits d'un octet seront écrits dans le sens poids fort - poids faible:

bit nb.
7
6
5
4
3
2
1
0
calc.
2^7
2^6
2^5
2^4
2^3
2^2
2^1
2^0
value
128
64
32
16
8
4
2
1

 

TYPE 1

- Sur 1 seul octet, sans paramètre
- Codes concernés: &HD8,&HD9,&HF0 à&HFF

octet 1
xxxx xxxx
code


TYPE 2

Peut être sur 2 ou 3 octets

- Sur 2 octets

octet 1 octet 2
xxxx xxxx 0 op xxxxx
code 0 op $C5


1er octet : code de l'instruction

2ème octet :

bit 7 : 0
bits 5 et 6 : code OP (voir liste codes)
bits 0 a 4 : $C5

Codes concernes :
&H14-&H1F , &H26, &H27, &H2E, &H2F, &H96-&H9F, &HA6, &HA7, &HAE,&HAF, &HDC, &HDD

 

- Sur 3 octets si le bit 7 du 2 ème octet est à1 au lieu de 0:

Alors le 3 ème octet est une instruction de saut relatif : JR +/- C7

octet 1 octet 2 octet 3
xxxx xxxx 1-xx-x xxxx xxx xxx
code 1 - op - $C5 C7


1er octet : code de l'instruction
2eme octet :

bit 7 : 0
bits 5 et 6 : OP code (voir liste codes)
bits 0 a 4 : $C5

3eme octet :

bit 8 : signe du saut: 0 = '+' ; 1= '-'
bits 0 à 6 : C7 valeur du saut


TYPE 3

Sur 2 octets:

octet 1 octet 2
xxxx xxxx xxxxxxx
code C7


1er octet : code de l'instruction

2eme octet :

bit 7 : signe (+/-) 0 = '+' ; 1 = '-'
bits 0 à 6 : C7

codes concernés: &H5C, &H5D, &HB0-&HB5, &HB7


TYPE 4
Peut être sur 2 ou 3 octets:

- Sur 3 octets (si bits 5 et 6 de l'octet 2 sont à 1)

Instructions du type : LD $C5,(IX+/-$C5)

octet 1 octet 2 octet 3
xxxx xxxx x 11 xxxxx 000 xxxxx
code 11 $C5 000 $C5

codes concernés:
&H20-&H25, &H28-&H2D, &H38-&H3F &HA0-&HA5, &HA8-&HAD, &HB8-&HBF

OU

octet 1 octet 2 octet 3
xxxx xxxx 0 11 xxxxx 000 xxxxx
code 0 11 $C5 000 $C5

codes concernés: &H00-&H11, &H80-&H91.

- Sur 2 octets (si bits 5 et 6 de l'octet 2 sont différents de 11)
Dans ce cas, la valeur du troisième octet manquant est indiquée par les bits 5 et 6 du 2ème octet.

octet 1 octet 2
xxxx xxxx op xxxx
code op $c5

op signification
0 0 &H00
0 1 &H01
1 0 $0

 

- Sur 3 octets (avec JR +/- C7) si le bit 7 du 2 ème octet est à 1 au lieu de 0.

Valable pour les codes &H00-&H11 et &H80-&H91

octet 1 octet 2 octet 3
xxxx xxxx 1 xx xxxxx xxxxxxx
code 1 op $c5 C7

op
signification
00
&H00
01
&H01
10
$0

TYPE 5

Peut etre sur 3 ou 4 octets:

- Sur 3 octets

Codes concernés: &H40-&H4F,&H60-&H63,&H68-&H6B,&H64,&H65,&H6C,&H6D,&H78-&H7F.

- si code &H40-&H4F : [ LD $C5, n ]

octet 1 octet 2 octet 3
xxxx xxxx 0 op xxxxx xxxx xxxx
code 0 00 $c5 n

- si code &H60-&H63, &H68-&H6B, &H78-&H7F... :
[ LD $C5, (IX +/- n) ] .

octet 1 octet 2 octet 3
xxxx xxxx 00 xxxxx xxxx xxxx
code 00 $c5 n

- Sur 4 octets si:

- code : &H40-&H4F ET bit 7 du 2ème octet mis à 1

Alors le 4ème octet représente une instruction de saut relatif:
[JR +/- C7]

octet 1 octet 2 octet 3 octet 4
xxxx xxxx 1 op xxxxx xxxx xxxx xxxxxxx
code 1 00 $c5 c8 C7

 


TYPE 6


Sur 3 octets:

Codes concernés: &H30-&H35,&H37,+&H36?,&H70-&H75,&H77,+&H76?
ex: JP Z,m ou CAL Z,m

octet 1 octet 2 octet 3
xxxx xxxx xxxx xxxx xxxx xxxx
code adr. Low adr. High

 


TYPE 7

Sur 3 octets

codes concernés: &H56,&H57

octet 1 octet 2 octet 3
xxxx xxxx 0 op 00000 xxxx xxxx
code 0 op 00000 c8

signification de op : voir liste des codes


TYPE 8


Sur 4 octets

SEUL code concerné: &HD1 : LDW $C5,(ADR)

octet 1 octet 2 octet 3 octet 4
xxxx xxxx 000 xxxxx xxxx xxxx xxxx xxxx
code 000 $c5 adr. Low adr. High

TYPE 9


Sur 4 octets
Codes concernés: &HD6, &HD7

octet 1 octet 2 octet 3 octet 4
xxxx xxxx 0 op 0 0000 xxxx xxxx xxxx xxxx
code 0 op 0 0000 adr. Low adr. High


Signification de op : voir liste des codes

 

 


Airbug.two 2002