2013-06-08 2 views
0

Я делаю программу inassembly 8086, но у меня есть одно сомнение. Я хочу переместить одно слово в мою созданную строку, но компилятор показывает мне ошибку: ошибка A2004: постоянное значение слишком велико.Как поместить слово в переменную

Декларация:

Fich db 'menu.txt',0

делает это:

mov Fich,'menu.txt'

Может кто-нибудь мне помочь?

С уважением, Marco

+0

Просьба представить процессор вы ориентируетесь, а также ассемблер вы используете. – STLDeveloper

+0

Процессор 8086. –

+1

Почему вы хотите написать программу в сборке? Кажется, вы действительно не понимаете, что это такое ... – kirelagin

ответ

2

В 8086 ассемблере, вы не можете переместить строку байтов в ячейку памяти, используя mov заявление.

Вы можете перемещать строки, используя movsb заявление, загрузив адрес источника в SI регистре, адрес получателя в DI регистре, а длина строки в CX регистре, а затем, наконец, вызывая MOVSB.

Вот простой пример:

TARGET db 80 dup(0) 
SOURCE db 'Hello', 0 

mov si, offset SOURCE ; address of SOURCE 
mov di, offset TARGET ; address of TARGET 
mov cx, 6    ; number of bytes to move (size of SOURCE) 
rep movsb    ; move cx number of bytes from SOURCE to TARGET 
+0

Спасибо @STLDeveloper, но я не знаю, как это сделать. Я начинаю с этого языка. Вы можете мне помочь? –

+1

@Marco Barbosa Я думаю, вам стоит получить книгу об этом. Ассемблер - это не то, чему вы научитесь случайным образом. –

+0

@DavidJashi Ну, это определенно возможно узнать asm по поисковикам. Количество случайности - это то, что важно. – kirelagin

Смежные вопросы