| Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум на Исходниках.RU > Assembler FAQ > Некоторые нюансы при использовании MOV |
| Автор: miksayer 06.07.05, 11:20 |
| Некоторые нюансы при использовании команды MOV 1. С помощью MOV нельзя осуществлять пересылку из одной области памяти в другую. Для этого нужно использовать в качестве промежуточного буфера любой доступный регистр общего назначения: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> .data a db 5 b db ? .code start: ... mov al,a mov b,al ... end start 2. Нельзя пересылать содержимое одного сегментного регистра в другой сегментный регистр. Для этого нужно использовать регистры общего назначения: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> mov ax, ds mov es, ax 3. Нельзя загружать в сегментный регистр непосредственное значение. Для этого требуется промежуточный объект (например, регистр общего назначения или стек). 4. Нельзя использовать сегментный регистр CS как операнд назначения. Дело в том, что в архитектуре процессора IA-32 пара CS:IP содержит адрес команды, которая должна выполняться следующей. Поэтому изменение содержимого регистра CS фактически означает операцию перехода, что недопустимо. |
| Автор: B1tD1ver 04.03.10, 15:13 |
| А как же такой вариант, через стэк!?!?! Var db 256 dup(?) A db 'A',0 push A(или offset A);Аля masm pop Var(offset Var) или mov al,'A' ; 2 - byte mov edi,Var(offset Var); 5 - byte stosb ; 1 - byte ---------------------------------------- push ds;В полне симпатично! pop es ---------------------------------------- |
| Автор: Akina 04.03.10, 15:31 |
| Ничего симпатичного - push/pop дольше двух mov |