Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. Закрыто  Сообщений: 10 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 09.11.2004
Собственно есть программа (курсак) которая записывает в файл время входа и время выхода юзера (юзер запускает экзешку и прога проверяет - залогинен ли юзер если да - то предлагает выйти из (лог офф) если нет - то предлагает ввести логин)
Вся прога была написана на досовском ассемблере (книга Питер Абель) со стандартными операторами и без привязок под систему.
Так вот эта прога НЕ ПАШЕТ ПОД ДОС и ВИН9х а только пашет под НТ винды (ХР 2000.... и тд). В институте везде стоит вин 9х =(
Не подскажите в чем дело....?!
PS: И еще - работают ли резидентные проги под вин ХР ?

КОД ПРОГИ НИЖЕ:

title h
.model small
.stack 64
.data
.386

;-----------------------FILE---------------------
file db 'D:\log.txt',00h
descr dw ?

fileT db 'D:\temp.txt',00h
descrT dw ?

;------------------------------------------------
ExitMess db 'LOG OFF ? Y/N : ','$'
HelloMess db 'Enter your name to LOG ON: ','$'
;--------------------------LOGIN-----------------
parlist label byte
maxlen db 15
curlen db ?
names db 16 dup (' ')
;--------------Dlya s4itivaniya s klavi---------------------
parlistT label byte
maxlenT db 2
currlenT db ?
temp db 3 dup (' ')
;-----------------------------------------------------



;--------------------------TIME--------------------
yy dw ? ;pole dlya goda
mm db ? ;pole dlya mesyaca
da db ? ;pole dlya dnya
hh db ? ;pole dlya 4asa
mn db ? ;pole dlya minut
;15 znakomest
;-----------------------------------------------------


ost db 13,10
buffer db 4 dup (' ')
Tempnames db 16 dup (' ')
defis db ' - '



.code
main proc far
mov ax,@data
mov ds,ax

call fileOpen
call rwlogdata
call timer
call terminate

main endp


;---------------PROCEDURA OTKRITIYA FAILA-------------
fileOpen proc near

push eax
push ecx
push edx
push edi

;Otkrivaem osnovnoy FILE
mov ah,5bh
mov cx,00
lea dx,file
int 21h

mov ah,3dh
mov al,010
lea dx,file
int 21h
mov descr,ax

;peremeshayem karetku v konec faila
mov ah,42h
mov al,02
mov bx,descr
mov cx,00h
mov dx,00h
int 21h

;Otkrivaem TEMP FILE
mov ah,5bh
mov cx,00
lea dx,fileT
int 21h

mov ah,3dh
mov al,010
lea dx,fileT
int 21h
mov descrT,ax


pop eax
pop ecx
pop edx
pop edi
ret
fileOpen endp
;-----------------------------------------------------





;-------------PROCEDURA S4ITIVANIYA LOGINA--------------
rwlogData proc near

push eax
push ecx
push edx
push edi


;smotrim v temp file

mov ah,3fh
mov bx,descrT
mov cx,10H
lea dx,TempNames
int 21h

mov al,[tempNames+0]
cmp al,' '
je next

;-------Esli polzovatel zaloginen
l1:
mov ah,09h
lea dx,ExitMess
int 21h

mov ah,0ah
lea dx,parlistT
int 21h

cmp [temp+0],'n'
je quit


cmp [temp+0],'y' ;viyti iz sistemi LOG OFF
jne l1

;stavim tire
mov ah,40h
mov bx,descr
mov cx,03h
lea dx,defis
int 21h
;Dopisivaem vremya
call timer





;-----------DELITING TEMP FILE-------------------------------------
mov ah,41h
lea dx,fileT
int 21h


;-------------------------------------------------------------------
;pervod na sleduyushuu stroku
mov ah,40h
mov bx,descr
mov cx,02h
lea dx,ost
int 21h

jmp quit


next:
;s4itivaem infu s ekrana
mov ah,09h
lea dx,HelloMess
int 21h

mov ah,0ah
lea dx,parlist
int 21h

;ybiraem "enter" posle imeni
mov si,0
mov cx,15
a1:
mov al,[names+si]
cmp al,0dh
jne q1
mov [names+si],' '
q1:
inc si
loop a1




;zapis imeni v LOG file
mov ah,40h
mov bx,descr
mov cx,10h
lea dx,names
int 21h

;zapis imeni v TEMP file
mov ah,40h
mov bx,descrT
mov cx,10h
lea dx,names
int 21h



pop eax
pop ecx
pop edx
pop edi

ret
rwlogdata endp
;----------------------------------------------------------


;-------------------PROCEDURA ZAPISI DATI V FILE-----------
writedata proc near

push eax
push ecx
push edx
push edi

;o4ishaem buffer posle predidushego vvoda
mov cx,4
mov si,0
a2:
mov [buffer+si],20h
inc si
loop a2

mov bx,16
mov cx,0
lea di,[buffer+4]
call convert

mov ah,40h
mov bx,descr
mov cx,04h
lea dx,buffer
int 21h

pop eax
pop ecx
pop edx
pop edi

ret
writedata endp
;----------------TIMER PROCEDURE----------------------
timer proc near

push eax
push ecx
push edx
push edi

mov ah,04h
int 1ah
mov yy,cx
mov mm,dh
mov da,dl

mov ah,02h
int 1ah
mov hh,ch
mov mn,cl

mov ax,yy
call writedata

movzx ax,mm
call writedata

movzx ax,da
call writedata

movzx ax,hh
call writedata

movzx ax,mn
call writedata


pop eax
pop ecx
pop edx
pop edi

ret
timer endp
;-------------------------------------------



;----------------CONVERTING PROCEDURE------------------------
convert proc near

push eax
push ecx
push edx
push edi

a3:
mov dx,0
div bx
dec di
mov [di],dl
inc cx
cmp ax,0
jne a3

a4:
mov dl,[di]
add dl,48
mov [di],dl
inc di
loop a4

pop eax
pop ecx
pop edx
pop edi

ret
endp convert
;--------------------------------------------
terminate proc near

quit:
;zakrivaem file
mov ah,3eh
mov bx,descr
int 21h

mov ah,3eh
mov bx,descrT
int 21h


mov ax,4c00h
int 21h
ret
terminate endp

end main



Партнер
 

Member
Статус: Не в сети
Регистрация: 09.01.2003
Фото: 1
а ты её дебагером посмотри под 9x. А чем те , например , драйвер звуковушки не резидент ? конечно работают :)


 

