Зарезервировать в памяти строку, заполнить ее в цикле ASCII-символами в диапазоне (32, …, 254) - Assembler

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

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

Дополнительные условия: 1) порядок следования кодов символов - прямой с шагом 1; 2) порядок заполнения строки - обратный (от старших байтов к младшим); 3) цикл Jxx с постусловием; Хотелось бы получить пояснение ко второму условию. Вот мой код:
oursg   segment
             assume cs:oursg, ds:oursg
             symb   db      224 dup('*')        
             begin:
                 mov    ax, oursg       
                 mov    ds, ax
                 mov    cx, 224              
                 mov    al, 254     
                 mov    si, 222     
                 metka:mov  [symb-si], al
                 dec al 
                 dec si
                 cmp al, 32
                 je exit
                 jmp    metka
                 exit:mov   ah, 40h     
                 mov    cx, 224 
                 mov    bx, 1       
                 mov    dx, offset symb 
                 int    21h     
                 mov    ax, 4C00h
                 int    21h
oursg   ends
             end    begin
И его результат: Я так понял последовательность выводится правильно, но что это за звёзды в начале и в конце? Ведь у меня в начале должен быть пробел. И что всё-таки означает обратный порядок заполнения строки; как проверить, что строка заполняется правильно? Извините, если глупые вопросы; я только начал изучать ассемблер и программирование.

Решение задачи: «Зарезервировать в памяти строку, заполнить ее в цикле ASCII-символами в диапазоне (32, …, 254)»

textual
Листинг программы
mov al, 32
mov si, 0 
 metka:mov [symb+si], al
 inc al 
 inc si
 cmp al, 255
 jne metka

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

  1. Устанавливаем значение регистра al в 32.
  2. Устанавливаем значение регистра si в 0.
  3. Начинаем цикл while (metka), где условие выполнения — это сравнение al с 255.
  4. Внутри цикла, используя адресную модель [symb+si], записываем в память значение регистра al.
  5. Увеличиваем значение регистра al на 1.
  6. Увеличиваем значение регистра si на 1.
  7. Проверяем условие завершения цикла while (metka) — сравнение al с 255.
  8. Если условие не выполняется (jne), то продолжаем выполнение цикла.
  9. Если условие выполняется (jne не происходит), то цикл завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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