Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
1. Создайте текстовый символьный массив (64 символа, от символа пробела до символа _). Выведите созданную строку на экран. Для этого можно вставить нижеприведенный текст в любую программу задания 1, удалив предварительно из нее ненужные строки: т.е. присоединить к нижеприведенному тексту начало и конец ассемблерной программы - описание сегментов и процедур.
;=== Программа 8. Файл z3_pr8.asm =============================
……
;Основные фрагменты программы
;Заполним строку кодами символов
mov CX,64;Число символов в счетчик цикла
mov AL,' ';Код первого символа (пробела) в AL
mov SI,0;Величина смещения относ. mes в SI
fill: mov mes[SI],AL;Код пересылается в строку
inc SI;Инкремент содержимого SI. К следующему адресу
inc AL;Инкремент содержимого SI. Код следующего символа
loop fill;Цикл CX раз
;Выведем строку mes на экран, как в программе задания 1
mov AH,40h
mov BX,1
mov CX,64
mov DX,offset mes
int 21h
;Завершим программу
...
;Поля данных
mes db 64 dup('_')
Замечание. Для выборки символов, входящих в строку (массив) mes, использована, так называемая, регистровая косвенная со смещением адресация (аналог адресации элементов массива в языке С++). Относительный адрес операнда mes[SI] определяется как сумма содержимого регистра [SI] и смещения на mes от начала сегмента данных. Адрес начала сегмента данных записан в сегментном регистре DS. Если записать сказанное в виде формулы, то получим:
относительный адрес операнда mes[SI] =
содержимое регистра [SI] +
смещение на mes относительно адреса в DS.
Изменение содержимого регистра SI приводит к смещению адреса на новый символ.
2. Просмотрите изображение символов второй половины кодовой таблицы (коды 128 - 255, всего 128 символов). Для этого создайте текстовый символьный массив, состоящий из кодов этих символов, и выведите его на экран.
;=== Программа 9. Файл z3_pr9.asm =============================
……
3. Создайте программную задержку, используя вложенные циклы. Определите значения параметров, позволяющие получить задержки (на конкретном компьютере) 10, 3 и 1 сек.
;=== Программа 10. Файл z3_pr10.asm ===========================
……
;Основные фрагменты программы
;Организуем (для наглядности) демонстрационный цикл из 10 шагов
mov CX,10
loop4: push CX;поместить содержимое СХ в стек
;Выведем строку mes на экран
...
;Организуем программную задержку
mov CX,time
outer: push CX;поместить содержимое СХ в стек
mov CX,0
inner: loop inner
pop CX;извлечь содержимое СХ из стека
loop outer
pop CX;извлечь содержимое СХ из стека
loop loop4
;Поля данных
mes db '<>'
time dw 10
4. Перестройте программу z2_pr6.asm из занятия 2, убрав в ней повторяющиеся выводы строк с помощью цикла.
;=== Программа 11. Файл z3_pr11.asm ===========================
……
Контрольные вопросы
1. Сколько символов закодировано в таблице ASCII кодов?
2. Можно ли адресовать элемент строки mes вместо mes[SI] следующим образом: SI[mes], [SI]+mes или [SI+mes]? Какие способы адресации Вам известны?
3. Объясните как «работают» вложенные циклы в программе задержки?
4. Как действует команда inner: loop inner? Сколько раз повторяется выполнение этой команды при задержке в 3 сек. На Вашем комрьютере?
5. Что такое стек? Что такое – вершина стека, дно стека? Каково назначение регистров SS и SP?
Литература
1. Юров В., Хорошенко С. Assembler:учебный курс – СПб: Питер Ком, 1999. – 672 с.:ил.
2. Абель П. Язык Ассемблера для IBM PC и программирования / Пер. с англ. Ю.В.Сальникова.- М.: Высш. шк., 1992.- 447 с.:ил.
3. Майко Г.В. Ассемблер для IBM PC: - М.: «Бизнес-Информ», «Сирин», 1997. – 212 с.
4. Финогенов К.Г. Самоучитель по системным функциям MS-DOS. – Изд.2, перераб. и дополн.- М.: Радио и связь, Энтроп, 1995. – 382 с., ил.
Дата публикования: 2014-12-10; Прочитано: 367 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!