У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


dx,379h

in al,dx ; dochekatysja ACK1 down

test al,40h

jz ack1down

call test_timeout ; perevirka timeout

cmp ah,09h

jne m3

jmp fin

m3: call test_esc ; perevirka Esc

cmp ah,09h

jne m4

jmp fin

m4:

jmp ack1up

ack1down:

jmp receive_loop

;;;; TRANSMITION ;;;;

transmit:

xor al,al

mov dx,378h

out dx,al ; skynuty ACK1

mov ah,3dh ; open file

mov dx,fn_offset

mov al,0 ; open for read

int 21h

jnc no_open_error

mov dx,offset open_error_mess

mov ah,09h

jmp fin

no_open_error:

mov handle,ax ; zberegty handle

mov dx,offset transmit_mess

mov ah,09h

int 21h

mov dx,fn_offset

int 21h

transmit_loop:

xor al,al

mov dx,378h

out dx,al ; skynuty ACK1

mov ah,00h

int 1ah

mov tick,dx

ack2up:

mov dx,379h

in al,dx

test al,40h

jz ack2down

call test_timeout ; perevirka timeout

cmp ah,09h

je fin

call test_esc ; perevirka Esc

cmp ah,09h

je fin

jmp ack2up

ack2down:

not hi

cmp hi,0

jz no_read_error

mov ah,3fh ; read from file

mov bx,handle

mov dx,offset buf

mov cx,1

int 21h

jnc test_ax

mov dx,offset read_error_mess

jmp fin

test_ax:

cmp ax,0

jnz no_read_error

mov dx,offset end_transmit_mess

jmp fin

no_read_error:

mov bl,buf

cmp hi,0

jz t_low_byte

shr bl,4 ; starshi piv baita v bl

t_low_byte:

and bl,00001111b

transm_cont:

mov al,bl ; zapysaty danni v port 378h

shl al,1

and al,00010000b

or al,bl

and al,00010111b

mov dx,378h

out dx,al

or al,08h ; vystavyty ACK1

out dx,al

mov ah,0

int 1ah

mov tick,dx

;;;;;;;; dochekatysja pidtverdgennja pryjomu ACK2

ack2off:

mov dx,379h

in al,dx

test al,40h

jnz ack2on

call test_timeout

cmp ah,09h

je fin

call test_esc

cmp ah,09h

je fin

test al,40h

jmp ack2off

ack2on:

jmp transmit_loop

fin:

mov ah,09h

int 21h ; druk povidomlennja

mov ah,3eh ; zakryty file

mov bx,handle

int 21h

mov ax,4c00h ; exit

int 21h

;;;;;;;;;;;;;;;;;;;;;;;;

;; perevirka Timeout ;;

;;;;;;;;;;;;;;;;;;;;;;;;

test_timeout proc

mov ah,00 ; get clock ticks

int 1ah

sub dx,tick

cmp dx,182

jl ret_to

mov ah,09h ; vydaty povidomlennja

mov dx,offset timeout_mess

ret_to: ret

test_timeout endp

;;;;;;;;;;;;;;;;;;;;

;; perevirka ESC ;;

;;;;;;;;;;;;;;;;;;;;

test_esc proc

mov ah,06 ; test Esc

mov dl,0ffh

int 21h

jz ret_esc

cmp al,27 ; ESC ?

jne ret_esc

mov ah,09h ; vydaty povidomlennja

mov dx,offset esc_mess

ret_esc:

ret

test_esc endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; oblast danyh rezydenta ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;

fn_offset dw 0 ; file name offset

handle dw 0 ; file handle

serv db 0

hi db 0

buf db 0

tick dw 0

sys_line_err db 0dh,0ah,'Incorrect parametres in command line!'

db 0dh,0ah,'Must be:',0dh,0ah,'kurs09.com [s] filename'

db 0dh,0ah,0dh,0ah,'s - send file (optionaly)'

db 0dh,0ah,'filename - file to send/recieve',0dh,0ah,'$'

esc_mess db 0dh,0ah,'Terminated by User',0dh,0ah,'$'

timeout_mess db 0dh,0ah,'Terminated by Timeout',0dh,0ah,'$'

receive_mess db 0dh,0ah,'Recieving file $'

transmit_mess db 0dh,0ah,'Transmiting file $'

open_error_mess db 0dh,0ah,'File open error',0dh,0ah,'$'

read_error_mess db 0dh,0ah,'File read error',0dh,0ah,'$'

end_transmit_mess db 0dh,0ah,'End of transmition',0dh,0ah,'$'

end start

ВИСНОВКИ

В результаті виконання завдання курсового проектування на мові Assembler розроблено програму роботи з паралельним портом, яка дозволяє передати та прийняти через LPT1: текстовий файл (назва файлу та напрям руху даних вказуються в командному як параметри при запуску програми).

Література

Основна:

1. Зубков С.В. Assembler для DOS, Windows и UNIX – 3-е изд., стер. – М.: ДМК Пресс; СПб.: Питер, 2004. – 608с.

2. Костельцев А.В. Построение интерпретаторов и компиляторов. – СПб: Наука и техника, 2001. – 224 с.

3. Системное программное обеспечение. Учебник для вузов/ А.Ю. Молчанов. - СПб: Питер, 2003. – 396 с.

4. А.В.Фролов, Г.В.Фролов. MS-DOS для програмиста №18,19. – М.: Диалог-МИФИ, 1995. – 254 с.

5. Т.Пратт. Языки программирования. Разработка и реализация. – М.: Мир, 1979.

6. Гук М. Дисковая подсистема ПК. - СПб.: Питер, 2001. – 336с.: ил.

Додаткова:

1. Бек Л. Введение в системное программное обеспечение. – М.: Мир, 1989.

2. Ф.Льюис, Д.Розенкрац, Р.Стирнз. Теоретические основы проектирования компиляторов. – М.: Мир, 1979.

3. Т.Пратт. Языки программирования. Разработка и реализация. – М.: Мир, 1979.


Сторінки: 1 2 3