Какой регистр x86 обозначает местоположение источника в инструкции movsb? - PullRequest
28 голосов
/ 08 октября 2010

Какой регистр x86 обозначает местоположение источника в инструкции movsb?

Ответы [ 2 ]

35 голосов
/ 08 октября 2010

В 32-битном режиме, esi.

В частности, movsb копирует один байт из ds:esi в es:edi, регуляторы esi и edi устанавливаются на 1,вверх или вниз в зависимости от флага направления.

9 голосов

Как извлечь эту информацию из руководства

Теперь, когда вы вошли в osdev.org, пришло время расплатиться с моральным долгом, фактически изучив его.: -)

Справочник по Intel, том 2 Справочник по наборам инструкций - 325383-056US Сентябрь 2015 г. раздел «MOVS / MOVSB ​​/ MOVSW / MOVSD / MOVSQ - переместить данные из строки в строку» говорит:1009 *

Перемещает байт, слово или двойное слово, указанное со вторым операндом (исходным операндом), в положение, указанное первым операндом (целевым операндом).И исходный, и целевой операнды находятся в памяти.Адрес исходного операнда читается из регистров 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 .

...