Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2009, 13:54   #1
sande
 
Регистрация: 16.01.2009
Сообщений: 7
По умолчанию

А кто нить знает как сделать
1. Обеспечить взаимосвязь двух компьютеров через com port.
2. На первом компьютере будет заполняться массив А, затем передаваться второму.
3. Второй компьютер должен принять массив А, обработать его и отправить первому.
4. Первый должен принять вычисленное значение и вывести его на экран.

для сортировки массива

Цитата:
title Primer
assume cs:c,ds,ss:s
s segment stack ; описываем сегмент стека из 128 слов
dw 128 dup(?)
s ends

d segment ; описываем сегмент данных
X dw 10 dup (?) ; начиная с адреса Х следует резервировать 10 слов.
B dw 10 dup (?) ; начиная с адреса В следует резервировать 10 слов.
N dw 0
A dw 100 dup(?)
msg db 'massiv=$' ; приглашение к вводу н

cr = 0dh ; данные для процедур ввода и вывода чисел
lf = 0ah
string db 255, 0, 255 dup (?)
errmsg db 'error: illegal symbol'
crlf db cr,lf,'$'
negflag dw ?

d ends

c segment ; описываем сегмент кодов команд
IntegerOut proc ; процедура вывода целого числа из ax
xor cx,cx
mov bx,10
cmp ax,0
jge m
neg ax
push ax
mov ah,6
mov dl,'-'
int 21h
pop ax
m: inc cx
xor dx,dx
div bx
push dx
or ax,ax
jnz m
m1: pop dx
add dx,'0'
mov ah,6
int 21h
loop m1
IntegerOut endp

IntegerIn proc ; процедура ввода целого числа в ax
mov ah,0ah
lea dx,string
int 21h
xor ax,ax
lea si,string+2
mov negflag,ax
cmp byte ptr [si],'-'
jne m2
not negflag
inc si
jmp m3
m2: cmp byte ptr [si],'+'
jne m3
inc si
m3: cmp byte ptr [si],cr
je ex1
cmp byte ptr [si],'0'
jb er
cmp byte ptr [si],'9'
ja er
mov bx,10
mul bx
sub byte ptr [si],'0'
add al,[si]
adc ah,0
inc si
jmp m3
er: lea dx,errmsg
mov ah,9
int 21h
jmp IntegerIn
ex1: cmp negflag,0
je ex
neg ax
ex: push ax
mov ah,9
lea dx,crlf
int 21h
pop ax
ret
IntegerIn endp

start: mov Ax,d
mov Ds,Ax
mov Ah,9
lea Dx,MSG
int 21h
call IntegerIN
mov N,Ax
mov Cx,N
xor Si,Si
K: push Cx
push Si
call IntegerIN
pop Si
pop Cx
mov A[Si],Ax
add Si,2
loop K

mov cx, N
lea di, A
next:
push cx
mov ax, N
sub ax, cx
shl ax, 1
lea si, A
add si, ax
mov ax, word ptr [di]
next2:
mov dx, word ptr [si]
cmp dx, ax
jnl next3
mov word ptr [si], ax
mov word ptr [di], dx
mov ax, dx
next3:
add si, 2
loop next2
add di, 2
pop cx
loop next

exit:
mov Cx,N
xor Si,Si
K2:
push Cx
push Si
mov Ax, A[Si]
call IntegerOut; выводим результат
pop Si
pop Cx
add Si,2
loop K2

mov Ah,4ch; завершаем работу программы.
int 21h

c ends
end start

Последний раз редактировалось sande; 19.01.2009 в 16:25.
sande вне форума Ответить с цитированием
Старый 21.01.2009, 08:53   #2
sande
 
Регистрация: 16.01.2009
Сообщений: 7
По умолчанию

помогите пожалуйста найти ошибки!!
Вложения
Тип файла: rar cherez 2 kompa.rar (1,007 байт, 18 просмотров)
sande вне форума Ответить с цитированием
Старый 21.01.2009, 23:43   #3
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Может стоит попробовать использовать 14-ое прерывание BIOS:

Цитата:
Функции BIOS для СОМ-портов

Порты поддерживаются сервисом BIOS INT 14h, который обес-
печивает следующие функции:

^ ООh - инициализация (установка скорости обмена и фор-
мата посылок, заданных регистром AL; запрет источни-
ков прерываний). На сигналы DTR и RTS влияния не ока-
зывает (после аппаратного сброса они пассивны).

^ O1h - вывод символа из регистра AL (без аппаратных пре-
рываний). Активируются сигналы DTR и RTS, и после
освобождения регистра THR в него помещается выводи-
мый символ. Если за заданное время регистр не освобож-
дается, фиксируется ошибка тайм-аута и функция завер-
шается.

^ 02h - ввод символа (без аппаратных прерываний). Акти-
вируется только сигнал DTR (RTS переходит в пассивное
состояние), и ожидается готовность принятых данных,
принятый символ помещается в регистр AL. Если за за-
данное время данные не получены, функция завершает-
ся с ошибкой тайм-аута.

^ 03h - опрос состояния модема и линии (чтение регист-
ров MSR и LSR). Эту гарантированно быструю функцию
обычно вызывают перед функциями ввода/вывода во из-
бежание риска ожидания тайм-аута.

При вызове INT 14h номер функции задается в регистре АН,
номер порта (0-3) - в регистре DX(0 - СОМ 1, 1 - COM2...).
При возврате из функций 0,1 и 3 регистр АН содержит байт
состояния линии (регистр LSR), AL - байт состояния моде-
ма (MSR). При возврате из функции 2 нулевое значение
бита 7 регистра АН указывает на наличие принятого симво-
ла в регистре AL', ненулевое значение бита 7 - на ошибку
приема, которую можно уточнить функцией 3.
Это в общих чертах. Информации море, воспользуйтесь поиском по форуму (хотя бы для начала).
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ноты и интервалы между ними треч Помощь студентам 5 01.02.2008 02:39
Передача данных между страницами IQ-40 Безопасность, Шифрование 0 28.01.2008 11:32
Связь 2-х и более компьютеров в сети DOLBY Работа с сетью в Delphi 3 27.12.2007 09:39
передача данных между процедурами Неясыть Общие вопросы Delphi 15 18.11.2007 12:54
Передача данных между окнами/приложениями? Dexer Win Api 11 23.05.2007 16:23