Замена последнего нулевого элемента на единицу - Assembler
Формулировка задачи:
Здравствуйте. Пытаюсь решить следующую задачу с помощью ассемблера. Показал свой код преподавателю, тот сказал, что решение не верно, поскольку после сравнения последнего символа в строке, алгоритм перейдёт к сравнению первого. Может кто-нибудь сможет помочь?
Задание:
X DW 100 DUP(?) ; числа со знаком
Решить следующую задачу:
заменить на 1 последний нулевой элемент массива X;
Мой код:
LEN_X=$-X LEA DI,X MOV CX, LEN_X MOV AL, '0' STD REPNE SCASB JNE EXIT MOV WORD PTR ES:[DI-2], 1 EXIT
Решение задачи: «Замена последнего нулевого элемента на единицу»
textual
Листинг программы
lea di, X add di, LEN_X sub di, 1
Объяснение кода листинга программы
X
- это переменная, которая содержит начальный адрес массива в памяти.LEN_X
- это переменная, которая содержит длину массива.DI
- это регистр, который используется для индексации элементов массива.LEN_X - 1
- это вычитание единицы из длины массива, чтобы получить индекс последнего элемента массива.X + (LEN_X - 1)
- это выражение, которое возвращает адрес последнего элемента массива.0
- это значение, которое заменяется на единицу в последнем элементе массива.1
- это значение, которое присваивается последнему элементу массива.