Насколько я понял, под присвоить здесь имеется ввиду скопировать var2 в var1 (побайтно). Это может сделать следующий код (простой, так как учебный 🙂 ):;mov ax, offset var1; в ax указатель на переменную var1mov bx, offset var2; в bx указатель на переменную var2label1:mov cl, byte ptr [bx]; в cl загружаем значение (байт) из адреса в bx (var2)mov byte ptr [ax], cl; значение в cl записываем (байт) в адрес в ax (var1); (таким образом скопировали 1 байт)add ax, 1; увеличиваем указатель на 1, так чтобы он указывал на следующий байт переменной var1add bx, 1; увеличиваем указатель на 1, так чтобы он указывал на следующий байт переменной var2cmp cl, ‘$’; сравниваем с $ (концом последовательности)jne label1; делаем еще один цикл, если не достигли конца;После выполнения данного кода переменная var1 будет такой:var1 db ‘0987654321$’
mov byte ptr [ax], cl – вот на эту строчку ругается, Illegal indexing mode UPDИз описаний ошибок tasm[quote]Illegal indexing mode(Недопустимый режим индексации)Команда содержит операнд, использующий недопустимую комбинацию регистров. Напримерmov al,[si+ax]Для всех процессоров, за исключением 80386, допустимыми комбинациями индексных регистров являются следующие: BX, BP, SI, DI, BX+SI, BX+DI, BP+SI, BP+DI.[/quote]Как бы изменить код так, чтобы работал?
ну вроде компилятор подсказывает, что вместо ax, bx нужно использовать si, di. Поэтому пробуем такой код:mov di, offset var1mov si, offset var2label1:mov al, byte ptr [si]mov byte ptr [di], aladd di, 1add si, 1cmp al, ‘$’jne label1
Спасибо, помогло!
Извините, что влез… так поздно. Вот и ответ на вопрос [link url='http://www.komcity.ru/forum/tech/?id=19607'] “Чему учат программистов в Комсе?” [/link] 🙁 Тема последнего задания, как я понимаю, что-то вроде “изучение строковых команд”. Я бы её не принял, показывает незнание набора инструкций (не отностися к -sc- который давно забыл). Есть однобайтные команды загрузки с автоинкрементом источника (si) и приёмника (di)cld ; сбрасывем флаг направленияlabel1:lodsbstosbcmp al, ‘$’jne label1
Нет, там было не про строковые команды, приведенный вопрос был лишь эпизодом в курсовой 🙂 Сейчас подучил, спрашивать такое не стал бы, да.
Copyright ©