Какой регистр x86 обозначает местоположение источника в инструкции movsb?
-
28-09-2019 - |
Вопрос
Какой регистр x86 обозначает местоположение источника в инструкции movsb?
Решение
В 32-битном режиме, esi
.
В конкретных, movsb
копирует один байт от ds:esi
к es:edi
, корректирует оба esi
и edi
на 1, либо вверх, либо вниз в зависимости от флага направления.
Другие советы
Как извлечь эту информацию из руководства
Теперь, когда вы вошли в osdev.org, пришло время оплатить свой моральный долг, изучив его на самом деле.:-)
Справочник по набору инструкций Intel Manual Volume 2 - 325383-056US Сентябрь 2015 раздел "MOVS / MOVSB/MOVSW/MOVSD/MOVSQ—Перемещение данных из строки в строку" гласит:
Перемещает байт, слово или двойное слово, указанное вторым операндом (исходным операндом), в местоположение, указанное первым операндом (конечным операндом).Как исходный, так и конечный операнды находятся в памяти. Адрес исходного операнда считывается из регистров DS:ESI или DS:SI
Минимальная программа тестирования
Наконец, вы должны создать минимальную программу, которая использует инструкцию, чтобы проверить, правильно ли вы ее поняли:
section .data
src db 0
dest db 1
section .text
global _start
_start:
mov esi, src
mov edi, dest
cld
movsb
/* dest == 0*/
Работоспособная версия этого с утверждениями на GitHub.