Федеральное государственное автономное
образовательное учреждение
высшего профессионального образования
«СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
Институт Инженерной Физики и Радиоэлектроники
Кафедра Радиотехники
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №2
Изучение стандартных функций прерывания DOS
Преподаватель ____________ подпись, дата
Студент РФ 09-10 050901135 ____________ подпись, дата
Красноярск 2012
Цель работы:
Знакомство со стандартными функциями прерывания DOS, вывод информации на дисплей, ввод данных с клавиатуры и вывод на экран.
Задание:
Написать программу поиска чисел с «1» во 2-ом, 5-ом разрядах с вводом чисел с клавиатуры и выводом результата на экран.
Ход работы
Блок-схема программы:
Рисунок 1 – Блок-схема программы
Текст программы с комментариями:
;найти числа с "1" во 2м и 5м разрядах, среди введенных с клавиатуры
;3-х однобайтных 16-ричных чисел, вывести их на экран
cseg segment
assume CS:cseg,DS:dseg,ES:dseg,SS:dseg
.386
.387
begin:mov AX,dseg
xor BX,BX
mov CX,06 ;будет введено 6 цифр
mov SI,offset inmas
mov DI,offset outmas
M1:mov AH,01h ;функция ввода одной цифры с клавиатуры
int 21h
mov [SI+BX],AL
inc BX
loop M1 ;все 6 цифр введены в inmas
mov CX,03 ;начинаем преобразование из ASCII-кода
M6:mov AL,[SI]
sub AL,30h ;очищаем от зоны 3
cmp AL,09h
jns M2
jmp M3
M2:sub AL,07h ;если это была заглавная буква
M3:shl AL,04 ;переместить в старшую тетраду
inc SI
mov BL,[SI]
sub BL,30h
cmp BL,09h
jns M4
jmp M5
M4:sub BL,07h
M5:add AL,BL ;полный байт
mov [DI],AL
inc DI
inc SI
loop M6 ;все три числа записаны в 16-ричном коде
mov CX,03 ;начало поиска заданных чисел
mov DI,offset outmas
MET2:mov BL,[DI] ;проверяем число
and BL,24h
cmp BL,24h
je MET3
inc DI
loop MET2
MET3:mov BL,[DI] ;если условие выполнено
mov AL,BL ;разбиваем на тетрады
and AL,0F0h
shr AL,04 ;переводим в ASCII-код и выводим на экран
cmp AL,09
jns MET4
add AL,30h ;если это цифра
mov DL,AL ;символ - в DL
mov AH,02h ;функция вывода на экран
int 21h
jmp MET5
MET4:add AL,37 ;если это буква
mov DL,AL
int 21h
MET5:mov AL,BL
and AL,0Fh
cmp AL,09
jns MET6
add AL,30h
mov DL,AL
int 21h
inc DI
loop MET2
jmp MET7
MET6:add AL,37h
mov DL,AL
int 21h
inc DI
loop MET2
jmp MET7
MET7:mov AX,4C21h
int 21h
cseg ends
dseg segment use16
inmas db 06 dup (0)
outmas db 03 dup (0)
dw 100 dup (0)
STEKN LABEL WORD
dseg ends
end begin
Окно DOS по завершении программы:
Рисунок 2 – Вид окна DOS после завершения программы
На рисунке 2 в окне DOS верхняя строка представляет собой последовательность из записанных подряд трех двухразрядных шестнадцатеричных чисел, вводимых с клавиатуры и образующих входной массив, а так же следующих за ними двух разрядных шестнадцатеричных чисел, представляющих собой выходной массив, выводимый на монитор программой.
Запишем числа 2-го массива в двоичной форме:
24 h = 00100100 b;
35 h = 00110101 b;
Исходя из записи, можно убедиться в том, что числа, записанные во 2-ой массив, удовлетворяют условию задания.
Вывод
В ходе лабораторной работы было проведено ознакомление со стандартными функциями прерывания DOS и с принципом написания программы для ввода входных данных с клавиатуры и вывода на экран выходных данных.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.