Подавляющая часть r/m и r8/16 сосредоточена в нечитабельных областях таблицы ASCII (т.е. имеет код либо меньше 20h, либо больше 7Fh), поэтому пользоваться ими нам практически не придется. Приятное исключение составляют команды типа: XXX [reg16],reg8/16 и XXX [BP+im8],reg8/16, да и то далеко не со всем набором регистров. Но об этом мы еще поговорим позже, а пока, уподобившись Кириллу и Мефодию, будет составлять Азбуку.
Все машинные команды можно разбить на три большие группы. К первой относятся однобайтовые команды, не имеющие никаких или практически никаких побочных эффектов. Они могут изменять значение регистров общего назначения или насиловать стек, но не должны лезть в порты, обращаться к памяти и т. д.
Вторую группу возглавляют двух или тех байтовые команды, один из операндов которых представляет собой непосредственное значение. Это очень важные команды, поскольку непосредственное значение позволяет кодировать те символы, которые не могут быть представлены командами первой группы. В частности, в нет символа пробела, без которого не обходится ни одна текстовая строка.
В третью группу попадают все остальные команды. Использовать их можно, но только с осторожностью. Короче говоря, первые две группы — это наш активный лексикон, а третья — заначка про запас.
Составленная нами азбука будет выглядеть так:
символ |
команда |
опкод |
& |
es: |
26h |
. |
DDA |
27h |
. |
CS: |
2Eh |
/ |
DAS |
2Fh |
? |
AAS |
3Fh |
@ |
INC AX |
40h |
[ |
POP BX |
5Bh |
\ |
POP SP |
5Ch |
] |
POP BP |
5Dh |
^ |
POP SI |
5Eh |
_ |
POP DI |
5Fh |
` |
PUSHA |
60h |
> |
DS: |
3Eh |
6 |
ss: |
36h |
7 |
AAA |
37h |
A |
INC CX |
41h |
a |
POPA |
61h |
B |
INC DX |
42h |
b |
BOUND |
62h |
C |
INC BX |
43h |
c |
ARPL |
63h |
D |
INC SP |
44h |
d |
FS: |
64h |
E |
INC BP |
45h |
e |
GS: |
65h |
F |
INC SI |
46h |
f |
size: |
66h |
G |
INC DI |
47h |
g |
addr: |
67h |
H |
DEC AX |
48h |
I |
DEC CX |
49h |
J |
DEC DX |
5Ah |
K |
DEC BX |
4Bh |
L |
DEC SP |
4Ch |
M |
DEC BP |
4Dh |
N |
DEC SI |
4Eh |
O |
DEC DI |
4Fh |
P |
PUSH AX |
50h |
Q |
PUSH CX |
51h |
R |
PUSH DX |
52h |
S |
PUSH BX |
53h |
T |
PUSH SP |
54h |
U |
PUSH BP |
55h |
V |
PUSH SI |
56h |
W |
PUSH DI |
57h |
X |
POP AX |
58h |
Y |
POP CX |
59h |
Z |
POP DX |
5Ah |