Pour les programmes 16 bits, les formes d'adressage sont pris en charge que:
[BX+SI]
[BX+DI]
[BP+SI]
[BP+DI]
[SI]
[DI]
[BP]
[BX]
Chacun peut comprendre soit un déplacement constant de 8 ou 16 bits.
(Source: Intel Developer's Manual volume 2A page 38)
Le problème avec l'exemple fourni est que bl
et bh
sont des registres de huit bits et ne peut pas être utilisé comme pointeur de base. Toutefois, si vous définissez bx
à la valeur souhaitée, alors inc [di+bx]
(avec un spécificateur de taille approprié pour le pointeur) est valide.
En ce qui concerne la permutation « les bits haut et bas d'un registre, » J-16 SDiZ's suggestion de ror bx, 8
est très bien pour l'échange bl
et bh
(et IIRC, il est la meilleure façon de le faire). Cependant, si vous voulez échanger le bit 0 (par exemple) bl
avec le bit 7 de bl
, vous aurez besoin de plus de logique que cela.
Existe-t-il un moyen d'échanger deux registres alors? Dis, BX et BP? –
L'instruction 'XCHG' (par exemple' XCHG BX, BP'). La source est encore le manuel d'Intel lié dans ma réponse (en fait le volume 2B). Je recommande de les avoir à portée de main lors du développement d'assemblages. Ils ont toujours les informations 16 bits, ainsi que 32 bits, 64 bits et toutes les autres extensions depuis. – Zooba