Зарезервировать в памяти строку, заполнить ее в цикле 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
Объяснение кода листинга программы
- Устанавливаем значение регистра al в 32.
- Устанавливаем значение регистра si в 0.
- Начинаем цикл while (metka), где условие выполнения — это сравнение al с 255.
- Внутри цикла, используя адресную модель [symb+si], записываем в память значение регистра al.
- Увеличиваем значение регистра al на 1.
- Увеличиваем значение регистра si на 1.
- Проверяем условие завершения цикла while (metka) — сравнение al с 255.
- Если условие не выполняется (jne), то продолжаем выполнение цикла.
- Если условие выполняется (jne не происходит), то цикл завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д