IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Работа с com-портом, передать\ установить системное время
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Всем привет! smile.gif По заданию, мне нужно передать системное время,а затем установить в принимающей машине новое системное время, равное переданному.
Нашёл функции по взятию и установки системного времени: 2cH и 2dH, соответственно...
Вот как я их использую:

data segment

h db ?
m db ?
s db ?
ms db ?

data ends

code segment
assume cs:code, ds:data

GetTime proc

push ax
push cx
push dx

xor ax,ax
xor cx,cx
xor dx,dx

mov ah, 2ch
int 21h

mov h, ch
mov m, cl
mov s, dh
mov ms,dl

pop dx
pop cx
pop ax
ret
GetTime endp

SetTime proc

push ax
push cx
push dx

xor ax,ax
xor cx,cx
xor dx,dx

mov ch, 11h
mov cl, 0
mov dh, 0
mov dl, 0

mov ah, 2dh
int 21h


pop dx
pop cx
pop ax
ret
SetTime endp

start:
mov ax, data
mov ds, ax

call GetTime
call SetTime
;call GetTime

fin: mov ax, 4c00h
int 21h

code ends
end start


Почему не происходит установка нового времени?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Добрый вечер! smile.gif Сегодня я тестировал программу (передача системного времени через COM порт, написанная на ассемблере)...Но что-то как-то не особо удачно, вобщем время не передалось...
Это код программы для передающей машины:

data segment

h db ?,?,?,?

mesmen db 13,10,"Choose COM-X :",13,10,13,10,"COM-1 pressed(1)",13,10,"COM-2 pressed(2)",13,10,"COM-3 pressed(3)",13,10,"COM-4 pressed(4)",13,10,"$"

mes1 db 13,10,"COM-1 is active!!!",13,10,"$"
mes2 db 13,10,"COM-2 is active!!!",13,10,"$"
mes3 db 13,10,"COM-3 is active!!!",13,10,"$"
mes4 db 13,10,"COM-4 is active!!!",13,10,"$"


data ends

code segment
assume cs:code, ds:data

clrscn proc

push ax
push bx
push ds
push es

mov cl, 0
mov ch, 0
mov dl, 80
mov dh, 25

xor ax,ax
mov al,0

xor bx, bx
mov bh, 10

int 10h

pop es
pop ds
pop bx
pop ax

ret

clrscn endp


GetTime proc

push ax
push cx
push dx

xor ax,ax
xor cx,cx
xor dx,dx

mov ah, 2ch
int 21h

mov h, ch
mov h+1, cl
mov h+2, dh
mov h+3, dl

pop dx
pop cx
pop ax
ret
GetTime endp

start:
mov ax, data
mov ds, ax

met:
call clrscn

mov ah, 09h
mov dx,offset mesmen
int 21h

mov ah,01h
int 21h

cmp al,'1'
jz m1
cmp al,'2'
jz m2
cmp al,'3'
jz m3
cmp al,'4'
jz m4
jmp met


m1:
call clrscn

mov ah, 09h
mov dx,offset mes1
int 21h

mov ax,0040h
mov es, ax
mov ds, es:[0000]
jmp beg

m2: call clrscn

mov ah, 09h
mov dx,offset mes2
int 21h

mov ax,0040h
mov es, ax
mov ds, es:[0002]
jmp beg

m3: call clrscn

mov ah, 09h
mov dx,offset mes3
int 21h

mov ax,0040h
mov es, ax
mov ds, es:[0004]
jmp beg

m4: call clrscn

mov ah, 09h
mov dx,offset mes4
int 21h

mov ax,0040h
mov es, ax
mov ds, es:[0006]

beg: add dx,3
mov al, 10000000b
out dx,al
nop
nop
mov ax,417h
sub dx,3
out dx,al
nop
nop
inc dx
mov al,ah
out dx,al
nop
nop
;установка протокола
inc dx
inc dx
mov al,00011111b
out dx, al
nop
nop
sub dx,3

;передающая машина

call GetTime

mov cx,4
mov si,0

mm: add dx,5
mm1: in al,dx
and al, 01100000b
cmp al, 01100000b
jnz mm1

;в al записать очередной символ

mov al,h+si
inc si

sub dx,5
out dx,al
loop mm


fin: mov ax, 4c00h
int 21h

code ends
end start


При запуске ехе-шник какбы виснит. Что не так в коде, какие будут замечания и поправки? подскажите пожалуйста yes2.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.04.2024 17:49
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name