Работа с прерываниями DOS
Особенности работы с прерываниями DOS. Структура языка Assembler и процедур, написанных на нем. Анализ примера программы вычислительного процесса с подпрограммой (процедурой). Удаление заданного символа из текста. Изменение порядка символов на инверсный.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 07.04.2017 |
Размер файла | 622,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
9
Размещено на http://www.allbest.ru/
Федеральное государственное автономное образовательное учреждение
Высшего профессионального образования
"СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ"
ИНСТИТУТ УПРАВЛЕНИЯ БИЗНЕС ПРОЦЕССАМИ И ЭКОНОМИКИ
КАФЕДРА БИЗНЕС-ИНФОРМАТИКИ
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 4
Работа с прерываниями DOS
Преподаватель Кузьмич Р.И.
Студенты Дымко К.С., Косолапова А.В.
Красноярск 2017
Содержание
- Введение
- Задание № 1. Удалить заданный символ из текста
- Задание № 2. В заданной строке изменить порядок символов на инверсный
- Код программы
- Задание № 3. В заданной строке удалить слова, начинающиеся с заданного символа
- Заключение
Введение
Цель данной лабораторной работы: научиться работать с прерываниями DOS.
Задачи лабораторной работы:
1) Изучение рассмотренного на аудиторном занятии примера программы вычислительного процесса с подпрограммой (процедурой);
2) Ознакомление со структурой языка Assembler и структурой процедур, написанных на нем;
3) Ознакомление с основными операциями языка Assembler, которые могут понадобиться при выполнении лабораторной работы;
4) Написать две программы на языке Assembler, с применением процедур, в соответствии с задачами:
№3: Удалить заданный символ из текста;
№9: В заданной строке изменить порядок символов на инверсный.
5) Подготовить отчет о лабораторной работе и предоставить его руководителю.
Задание № 1. Удалить заданный символ из текста
Рисунок 1 - Блок-схема к заданию №3
язык assembler прерывание процедура
Задание № 2. В заданной строке изменить порядок символов на инверсный
Рисунок 2 - Блок-схема к заданию №9
Код программы
Задание № 3: Удалить заданный символ из текста;
. model tiny; модель памяти
. stack 100h; стек памяти
data segment; сегмент данных
String db '*1234567*8910* - *Hello* world! *',0ah,'$'; Искомая строка данных
String_len dw $ - string; Длинна строки
data ends
; - -----------------СЕГМЕНТ КОДА-----------------------------------------------
code segment
assume cs: code,ds: data; деректива, указывающая на сегментные регистры
; - ----------------------------------------------------------------------------------------
start:
mov ax,data; настройка регистра сегмента данных
mov ds,ax
lea dx,String; вывод на экран искомой строки
mov ah,9
int 21h
; - ---------------УДАЛЕНИЕ СИМВОЛА------------------------------------------
mov dx,30h; освобождение регистра dx
lea di,String; запись строки в регистр di
mov cx,String_len; регистр cx = длине строки
ZAMENA_CUCL:
cmp byte ptr [di],'*'; сравнение очередного символа строки с удаляемым
jne PROPUSK; если очередной символ не искомый - перейти
; ЕСЛИ НАЙДЕН СИМВОЛ - ПЕРЕЗАПИСЬ СТРОКИ
mov si,di; si = di (очередной элемент строки)
inc si; si = si+1 (переход к следующему элементу)
push di; положить элемент di в стек
push cx; положить значение cx в стек
inc cx; cx = cx+1
PEREZAPIS_CUCL:; СМЕЩЕНИЕ СТРОКИ НА 1 ЗНАК ВЛЕВО
mov al,byte ptr [si]; al = элемент строки si
mov byte ptr [di],al; элемент строки di = al
inc si; si = si+1 (переход к след. эл-ту)
inc di; di = di+1 (переход к след. эл-ту)
loop PEREZAPIS_CUCL
pop cx; восстановить значение cx их стека
pop di; восстановить элемент di из стека
PROPUSK:
inc di; di = di+1 (переход к следующему элементу)
loop ZAMENA_CUCL
; - --------------ЗАВЕРШЕНИЕ РАБОТЫ-----------------------------------------
lea dx,String; вывод полученной строки на экран
mov ah,9
int 21h
mov ah,4ch; завершение работы программы
int 21h
code ends
end start
Задание № 3. В заданной строке удалить слова, начинающиеся с заданного символа
. model tiny
. data
msg db 'Enter string: $'
msg2 db 10,'Reverse string: $'
strbuf db 80, 80 DUP (?)
. code
begin:
mov ax,@data; инициализация
mov ds,ax
mov es,ax
mov ah,9; вывод на экран "Enter string: "
mov dx,offset msg
int 21h
inc ah; ah = 0ah (ввод строки, до enter)
mov dx,offset strbuf
int 21h
dec ah; ah = 09h, вывод на экран "Reverse string: "
mov dx,offset msg2
int 21h
; - --ПЕЧАТЬ ИСХОДНОЙ СТРОКИ С КОНЦА---
xor cx,cx
mov cl, byte ptr [strbuf+1]; CX = длина строки
mov si, offset strbuf+1
add si, cx; si = si+cx (последний символ строки)
std; si=si-1
print:
lodsb; загрузка очередного символа в AL
int 29h; печать AL на экран
loop print; dec cx; повтор Print, пока cx>0
Заключение
В ходе выполнения лабораторной работы мы изучили основы программирования процедур на языке Assembler: ознакомились со структурой и основными операциями процедур (подпрограмм) на assembler; подробно изучили рассмотренный на аудиторном занятии пример программы вычислительного процесса с применением процедур. А также научились программировать вычислительные процессы на языке Assembler с применением подпрограмм. Написали две программы в соответствии с заданиями и убедились в их работоспособности (Рис. 3,4).
Рисунок 3 - Результат работы программы к заданию №3
Рисунок 4 - Результат работы программы к заданию №9
Размещено на Allbest.ru
Подобные документы
Формулировка задачи и методика ее решения. Удаление заданной цифры из данного натурального числа. Структурная схема алгоритма и его описание. Особенности разработки программы и процедур и их описание. Удаление максимальных элементов из заданного массива.
курсовая работа [1,7 M], добавлен 08.02.2013Разработка программы на языке Assembler, отсчитывающую время от заданного значения до 0. Осуществление ввода с помощью стандартной шестнадцатикнопочной терминальной клавиатуры, подключаемой к параллельному порту (P1). Логика построения программы.
курсовая работа [188,8 K], добавлен 15.08.2009Ознакомление с методами управления вводом/выводом в вычислительных системах. Принципы и этапы проектирования, а также реализация интеллектуальной системы с применением ввода-вывода управляемого прерываниями, с использованием языка программирования Си.
курсовая работа [71,8 K], добавлен 18.04.2015Лазерные накопители CD-ROM, CD-R, CD-RW: общая характеристика, история развития. Основы устройства DVD, их отличия от CD. Форматы DVD и их различия. Хранение оптических дисков. Сведения о неисправностях и методах их устранения. Работа с прерываниями.
курсовая работа [1,8 M], добавлен 14.07.2012Создание нового документа. Редактирование текстовых файлов типа TXT и RTF. Сохранение измененного документа. Изменение шрифта, начертания и размера символов. Отмена последнего действия. Оформление нового текста, форматирование абзаца, удаление текста.
реферат [158,6 K], добавлен 25.10.2013Изучение категории типов данных, видов выражений и операций, работа на языке Си. Составление программы вычисления значения функции у(х) при произвольном значении х. Блок-схема алгоритма. Описание текста программы и рассмотрение контрольного примера.
лабораторная работа [124,7 K], добавлен 09.01.2012Рассмотрение основных особенностей компьютерной программы Assembler: функции, структурное описание. Характеристика собственных векторов обработчиков прерываний. Div64 как функция-вычислитель, реализующая операцию деления знаковых чисел в формате 64:16.
контрольная работа [224,7 K], добавлен 11.03.2013Методика разработки и частичная реализация транслятора для языка "С" с использованием языка "С++", производящего разбиение на минимальные неделимые конструкции языка исходной цепочки символов основываясь на лексике языка. Анализ работы программы.
курсовая работа [841,3 K], добавлен 19.03.2012Нахождение рационального порядка следования запросов для обеспечения максимального критерия эффективности использования компонентов вычислительного процесса в системе. Метод ветвей и границ для максимально быстрого выполнения вычислительного процесса.
курсовая работа [196,3 K], добавлен 23.08.2009Написание программы для работы с клиентами средствами языка Delphi, которая предусматривает ввод, редактирование и удаление информации. Разработка алгоритма решения задачи, описание переменных, вспомогательных процедур, входных и выходных данных.
курсовая работа [355,7 K], добавлен 21.09.2010