Member
Статус: Не в сети
Регистрация: 09.11.2004
SlowMouse
так вот не могу дебаггер найти =(
не дашь линк ? (или на мыло мне скинь) - а то гугл не находит =(
а насчет резидента энто хорошо = )


 

Member
Статус: Не в сети
Регистрация: 09.01.2003
Фото: 1
дебаггер (td.exe) и сам тасм : http://www.style-idea.ru/TASMnadTD.jpg <-- в понедельник удалю
ПЕРЕИМЕНУЙ jpg в rar :)


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
SlowMouse
Цитата:
дебаггер (td.exe) и сам тасм
Хе, ИМХО уж лучше SoftIce юзать, писать на виндовом ассемблере и не юзать досовских прерываний.
Цитата:
А чем те , например , драйвер звуковушки не резидент ?
В том-то и дело, что драйвер. Насколько я догадываюсь чтобы стать 100% резидентом - нужно пролезть в нулевое кольцо защиты. Под NT обыкновенной программе это зделать не представляется возможным, только под Win9x(через ошибку в защите как положим Win95.CIH), иль я не про то думаю :-)

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 09.01.2003
Фото: 1
Daemon писал(а):
SlowMouse
Цитата:
дебаггер (td.exe) и сам тасм
Хе, ИМХО уж лучше SoftIce юзать, писать на виндовом ассемблере и не юзать досовских прерываний.

ну , если не придираться , то резидент - это прога кот. остаётся в памяти после запуска. (сколько,какого и какой эт уже другие вопросы) .


 

Member
Статус: Не в сети
Регистрация: 09.11.2004
SlowMouse
Спасибо за дебаггер
И еще - кто нибудь знает - корректно ли проходит умножение BCD (упакованных и неупакованных) чисел при использовании команды MUL ????

Добавлено спустя 5 минут, 33 секунды:
SlowMouse
Странно - дебаггер при открытии ехе файла пишет - "program has no symbol table" - что-то я не понял что энто такое...
Daemon - Так будет ли пахать резидентная прога в ХР (в консоли или в оболочке FAR) написанная как под DOS ?


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
CCCP
Цитата:
Странно - дебаггер при открытии ехе файла пишет - "program has no symbol table" - что-то я не понял что энто такое...
На это - забей, все будет нормально :-)
Цитата:
Daemon - Так будет ли пахать резидентная прога в ХР (в консоли или в оболочке FAR) написанная как под DOS ?
Будет, только будь осторожен, поскольку ntvdm может по этому поводу глючить: долго я промучился с резидентом на свою курсовую год назад - неккоректно работал, а все потому, что ntvdm конфликтовал с триклятым giveio.sys.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 09.11.2004
Daemon
не подскажешь одну вещь (может знаком) - у меня есть время в часах в формате BCD - надо перевести его в минуты - пробовал
множить на 60 (в10ой и в 16ой) но результат оказывался неверным...Как перевести этот долбаный BCD в 16 число ???


 

Member
Статус: Не в сети
Регистрация: 09.11.2004
Тему можно закрыть - решение проблемы было найдено на форуме ихбт =)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. Закрыто  Сообщений: 10 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan