Работа с прерываниями 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.