Практическая работа Функции ввода и вывода строк прерывания INT 21h
учебно-методический материал на тему

Родионов Владимир Иванович

Практическое ознакомление с функциями ввода/вывода строк и приёмами использования возможностей этих функций.

Скачать:

ВложениеРазмер
Microsoft Office document icon pr_rab_int21.doc386 КБ

Предварительный просмотр:

Практическая работа

Функции ввода и вывода строк прерывания INT 21h
 

1. Цель работы : Практическое ознакомление с функциями ввода/вывода строк и приёмами использования возможностей этих функций.

  2. Порядок выполнения работы:


2.1. Повторить 
теоретический материал.

2.2. Ознакомиться с написанием и сохранение программы в  Debug.

Написание и сохранение программы в  Debug

Для создания данной программы будем использовать две функции DOS: функцию вывода строки на экран и функцию ввода с клавиатуры.

 О функциях DOS

 Функции DOS представляют собой неорганизованную кучу средств управления файлами, устройствами, памятью и процессами, доступных любой программе, которая способна установить регистры и вызвать программное прерывание.

 Чтобы обратиться к функции DOS:

- поместить номер функции DOS в регистр AH (если есть подфункции, то номер подфункции обычно помещается в AL)
- загрузить остальные регистры согласно описанию функции
- подготовить необходимые буферы, строки ASCII и управляющие блоки
- вызвать прерывание INT 21H
- проверить индикатор ошибки, возвращенный DOS (флаг переноса)

 DOS не изменяет значений регистров, исключая случаи, когда результирующие данные возвращаются через регистры. В процессе развития DOS новые версии остаются (в целом) совместимыми с более ранними версиями.

 1). Функция ввода с клавиатуры
 
вход:     AH = 02h
выход:   AL = код символа, полученный из стандартного ввода.

 Данная функция считывает (ожидает) символ со стандартного входного устройства. Отображает этот символ на стандартное выходное устройство (эхо).

 2). Функция вывода строки на дисплей
 
вход:     AH = 09h
              DS:DX =
адрес строки, заканчивающейся символом ‘$’
выход:   нет

 Описание :
Строка, исключая завершающий её символ ‘$’, посылается на стандартный вывод.
Обычно, чтобы перейти на новую строку, включают в текст пару CR/LF (ASCII 0Dh и 0Ah).

 3). Завершение программы
Вызвать прерывание DOS
Int 20h 

Подготовка данных (строк) для вывода на экран

 Разместим в памяти строки диалога с пользователем для наглядности программы. Для перехода на новую строку будем вводить перед каждой строкой по два байта 0d 0a (см. выше).
Запускаем Debug и записываем в память строки. Запоминаем адреса начала строк, для последующего обращения к ним из программы:

image002.jpg

рис.1

На рис.1 видно, что сначала мы ввели в память два байта 0D и 0A в адреса 13E2:0200 и 13E2:0201 соответственно, а далее с адреса 13E2:0202  расположили первую строку программы "Вариант №4…". Последний байт этой строки символ $, код которого 24h, расположился по адресу 13E2:0243.  Поэтому продолжаем ввод оставшихся строк с адреса 13E2:0244.  После введения каждой строки командой "damp"= d просматриваем дамп памяти для определения адреса ввода последующей строки.

ris1.JPG

ris1a.JPG 

Листинг программы 

 mov ax, 900  `подготавливаем функцию вывода строки на экран, AH = 09h
mov dx, 200  `в регистр dx вносим адрес выводимой строки "Вариант №4……"
int 21             `вызываем прерывание DOS для выполнения функции вывода строки на экран
mov dx, 244  `в регистр dx вносим адрес строки "Введите число Х="
int 21             `вызываем прерывание DOS для выполнения функции вывода строки на экран
mov ax, 100   `подготавливаем функцию ввода символа с клавиатуры, AH = 01h
int 21              `вызываем прерывание DOS для выполнения функции
mov cx, ax      `сохраним (скопируем) значение регистра AX (AL = код введённого числа X) в регистре CX  для последующего использования (сравнения)
mov ax, 900    `опять готовим функцию вывода на экран, AH = 09h
mov dx, 257    `адрес строки "Введите число Y ="
int 21               `вызываем прерывание DOS для выполнения функции вывода строки на экран
mov ax, 100    `готовим функцию ввода символа, AH = 01h
int 21               `выполняем эту функцию: программа ожидает ввода символа с клавиатуры
mov bx, ax      `копируем значение регистра ax (AL = код числа Y) в регистр bx
mov ax, 900    `установим заранее функцию вывода на экран, AH = 09h
cmp cx, bx      `сравниваем значения регистров CX и BX, в которые мы сохранили числа X и Y
JG ds:133         `если число Х (т.е.его 16–ричный код) больше числа Y (...), то переходим к  адресу 133, где запрограммирован вывод соответствующей строки на экран
JL ds:13A         `если число Х (т.е.его 16–ричный код) меньше числа Y (...), то переходим к  адресу 13A, где запрограммирован вывод соответствующей строки на экран

