Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.10.2025
Сообщений: 1

Сколько байтов перемещает mov

27.10.2025, 16:50. Показов 1065. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
mov ax, [es:di]

перемещает байт [es:di] в AL
перемещает байт [es:di+1] в AH

То есть перемещает два байта, а не один байт из [es:di] и не чистит верхний байт AH регистра?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.10.2025, 16:50
Ответы с готовыми решениями:

Что будет, если mov al,cs:string заменить на mov al,cs
1) В некоторой программе что-то реализуется. Вопрос: что будет если mov al,cs:string заменить на...

Отличие mov dword ptr[hInstance],eax от mov hInstance, eax
.data? hInstance dd ? .code start: invoke GetModuleHandle,0 mov dword ptr,eax end start

Установить 0 в 5-ом бите всех байтов массива с четным индексом и 1-цу в 4-ом бите всех нечетных байтов массива
Установить 0 в 5-ом бите всех байтов массива с четным индексом и 1-цу в 4-ом бите всех нечетных...

9
2642 / 1653 / 267
Регистрация: 19.02.2010
Сообщений: 4,375
27.10.2025, 18:53
Именно так.
Точнее, не перемещает - а копирует (ибо данные в источнике никуда не пропадают / никак не изменяются, в т.ч. если источником вместо памяти будет другой регистр).

А вот команды movzx/movsx в аналогичном случае скопировали бы 1 байт данных в AL и обнулили (или изменили в соответствии с загруженным в AL значением) значение в AH. Т.е. байт [es:di+1] этими командами никуда бы не был скопирован / ни на что бы не повлиял.
1
332 / 91 / 5
Регистрация: 19.07.2024
Сообщений: 506
27.10.2025, 19:08
Цитата Сообщение от Mafaka123 Посмотреть сообщение
mov ax, [es:di]
перемещает байт [es:di] в AL
перемещает байт [es:di+1] в AH
То есть перемещает два байта, а не один байт из [es:di] и не чистит верхний байт AH регистра?
А зачем его чистить, если в него данные записываются?

И да: не "два байта перемещает", а копирует полуслово (16-битное). Это одна команда, выполняющая одно действие.
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6211 / 2445 / 403
Регистрация: 29.07.2014
Сообщений: 3,175
Записей в блоге: 4
27.10.2025, 19:17
Лучший ответ Сообщение было отмечено Mafaka123 как решение

Решение

Mafaka123, на будущее имейте в виду,
что регистровую пару ES:DI принято называть "приёмником" данных от "DI = Destination Index",
а пару DS:SI "источником" от "SI = Sourсe Index".

Например их неявно используют инструкции lodsb (чтение байта в AL из источника DS:SI), и stosb (запись из AL в приёмник ES:DI). У вас-же хоть и не принципиальная, но ошибка, т.к. вы читаете из приёмника, хотя должны из источника. То-есть правильней будет mov ax,[ds:si], а запись mov [es:di],ax. Привыкайте к подобного рода мелочам, чтобы потом не возникало путаницы.
3
332 / 91 / 5
Регистрация: 19.07.2024
Сообщений: 506
27.10.2025, 19:26
Цитата Сообщение от R71MT Посмотреть сообщение
У вас-же хоть и не принципиальная, но ошибка, т.к. вы читаете из приёмника, хотя должны из источника. То-есть правильней будет mov ax,[ds:si]
А почему вы решили что ошибка?
MOV AX,ES:[DI] - нормальная команда. С явным указанием сегментного регистра. Никакой ошибки нет.
Только её синтаксис у ТС странный. Но возможно какие-то компиляторы понимают и такой.

Добавлено через 2 минуты
Цитата Сообщение от R71MT Посмотреть сообщение
То-есть правильней будет mov ax,[ds:si], а запись mov [es:di],ax.
Вы не знаете содержимое регистров ES, DS в программе ТС. А значит ваш вариант - неверный.
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6211 / 2445 / 403
Регистрация: 29.07.2014
Сообщений: 3,175
Записей в блоге: 4
27.10.2025, 19:34
Цитата Сообщение от jcxz Посмотреть сообщение
Вы не знаете содержимое регистров ES, DS в программе ТС. А значит ваш вариант - неверный.
..а вы знаете? Сегм.регистры заранее должны быть настроены на секцию-данных, а если нет, значит код изначально кривой.
1
332 / 91 / 5
Регистрация: 19.07.2024
Сообщений: 506
27.10.2025, 20:06
Цитата Сообщение от R71MT Посмотреть сообщение
Сегм.регистры заранее должны быть настроены на секцию-данных, а если нет, значит код изначально кривой.
Внезапно: DI тоже должен быть заранее настроен на правильный адрес. Если нет - код изначально кривой. Вас это не смутило?
Ещё и в PC должен быть правильный адрес.
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6812 / 2052 / 238
Регистрация: 14.12.2014
Сообщений: 4,304
Записей в блоге: 12
28.10.2025, 13:36
Цитата Сообщение от jcxz Посмотреть сообщение
MOV AX,ES:[DI] - нормальная команда. С явным указанием сегментного регистра. Никакой ошибки нет.
Только её синтаксис у ТС странный. Но возможно какие-то компиляторы понимают и такой.
FASM и NASM, которые понимают именно [es:di], а TASM/MASM-овский es:[di] не понимают.

Добавлено через 1 минуту
Вернее, FASM не понимает, а NASM понимает оба варианта.
1
 Аватар для sporta1982
213 / 59 / 7
Регистрация: 05.10.2023
Сообщений: 502
28.10.2025, 22:07
Цитата Сообщение от Jin X Посмотреть сообщение
TASM/MASM-овский es:[di] не понимают
я только на опыте, без претензий, GUI Turbo Assembler 5.1 это понимает mov ax,es:[di], а это mov ax,[es:di] не понимает...
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6812 / 2052 / 238
Регистрация: 14.12.2014
Сообщений: 4,304
Записей в блоге: 12
29.10.2025, 18:00
sporta1982, да, TASM/MASM ругаются на [es:di]. MASM не компилит, а TASM генерирует просто [di]

Добавлено через 8 минут
Но, кстати! TASM имеет 2 режима: MASM и IDEAL
Описанное выше — в режиме MASM (он используется по умолчанию), а вот в режиме IDEAL как раз mov ax,es:[di] будет выдавать warning, а mov ax,[es:di] скомпилится как надо
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.10.2025, 18:00
Помогаю со студенческими работами здесь

Ошибка с SetConsoleCursorPosition не перемещает курсор
вот код: .386 .model flat, stdcall option casemap :none include...

Машинный код команды: MOV [SI], EAX
Подскажите пожалуйста машинный код команды: MOV , EAX Понимаю что это очень и очень простой...

Почему не работает mov RAX,RBX??
Вопрос по ассамблеру.(FAsm 1.68 последней версии) только что скачал с официального сайта.При...

опертор mov
Здравствуйте я пока на "вы" с ассемблером поэтому возник вопрос прошу помочь с ним зараннее...

mov ax,2[bx][si]
Что будет содержаться в AX?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru