КОДЫ СЕГМЕНТНЫХ РЕГИСТРОВ
Сегментные регистры:
- CS - сегментный регистр кода (Code Segment)
- SS - сегментный регистр стека (Stack Segment)
- DS - сегментный регистр данных (Data Segment)
- ES - дополнительный сегментный регистр данных
- FS - дополнительный сегментный регистр данных
- GS - дополнительный сегментный регистр данных
Коды (bin) сегментных регистров, используемые в командах:
ES |
00 | 000 |
CS |
01 | 001 |
SS |
10 | 010 |
DS |
11 | 011 |
FS |
--- | 100 |
GS |
--- | 101 |
Есть команды, в которых код сегментного регистра является частью
кода операции. При этом для ES, CS, SS, DS обычно берется двухбитный код,
а для FS, GS трехбитный.
Коды (hex) и (bin) префиксов сегмента, в которые встроен код
сегментного регистра:
ES |
26 | 001<00>110 |
CS |
2E | 001<01>110 |
SS |
36 | 001<10>110 |
DS |
3E | 001<11>110 |
FS |
64 | 01100<100> |
GS |
65 | 01100<101> |
Коды (hex) и (bin) тех команд, в которых код сегментного регистра
встроен в код операции:
PUSH ES |
06 | 000<00>110 |
PUSH CS |
0E | 000<01>110 |
PUSH SS |
16 | 000<10>110 |
PUSH DS |
1E | 000<11>110 |
POP ES |
07 | 000<00>111 |
POP CS |
нет такой команды |
POP SS |
17 | 000<10>111 |
POP DS |
1F | 000<11>111 |
PUSH FS |
0F A0 | 10<100>000 |
PUSH GS |
0F A8 | 10<101>000 |
POP FS |
0F A1 | 10<100>001 |
POP GS |
0F A9 | 10<101>001 |
LSS |
0F B2 | 10110<010> |
LFS |
0F B4 | 10110<100> |
LGS |
0F B5 | 10110<101> |
Трехбитный код для всех шести сегментных регистров используется
в команде MOV (код операции 8C и 8E). При этом код сегментного
регистра помещается не в код операции, а в поле (reg) байта (mod,reg,r/m).
См. страницу:
Команды для сегментных регистров
Основные страницы справочника
Справочник по командам процессоров x86
Все команды по алфавиту (кратко)
Все команды по алфавиту (подробно)
Первый байт кода операций
Второй байт кода операций
|