Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
METODIchka4.DOC
Скачиваний:
5
Добавлен:
04.05.2019
Размер:
940.03 Кб
Скачать

Функция 02h

Вводит один символ из порта

*Вход:

АН = 02h

DX = номер стыка (0-СОМ1, 1-СОМ2 и т. д.)

*Выход:

АН = состояние линии (см. функцию 00h)

AL = введенный символ

*Примечание:

Ожидает поступления символа из линии и возвра­щает его в AL; состояние линии возвращается в АН. Если произошла ошибка, то устанавливается бит 7 АН. Определить ошибку можно вызвав функцию 03h.

Функция 03h

Производит опрос состояния последовательного порта

*Вход:

АН = 03h

DX = номер стыка (0 - СОМ1, 1- СОМ2 и т. д.)

*Выход:

АН = состояние линии (см. функцию 00h) AL = состояние модема

*Примечание:

Возвращает состояние линии (см. функцию 00h) и состояние модема.

Существуют специальные программы, обеспечива­ющие передачи информации между двумя компьюте­рами по последовательному каналу. Одна из них включена в версию Norton Commander версии 3.0. Для работы с этой командой запустите версию 3.0 Norton Commander, F9 - войдите в меню, на правой или левой панели выберите в меню команду Link. Предварительно необходимо соединить кабелем два PC. Команда Link предлагает выбрать порты (СОМ1 , или COM2 ) и тип данной машины( Master - ведущая машина или Slave - ведомая машина ). Для одной машины выберите Master, а для другой Slave. Можно установить так же ускоренную или обычную скорость передачи. После установок параметров запустить команду Link. Запуск произвести одновременно на обоих PC. Для установления связи требуется 5-10 секунд, если за это время связь не установилась надо попробовать изменить значение портов, например, СОМ1 заменить на COM2 и перезапустить команду.

Пример выполнение работы

Работа выполняется на двух компьютерах, соеди­ненных кабелем, подключенным к стыку 25-штырь-ковыми разъемами. Чаще всего 25-штырьковый разъем подключается к порту COM2, поэтому при составле­нии программы в первую очередь следует использо­вать порты COM2. Работа состоит из двух частей: Для каждого варианта задания составляются две програм­мы работы: для передающей (OUT.ASM ) и для принимающей ( INP.ASM ) машин. Ниже приведен пример программирования СОМ1 для передачи и приема символа. В примере общие процедуры работы со стандартными устройствами ввода/вывода выделе­ны в отдельный файл LIB.ASM. С помощью директи­вы ассемблера INCLUDE <имя файла> LIB.ASM вста­вляется в обе программы, в место, определенное директивой INCLUDE. Эта директива имеет вид INCLUDE <имя файла>, где <имя файла> - имя файла (если необходимо указывается директория), содержащего любые данные, которые директива вставляет в программу при трансляции вместо себя.

;Программа передачи символа через СОМ1

; OUT.ASM

data segment

messi db 13,10, 'Передача символа : "

char db "A" ; передаваемый символ

db "$"

mess2 db 13,10,'Символ передан. Код завершения : $'

coderet db ?

data ends

code segment

assume cs:code,ds:data

start: mov ax,data ; Инициализация регистра

mov ds,ax ; сегмента данных DS

call initrs232 ; инициализация интерфейса RS-232

mov dx,offset soob1 ; Вывод сообщения

call print_text ; на экран

; Передача символа

mov ah,l ; Номер функции 1

mov al,char ; Передаваемый символ Char

mov dx,0 ; Номер используемого интер­фейса COM1

int 14h ; Передача символа по сети

mov coderet, ah ; Сохраняем код завер­шения прерывания

mov dx,offset mess2 ; Вывод сообщения о завершении

call print_text ; передачи символа по сети

mov al,coderet ; Вывод кода возврата

call print_al ; (Выводимый код в AL)

mov ax,4C00h ; Завершение программы

int 21h ; и выход в DOS

include lib.asm ;Подключение библиотеки процедур

code ends

end start

Файл INP.ASM:

