Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Справочник по набору инструкций Intel Manual Volume 2 - 325383-056US сентябрь 2015 г. раздел "MOVS/MOVSB ​​/MOVSW/MOVSD/MOVSQ-Move Данные из String to String" говорит:

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