Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SP_Lab_1.doc
Скачиваний:
3
Добавлен:
18.08.2019
Размер:
361.47 Кб
Скачать

Inc al ; увеличиваем al (код символа) на 1

inc si ; и индекс нашей строки (следующая позиция)

loop m ; повтор

; Вывод строки-результата на экран

mov ah, 40h ; номер функции DOS вывода строки

mov cx, 224 ; длина выводимой строки (в байтах)

mov bx, 1 ; 1 - вывод на экран

mov dx, offset symb ; относительный адрес выводимой строки

int 21h ; вызов DOS

; Завершение программы

mov ax, 4C00h ; AH = 4Ch, AL = 0 (код выхода)

int 21h

oursg ends

end begin

Для указания очередной позиции строки в памяти использовалась индексная адресация с регистром SI (можно было бы также использовать DI или BX). Указанный адрес начала строки (symb) складывается с содержимым регистра SI (индексирование), результат рассматривается как относительный адрес (offset), который в совокупности с сегментным адресом (содержимое регистра DS) дает полный адрес необходимой ячейки.

Другой возможный вариант — использование косвенной адресации без смещения, когда в регистр SI (DI или BX) помещается адрес начала строки, который затем так же в цикле увеличивается на 1:

mov [si], al ; засылаем символ в строку

inc si

(Команда INC производит увеличение операнда на 1. Для уменьшения операнда на 1 служит команда DEC).

Задание

Зарезервировать в памяти строку, заполнить ее в цикле ASCII-символами в диапазоне (32, …, 254) с указанным шагом, а затем выдать эту строку на экран при помощи функции 40h DOS (int 21h). В таблице вариантов указаны а) порядок следования кодов символов (от меньших к большим или наоборот, изменяющиеся на 1, 2 или 3), б) порядок заполнения строки (прямой — от младших байтов к старшим, или обратный — от старших к младшим), в) способ организации цикла (командой Jxx или LOOP, с пост- или предусловием). В протокол работы включить блок-схему программы.

Варианты:

№ вар.

последовательность

порядок заполнения

цикл

обратная с шагом 1 (254, 253, ..., 32)

прямой

Jxx с предусловием

прямая с шагом 1 (32, 33, ..., 254)

обратный

Jxx с постусловием

обратная с шагом 2 (254, 252, ..., 32)

прямой

LOOP

прямая с шагом 2 (32, 34, ..., 254)

обратный

Jxx с предусловием

обратная с шагом 3 (254, 251, ..., 32)

прямой

Jxx с постусловием

прямая с шагом 3 (32, 35, ..., 254)

обратный

LOOP

обратная с шагом 1 (254, 253, ..., 32)

обратный

Jxx с постусловием

прямая с шагом 1 (32, 33, ..., 254)

прямой

Jxx с предусловием

обратная с шагом 2 (254, 252, ..., 32)

обратный

LOOP

прямая с шагом 2 (32, 34, ..., 254)

прямой

Jxx с постусловием

обратная с шагом 3 (254, 251, ..., 32)

обратный

Jxx с предусловием

прямая с шагом 3 (32, 35, ..., 254)

прямой

LOOP

обратная с шагом 4 (254, 250, ..., 34)

обратный

Jxx с постусловием

прямая с шагом 4 (34, 38, ..., 254)

прямой

Jxx с предусловием

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]