ASCII-код старшої тетради молодшого байту
add al,30h
cmp al,39h
jbe mit2
add al,7h
mit2:
mov buf,al ;зберігаю його в буфері
mov ah,40h ;функція запису в файл
mov bx,diskr2 ;дескриптор файлу
mov dx,offset buf ;адреса буферу з ASCII-кодом
mov cx,1 ;кількість байт необхідних для запису
int 21h ;переривання
mov ax,stck ;відновлюю введені дані
and al,0fh ;утворюю ASCII-код молодшої тетради молодшого байту
add al,30h
cmp al,39h
jbe mit3
add al,7h
mit3:
mov buf,al ;зберігаю його в буфері
mov ah,40h ;функція запису в файл
mov bx,diskr2 ;вказую дескриптор файлу
mov dx,offset buf ;ініціалізую адресу буфера з даними
mov cx,1 ;вказую кількість байт для запису
int 21h ;переривання DOS
mov buf,' '
mov ah,40h ;функція запису в файл
mov dx,diskr2 ;вказую дескриптор файлу
mov dx,offset buf ;ініціалізую адресу буфера з даними
mov cx,1 ;вказую кількість байт для запису
int 21h переривання DOS
mov ax,stck
mov bx,ax
rcr bl,1
jc no_parity
mov bp,diskr3
;вхідні дані:
;al - data
;dx - descriptor
call write
jmp permit
no_parity:
mov bp,diskr4
call write
permit:
rcr bh,1
jc no_parity1
mov al,ah
mov bp,diskr3
call write
jmp permit1
no_parity1:
mov al,ah
mov bp,diskr4
call write
permit1:
inc di ;збільшення di на одиницю
inc di ;збільшення di на одиницю
pop cx
dec cx ;зменшення cx на одиницю
dec cx ;зменшення cx на одиницю
jz mon
jmp ma2
mon:
popa
ret
output endp
input proc
pusha
mov di,offset in_arr
mov cx,circle
mov dx,300h
in_isa:
in al,dx
mov [di],al
inc di
loop in_isa
popa
ret
input endp
close proc
pusha
mov ah,3eh ; функція закриття файлу
mov bx,diskr1 ; зберігаємо ідентифікатор відкритого файлу, який
; отриманий в регістрі ах після його створення
int 21h ; виклик переривання DOS
mov bx,diskr2 ; зберігаємо ідентифікатор відкритого файлу, який
; отриманий в регістрі ах після його створення
int 21h ; виклик переривання DOS
mov bx,diskr3 ; зберігаємо ідентифікатор відкритого файлу, який
; отриманий в регістрі ах після його створення
int 21h ; виклик переривання DOS
mov bx,diskr4 ; зберігаємо ідентифікатор відкритого файлу, який
; отриманий в регістрі ах після його створення
int 21h ; виклик переривання DOS
popa
ret
close endp
write proc
pusha ;збереження в стек регістрів
pusha ;збереження в стек регістрів
cmp bp,diskr3
je d3
jmp d4
d3:
mov ah,09h ;вивід рядка на екран
mov dx,offset f3 ;адреса рядка
int 21h ;переривання DOS
jmp permit3
d4:
mov ah,09h ;вивід рядка на екран
mov dx,offset f4 ;адреса рядка
int 21h ;переривання DOS
permit3:
popa
xor ah,ah
push ax
shr al,4 ;зсуваєм al на 4 біта вправо
add al,30h
cmp al,39h
jbe mita4
add al,7
mita4:
mov buf,al
mov ah,40h ;функція запису в файл
mov bx,bp
mov dx,offset buf ;ініціалізую адресу буфера з даними
mov cx,1 ;вказую кількість байт для запису
int 21h
mov al,buf
xor ah,ah
mov ah,02h
mov dx,ax
int 21h
pop ax
and al,0fh
add al,30h
cmp al,39h
jbe mita5
add al,7
mita5:
mov buf,al
mov ah,40h ;функція запису в файл
mov bx,bp
mov dx,offset buf ;ініціалізую адресу буфера з даними
mov cx,1 ;вказую кількість байт для запису
int 21h
mov al,buf
xor ah,ah
mov ah,02h
mov dx,ax
int 21h
mov al,' '
mov buf,al
mov ah,40h ;функція запису в файл
mov bx,bp
mov dx,offset buf ;ініціалізую адресу буфера з даними
mov cx,1 ;вказую кількість байт для запису
int 21h
mov ah,09h ;вивід рядка на екран
mov dx,offset exit
int 21h
popa
ret
write endp
end main
Висновки
В процесі виконання курсового проекту було досягнуто кінцевої мети – спроектовано програмне та апаратне забезпечення для обчислювального пристрою приймання, обробки та передавання даних на базі персонального комп’ютера.
Розроблене проектування програмного та апаратного забезпечення можна легко вдосконалити оскільки принцип будови дозволяє вносити зміни в проектування не порушуючи його основної будови.
Література
Основна:
1. Зубков С.В. Assembler для DOS, Windows и UNIX – 3-е изд., стер. – М.: ДМК Пресс; СПб.: Питер, 2004. – 608с.
2. Джорден Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT: Пер. с англ./ Предисл. Н.В. Гайского. – М.: Финансы и статистика, 1992. – 544с.
3. Фролов А.В., Фролов Г.В. MS-DOS для программиста. – М.: ДИАЛОГ-МИФИ, 1995. – 256с.
4. Системное программное обеспечение. Учебник для вузов/ А.Ю. Молчанов. - СПб: Питер, 2003. – 396 с.
5. Костельцев А.В. Построение интерпретаторов и компиляторов. – СПб: Наука и техника, 2001. – 224 с.
Додаткова:
1. Компаниец Р.И., Маньков Е.В., Филатов Н.Е. Системное програмирование. Основы построения трансляторов. - С-П: Корона принт, 2000.
2. Харт, Джонсон. Системное программирование в среде Win32. 2-е изд. Пер.с англ. – М.: Издательский дом „Вильямс”, 2001. – 464 с.: ил.
3. Гук М. Дисковая подсистема ПК. - СПб.: Питер, 2001. – 336с.: ил.
4. Юров В.Assembler. Специальный справочник. – СПб.: Питер, 2001. – 496 с.: ил.
5. Пирогов В.Ю. Assembler. Учебный курс. - М.: Нолидж, 2001.
Опис принципової схеми
З приходом імпульса з генератора на вхід С регістра DD8 дані записуються в нього.
Коли вхід R лічильника DD4 скидається в 0, імпульс генератора інкрементує значення на лічильнику DD4. Коли на Q4 – «одиниця», відкривається ключ DD7 і дані зсуваються і передаються через СОМ – порт послідовно.
Через вісім тактів лічильник скидається в «нуль», і тоді з приходом імпульса від генератора відбувається паралельний запис.