Замена последнего нулевого элемента на единицу - 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

Объяснение кода листинга программы

  1. X - это переменная, которая содержит начальный адрес массива в памяти.
  2. LEN_X - это переменная, которая содержит длину массива.
  3. DI - это регистр, который используется для индексации элементов массива.
  4. LEN_X - 1 - это вычитание единицы из длины массива, чтобы получить индекс последнего элемента массива.
  5. X + (LEN_X - 1) - это выражение, которое возвращает адрес последнего элемента массива.
  6. 0 - это значение, которое заменяется на единицу в последнем элементе массива.
  7. 1 - это значение, которое присваивается последнему элементу массива.

Оцени полезность:

14   голосов , оценка 4.571 из 5
Похожие ответы