Інститут менеджменту та економіки “Галицька Академія”
КУРСОВА РОБОТА
з дисципліни Системне програмування
Тема – Проектування системного програмного забезпечення для обчислювального пристрою обробки та передавання даних на базі персонального комп’ютера.
ЗМІСТ
Стор
1. Блок-схема алгоритму обробки та передавання даних на базі персонального комп’ютера ………………………………………………………………….................7
2. Текст програми мовою ASSEMBLER………………................................................9
4. ВИСНОВКИ..............................................................................................................13
5. ПЕРЕЛІК ВИКОРИСТАНИХ ЛІТЕРАТУРНИХ ДЖЕРЕЛ.................................14
КР.КІз-10.00.00.000 ПЗ
Зм. | Лист | № докум | Підпис | Дата
Розроб. | Псюк |
Проектування системного програмного забезпечення для обчислювального пристрою обробки та передавання даних на базі персонального комп’ютера. |
Літ. | Арк. | Аркушів
Перевір. | Іщеряков | 6 | 14
Реценз. | ІМЕ ГА
Н.Контр.
Затверд.
1. Блок-схема алгоритму обробки та передавання даних на базі персонального комп’ютера
Арк.
7
Зм. | Арк. | № докум | Підпис | Дата
Арк.
8
Зм. | Арк. | № докум | Підпис | Дата
2. Текст програми мовою ASSEMBLER
.model small
.stack 100h
.data
f1 DB 'f1',0
f2 DB 'f2',0
f3 DB 'f3',0
f4 DB 'f4',0
f5 DB 'f5',0
buf_max db 0
buf_min db 0
.code
start:
mov ax,@data
mov ds,ax
mov es,ax
mov dx,3feh
in al,dx
or al,80h
out dx,al
mov dl,f9h ; встановлення швидкості 19200 к/б
xor al,al
out dx,al
dec dl
mov al,6
out dx,al
mov dl,feh
in al,dx
and al,7fh
out dx,al
;--------------------------------------------------
; створення файлу 1
mov ah,3ch
xor cx,cx ; cx = 0
lea dx,f1 ;загрузка адреса імені файла
int 21h
; перевірка на помилку
jc m
mov [0100h],ax
Арк.
8
Зм. | Арк. | № докум | Підпис | Дата
; читання 256 байт з СОМ порта і запис у файл 1
mov cx,100h ;кількисть елементів 256 б,об'єм масиву
mov bx,[0100h]; початкова адреса
m2:
mov dx,3fbh ;dx - адреса регістру порту з ознакою завершення приймання
m1:
in al,dx ;al - регістр порту з ознакою прийманя
shr al,1 ;
jnc m1 ;якщо cf не = 1, продовжуємо очікувати завершення команд
mov dl,f8h ;dx - адреса регістру порту з прийнятим байтом
in al,dx ;al - прийнятий байт
mov [bx],al ;занесеня прийнятого байта до масиву
inc bx ;підготовка нової адреси масиву
loop m2 ;повтор циклу
; закрити ф1
mov ah,3eh
mov bx,[0100h]
int 21h
;--------------------------------------------------
; створення файлу 2
mov ah,3ch
xor cx,cx
lea dx,f2
int 21h
; перевірка на помилку
jc m
mov [0200h],ax ; створення файлу 2
; читання 256 байт з СОМ порта і запис у файл 2
mov cx,100h ;кількисть елементів 256 б,об'єм масиву
mov bx,[0100h]; початкова адреса
m4:
mov dx,3fbh ;dx - адреса регістру порту з ознакою завершення приймання
m3:
in al,dx ;al - регістр порту з ознакою прийманя
shr al,1 ;
jnc m3 ;якщо cf не = 1, продовжуємо очікувати завершення команд
mov dl,f8h ;dx - адреса регістру порту з прийнятим байтом
in al,dx ;al - прийнятий байт
mov [bx],al ;занесеня прийнятого байта до масиву
inc bx ;підготовка нової адреси масиву
loop m4 ;повтор циклу
Арк.
9
Зм. | Арк. | № докум | Підпис | Дата
; закрити ф2
mov ah,3eh
mov bx,[0200h]
int 21h
;--------------------------------------------------
; створення файлу 3
mov ah,3ch
xor cx,cx
lea dx,f3 ;загрузка адреса імені файла
int 21h
; перевірка на помилку
jc m
; читання 256 байт з СОМ порта і запис у файл 3
mov cx,100h ;кількисть елементів 256 б,об'єм масиву
mov bx,[0100h]; початкова адреса
m6:
mov dx,3fbh ;dx - адреса регістру порту з ознакою завершення приймання
m5:
in al,dx ;al - регістр порту з ознакою прийманя
shr al,1 ;
jnc m5 ;якщо cf не = 1, продовжуємо очікувати завершення команд
mov dl,f8h ;dx - адреса регістру порту з прийнятим байтом
in al,dx ;al - прийнятий байт
mov [bx],al ;занесеня прийнятого байта до масиву
inc bx ;підготовка нової адреси масиву
loop m6 ;повтор циклу
; закрити ф3
mov ah,3eh
mov bx,[0300h]
int 21h
\
;--------------------------------------------------
; створення файлу 4
mov ah,3ch
xor cx,cx
lea dx,f4 ;загрузка адреса імені файла
int 21h
; перевірка на помилку
jc m
mov [0200h],ax
Арк..
10
Зм. | Арк. | № докум | Підпис | Дата
; читання 256 байт з СОМ порта і запис у файл 4
mov cx,100h ;кількисть елементів 256 б,об'єм масиву
mov bx,[0100h]; початкова адреса
m8:
mov dx,3fbh ;dx - адреса регістру порту з ознакою завершення приймання
m7:
in al,dx ;al - регістр порту з ознакою прийманя
shr al,1 ;
jnc m7 ;якщо cf не = 1, продовжуємо очікувати завершення команд
mov dl,f8h ;dx - адреса регістру порту з прийнятим байтом
in al,dx ;al - прийнятий байт
mov [bx],al ;занесеня прийнятого байта до масиву
inc bx ;підготовка нової адреси масиву
loop m8 ;повтор циклу
; закрити ф4
mov ah,3eh
mov bx,[0400h]
int 21h
;--------------------------------------------------
; створення файлу 5
mov ah,3ch
xor cx,cx
lea dx,f5 ;загрузка адреса імені файла
int 21h
; перевірка на помилку
jc m
mov [0500h],ax
;--------------------------------------------------
; відкрити ф1 для читання
mov ax,3d00h
lea dx,f1
int 21h
; перевірка на помилку
jc m
mov [0100h],ax
mov ah,40h ; функція читання з файлу
mov bx,ax
mov cx,100h
mov dx,offset buffer ; адреса буфера (масива) в пам"яті
int 21h
Арк.
11
Зм. | Арк. | № докум | Підпис | Дата
; закрити ф1
mov ah,3eh
mov bx,[0100h]
int 21h
; пошук максимального та мінімального елемнтів
;пошук max значення
mov cx,100h
mov bx,0102h
mov ax,[0100h]; ax=x0=max
m10:
cmp ax,[bx]
jnc m9
mov ax,[bx]
m9:
inc bx
inc bx
loop m10
;пошук min значення
mov cx,100h
mov bx,0102h
mov ax,[0100h]; ax=x0=max
m12:
cmp ax,[bx]
jc m11
mov ax,[bx]
m11:
inc bx
inc bx
loop m12
; запис їх у ф5
mov dx, offset buf_max ; адреса памяті де зберігається max елемент
mov cx,2
mov ah,40h ;задання номера функції читання
mov bx,[0500h] ; загрузка дискриптора
mov dx, offset buf_min ; адреса памяті де зберігається min елемент
mov cx,2
mov ah,40h ;задання номера функції читання
mov bx,[0500h] ; загрузка дискриптора
Арк.
12
Зм. | Арк. | № докум | Підпис | Дата
;--------------------------------------------------
; відкрити ф2 для читання
mov ax,3d00h
lea dx,f2
int 21h
; перевірка на помилку
jc m
mov [0100h],ax
mov ah,40h ; функція читання з файлу
mov bx,ax
mov cx,100h
mov dx,offset buffer ; адреса буфера (масива) в пам"яті
int 21h
; закрити ф2
mov ah,3eh
mov bx,[0200h]
int 21h
; пошук максимального та мінімального