mov dx, 288    `в dx вносим адрес строки о равенстве чисел X и Y (переходы jg и jl не совершились)
int 21               `прерывание DOS, вывод строки на экран
int 20               `завершение программы
mov dx, 26a    `в dx вносим адрес строки "X > Y" (сюда перейдёт по команде jg)
int 21               `прерывание DOS, вывод строки на экран
int 20               `завершение программы
mov dx, 279    `в dx вносим адрес строки "X < Y" (сюда перейдёт по команде jl)
int 21               `прерывание DOS, вывод строки на экран
int 20               `завершение программы

Ввод программы в Debug начинаем командой "assembler" – a. Программа записывается с адреса 100 (если нет, то ввести команду a100). Сегментный регистр здесь DS = 13E2 (не существенно). В процессе программирования мы его не изменяем, поэтому адресацию производим лишь через регистр DX: 
image015.jpg
Запись программы на диск 

 Для записи программы на диск необходимо знать её размер в байтах, и это значение необходимо внести в регистр CX. Последний байт внесённый до этого нами в область данных имеет адрес 296 (см. выше). Это значение и будет размером программы. Вводим это число в регистр CX:

image016.jpg

Далее необходимо командой "name"– n  ввести имя программы (придумать) и командой "write"– w произвести запись программы в файл:

image017.jpg

Для запуска программы вводим команду g:

image019.jpg

2.3 Создать и записать программу в отладчике debug для сравнения чисел заданных в варианте (таблица 1).
В качестве имени файла использовать 7 символов своей фамилии.
Для выполнения данной работы необходимо:

1. Запустить Debug.
2. Войти в режим ассемблирования, набрав а после приглашения
3. Запустить программу на выполнение G=100
4 .Сохранить программу, используя команды N, R,W
5. Уметь загрузить программу.
6. Продемонстрировать работу преподавателю в соответствии  с вариантом.

2.3. Подготовить отчет (в отчете привести листинг своей программы).

2.4 Отправьте созданный файл  преподавателю: Родионову В. И. (vlr@prep.scc).

В теме письма укажите предмет, номер и название практической работы, а также свою фамилию и сетевое имя.

Таблица 1

Вариант 

1

2

3

4

5

6

7

8

9

10

X=1
Y=1
X=2
Y=0
X=8
Y=9

X=2
Y=2
X=3
Y=1
X=7
Y=8

X=3
Y=3
X=4
Y=2
X=6
Y=7

X=4
Y=4
X=5
Y=3
X=5
Y=6

X=5
Y=5
X=6
Y=4
X=4
Y=5

X=0
Y=0
X=7
Y=5
X=3
Y=4

X=6
Y=6
X=8
Y=6
X=2
Y=3

X=7
Y=7
X=9
Y=7
X=1
Y=2

X=8
Y=8
X=1
Y=0
X=0
Y=1

X=9
Y=9
X=2
Y=1
X=7
Y=9

11

12

13

14

15

16

17

18

19

20

X=1
Y=1
X=3
Y=0
X=8
Y=9

X=2
Y=2
X=4
Y=0
X=7
Y=9

X=3
Y=3
X=5
Y=0
X=6
Y=9

X=4
Y=4
X=6
Y=1
X=5
Y=9

X=5
Y=5
X=7
Y=1
X=4
Y=9

X=0
Y=0
X=8
Y=1
X=3
Y=9

X=6
Y=6
X=9
Y=1
X=2
Y=9

X=7
Y=7
X=4
Y=1
X=1
Y=9

X=8
Y=8
X=5
Y=2
X=2
Y=8

X=9
Y=9
X=6
Y=3
X=3
Y=8

21

22

23

24

25

26

27

28

29

30

X=1
Y=1
X=5
Y=2
X=1
Y=9

X=2
Y=2
X=6
Y=3
X=2
Y=9

X=3
Y=3
X=7
Y=4
X=3
Y=9

X=4
Y=4
X=8
Y=5
X=4
Y=9

X=5
Y=5
X=9
Y=4
X=5
Y=9

X=6
Y=6
X=4
Y=1
X=6
Y=9

X=7
Y=7
X=6
Y=1
X=7
Y=9

X=0
Y=0
X=7
Y=2
X=8
Y=9

X=8
Y=8
X=8
Y=2
X=0
Y=9

X=9
Y=9
X=9
Y=2
X=1
Y=8

31

32

33

34

X=1
Y=1
X=7
Y=1
X=1
Y=7

X=2
Y=2
X=8
Y=1
X=2
Y=7

X=3
Y=3
X=9
Y=1
X=3
Y=7

X=4
Y=4
X=8
Y=2
X=4
Y=7


По теме: методические разработки, презентации и конспекты

Презентации по теме "Организация ввода-вывода информации"

Две презентации по теме Организация ввода-вывода...

Практическая работа по теме "Командная строка в MS Windows"

Изучить основные команды в командной строке.Составить таблицу этих команд в тетради...

Ввод и вывод графической информации.

Ввод и вывод графической информации-Клавиатура;-Координатные устройства ввода;-Сканер;-Цифровые камеры и ТВ-тюнеры;-Звуковая карта (микрофон)....

Практическая работа "Ввод и обработка текстовой информации в среде текстового процессора"

В работе дается теоретическая справка материала урока, а также примеры практических заданий и их выполнение....

Презентация "Организация ввода и вывода данных с использованием файлов"

Презентация к уроку информатики в 10 классе по учебнику Семакина И.Л....

Практическое занятие "Работа с командной строкой"

На практическом занятии изучается файловая система и команды ОС для работы с файлами  и каталогами...

Практическое занятие Ввод начальной информации в 1С: Управление Торговлей 11

Ввод начальной информации в 1С: Управление Торговлей 11 ...