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


Гость






Вот программа, меняющая системное время:
.386
.model flat, stdcall
option casemap :none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\advapi32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\advapi32.lib

EnablePrivilege proto :DWORD, :DWORD

.data
szTimePriv db "SeSystemTimePrivilege", 0
time SYSTEMTIME <0>

.code
start:

invoke GetCurrentProcess
invoke EnablePrivilege, eax, ADDR szTimePriv
or eax,eax
jz _exit
;
invoke GetLocalTime,ADDR time
mov si,time.wHour
mov time.wHour,10
invoke SetLocalTime,ADDR time
;
_exit:
invoke ExitProcess,0

EnablePrivilege proc hProcess: DWORD, szPrivilegeName: DWORD
LOCAL hToken: DWORD
LOCAL tpNew: TOKEN_PRIVILEGES

invoke OpenProcessToken, hProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, ADDR hToken
.IF eax
invoke LookupPrivilegeValue, 0, szPrivilegeName, ADDR tpNew.Privileges[0].Luid
.IF eax
mov tpNew.PrivilegeCount, 1
mov tpNew.Privileges[0].Attributes, SE_PRIVILEGE_ENABLED
invoke AdjustTokenPrivileges, hToken, 0, ADDR tpNew, 0, 0, 0
.ENDIF
.ENDIF
ret
EnablePrivilege endp

end start

(masm32)
 К началу страницы 
+ Ответить 

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


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

 





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