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

StackOverflow https://stackoverflow.com/questions/3887586

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top