- •О десский национальный морской университет
- •7.080401 "Информационные управляющие системы и технологии",
- •7.080402 "Информационные технологии проектирования"
- •Введение
- •Лабораторная работа №1 структура ехе-программы на ассемблере. Подготовка к выполнению Теоретические сведения
- •Задание
- •Лабораторная работа №2 использование служебных подпрограмм. Циклы. Формирование и вывод на экран строки ascii- символов Теоретические сведения
- •Inc al ; увеличиваем al (код символа) на 1
- •Задание
- •Лабораторная работа №3 управление курсором при выводе. Вложенные циклы. Формирование и вывод на экран таблицы символов ascii Теоретические сведения
- •Задание
- •Лабораторная работа №4 посимвольный ввод с клавиатуры. Анализ нажатия функциональных клавиш и комбинаций Теоретические сведения
- •Задание
- •Лабораторная работа №5 ввод с клавиатуры и обработка символьных строк (пароль) Теоретические сведения
- •Задание
- •Лабораторная работа №6 процедуры. Табличная трансляция. Перевод двоичных данных в символьную форму Теоретические сведения
- •Задание
- •Лабораторная работа №7 работа с файлами Теоретические сведения
- •Задание
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 с предусловием |