кратчайший способ сделать выборку в ассемблере X86? - PullRequest
2 голосов
/ 31 марта 2010

Какой самый короткий способ извлечь значение из памяти в X86 Assembler?

Ответы [ 3 ]

4 голосов
/ 31 марта 2010

В ассемблере нет обходного пути, чтобы это сделать. Все инструкции по сборке строго посвящены.

mov AL, 0x12

немедленно загрузит значение 0x12 для регистрации AL

xor  AL,AL

результат операции в регистре AL равен 0

lodsb

будет загружать байт из адреса памяти DS: [ESI] (или DS: [SI] под 16-битным ЦП) в AL

mov AL,[ESI]

загрузит байт из адреса памяти DS: [ESI] (или DS: [SI] под 16-битным ЦП) в AL

mov AL,[0xFFFF]

загрузит байт из адреса памяти DS: [0xFFFF] в AL

pop AX

будет загружать байт из адреса памяти SS: [ESP] (или SS: [SP] под 16-битным ЦП) в AL

in AL, 0x123

будет загружать байт с адреса порта 0x123

xlatb [EBX + AL]

будет загружать байт из DS: [EBX + AL] адрес памяти

...

4 голосов
/ 31 марта 2010

Вы имеете в виду, кроме регистра mov, [адрес]?

2 голосов
/ 31 марта 2010

ОК, кратчайший путь - извлечь регистры, как pop eax, это однобайтовая инструкция.
Но это может использоваться только в особых случаях, когда указатель стека ESP будет указывать на буфер,
и, вероятно, вы не будете использовать стек для других целей, пока код, который его использует, не будет готов.

Стандартным способом является использование инструкции mov.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...