Посимвольный разбор введенной строки - Assembler

Узнай цену своей работы

Формулировка задачи:

В ASM ассемблере вводится набор цифр, 56743356 к примеру, как разбить ввод на отдельные цифры?

Решение задачи: «Посимвольный разбор введенной строки»

textual
Листинг программы
    MyString db '123456789'
..........
    lea esi, MyString
    mov ecx, 9 ;длина массива
@@For:
    mov al, [esi]
    ...тут что-то делается с al
    inc esi
    loop @@For

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

  1. MyString db '123456789' — в этой строке определяется строка 123456789, которую мы будем разбирать.
  2. lea esi, MyString — здесь мы указываем, что ESI (регистр, который обычно используется для хранения указателей) должен ссылаться на начало нашей строки.
  3. mov ecx, 9 — в этой строке Ecx (регистр, который обычно используется для хранения счётчика) устанавливается равным 9, что является длиной нашей строки (включая нулевой символ).
  4. @@For: — это метка цикла, который мы будем использовать для прохода по каждому символу в строке.
  5. mov al, [esi] — здесь мы переносим содержимое памяти по адресу, на который ссылается ESI (в данном случае это первый символ в нашей строке), в регистр AX (другой регистр, который обычно используется для хранения значений).
  6. ...тут что-то делается с al... — здесь происходит обработка значения регистра AX (в зависимости от того, что нужно сделать с этим кодом, может быть выполнено любое действие, например, проверка, является ли символ цифрой).
  7. inc esi — здесь мы увеличиваем ESI на 1, чтобы перейти к следующему символу в строке.
  8. loop @@For — это инструкция, которая позволяет нам выполнить цикл до тех пор, пока ESI меньше или равно Ecx (то есть, пока мы не достигнем конца строки).

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

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