; INP.asm

data segment

mess db 13,10,'Принят символ "

char db ?,'$'

mess1 db 13,10,'Код завершения $'

data ends

code segment

assume cs:code,ds:data,ss:stack

Start:

mov ax, data ; Инициализация регистра

mov ds,ax ; сегмента данных DS

call initrs232 ; Инициализация интерфейса RS-232

;Прием символа mm:

mov ah, 2 ; Функция чтения символа

mov dx, 0 ; Читаем из линии СОМ1

int 14h ; Прием символа

or ah,ah ; Проверяем ошибку

jne mm ; Бесконечный цикл до получения символа

; Получили символ, печатаем его

mov char.al

mov dx, offset mess

call print_text

; Печатаем регистр статуса линии (код возврата)

mov dx,offset mess1

call print_text

xchg al,ah

call print_al

; Завершаем работу, выходим в DOS

mov ax,4C00h

int 21h

include lib.asm

code ends

end Start

; библиотека стандартных процедур

; имя файла на диске - LIB.ASM

initrs232 proc near ; инициализация порта СОМ1

push ds ; сохране-

push cs ;ние

pop ds ;регистров

mov al,l 1111111b ;скорость передачи 9600бод, контроль на четность,

; 2 стоповых бита, длина слова 8 бит

mov ah,Oh ; номер функции

xor dx.dx ; COM1

int 14h ; вызов прерывания

mov dx,offset cs:init ; вывод

call print_text ; сообщения

call print_al ; вывод

xchg al,ah ; сообщений

mov dx,offset cs:statusl ; о

call print_text ; статусе

call print_al ; линии

pop ds

ret

initrs232 endp

print_al proc near ; процедура вывода шес­тнадцатиричного числа из AL

push ax ; сох-

xor ah, ah ; раня-

push ds ; ем

push ax ; co-

push bx ; дер-

push cx ; жи-

push dx ; мое

push di ; регистров

push cs ; устанавливаем

pop ds ; ds на cs

mov ex,16 ;

print_n: ;

mov bx,16 ; основание системы

xor dx,dx ; счисления

div bx ; деление 32х16

mov di,dx ; остаток в di

mov b1, byte ptr cs:print_table[di] ; 16-тиричную цифру из таблицы

mov di,cx ; цифру

mov byte ptr cs:print_buf[di],bl ; в буфер вывода

cmp ax,0h ; частное = 0

jle print_nl ; да

loop print_n ; на следующую цифру

print_ nl: ;

mov di,cx ;

mov al, byte ptr cs:print_buf[di]

mov bx,07 ; цвет

mov ah.0Eh

int 10h

inc cx

cmp cx,17

jne print_nl

pop di ; восста-

pop dx ; навлива-

pop cx ; ем

pop bx ; co- pop ax ; дер-

pop ds ; жи-

pop ax ; мое

ret ; регистров

print_al endp

print_text proc near ; вывод на экран сообщений

push ax

mov ah,09H

int 21H

pop ax

ret

print_text endp

print_table db "0123456789ABCDEF"

print_buf db 17 dup (0)

init db 13,10,"Инициализация порта СОМ1"

db 13,10,"Регистр статуса модема $"

statusl db 13,10, "Регистр статуса линии $"

Варианты заданий.

1. Передать, принять и напечатать строку симво­лов произвольной длины ( до 100 символов ).

2. Передать, принять и напечатать копию экрана с учетом цвета символов.

3. Организовать пересылку сообщений между ма­шинами ( форма диалога ).

4. Передать из одной машины в другую файл произвольной длины.

5. Передать из одной машины в другую директо­рию и имя файла, хранящегося в принимающей машине, которая выдает сообщение о результатах поиска файла.

6. Передать из одной машины в другую файл произвольной длины, которая по мере приема выво­дит его на экран.

7. Передать из одной машины в другую копию экрана с атрибутами цвета, создать в принимающей машине файл, хранящий копию переданного экрана.

8. Передать системное время, установить в прини­мающей машине новое ситемное время равное пере­данному.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]