Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Поместить значение в память


Автор: codeok 14.4.2011, 02:34
Здравствуйте.
Как поместить значение al в память по адресу A000h:0000h ?
Использую emu8086, пытался что то вроде mov byte ptr[A000h:0000h],al но что то не получается.

Автор: Игорь1024 14.4.2011, 06:03
Код

push 0A000h
pop es
mov [es:0h],al

Автор: iff 14.4.2011, 12:15
Цитата(codeok @  14.4.2011,  02:34 Найти цитируемый пост)
Использую emu8086

процессор 8086 не может исполнять команду push 0A000h, т.е. помещать в стек константу. Но компилятор TASM (не знаю как другие) не выдаст ошибку он откомпилирует эту инструкцию как:
Код

push ax
push bp
mov bp,sp
mov word ptr [bp+02h],0A000h
pop bp

Т.е. при компиляции для процессора 8086 код
Код

push 0A000h
pop es

будет откомпилирован как:
Код

push ax
push bp
mov bp,sp
mov word ptr [bp+02h],0A000h
pop bp
pop es

По этому я бы по рекомендовал заменить
Код

push 0A000h
pop es
mov [es:0h],al

на
Код

mov dx,0A000h
mov es,dx
mov [es:0h],al

Второй вариант в плане объема весит меньше и выполняется быстрее - меньше обращений к памяти (к стеку).

Автор: codeok 16.4.2011, 19:05
Спасибо  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)