Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 751

Раздел: Ассемблер
/ вопрос открыт /

Здравствуйте, эксперты!
Пожалуйста, помогите разобраться: нужно составить резидентную прогу, которая устанавливает на каталог, указанный в командной строке, пароль, вводимый пользователем при запуске проги. После этого программа запрашивает пароль при любой попытке пользователя попасть в этот каталог. Написал вот такой кусок, но прога вылетает сразу после установки пароля:

Приложение:
  1. .286
  2. cseg segment
  3. assume cs:cseg, ds:cseg, ss:cseg, es:cseg
  4.  
  5. org 100h
  6.  
  7. Begin:
  8.  
  9.  
  10.  
  11.  
  12. Int_21h_proc proc
  13.  
  14. ;jne Check_funcs
  15.  
  16.  
  17.  
  18.  
  19. Check_funcs:
  20.  
  21.  
  22.  
  23. pusha
  24. push ds
  25. push es
  26.  
  27. push dx
  28. dec dx
  29. Findz:
  30.  
  31. inc dx
  32. mov di,dx
  33. mov al,byte ptr ds:[di]
  34. cmp al,0
  35. jne Findz
  36. mov cx,dx
  37. pop dx
  38. sub cx,dx
  39. push cs
  40. pop es
  41. lea di,curdir
  42. mov si,dx
  43. rep movsb
  44.  
  45. lea di,dir
  46.  
  47.  
  48. mov cx, 64
  49. cld
  50.  
  51. jne Go_21h
  52.  
  53.  
  54. mov ah,09h
  55. int 21h
  56. mov di,offset entpas
  57. xor cx,cx
  58. ent:
  59.  
  60.  
  61. int 21h
  62.  
  63. jz prov
  64. cmp cx,5
  65. jge ent
  66.  
  67.  
  68.  
  69. mov ah,02h
  70. mov dl,"*"
  71.  
  72.  
  73. prov:
  74.  
  75. push ds
  76. pop es
  77. lea di,entpas
  78. lea si,pas
  79. mov cx,5
  80. cld
  81.  
  82. je Do_not
  83.  
  84.  
  85. Go_21h:
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93. Do_not:
  94.  
  95. pop es
  96. pop ds
  97. popa
  98.  
  99.  
  100.  
  101.  
  102.  
  103. dir db 64 dup(0)
  104. curdir db 64 dup(0)
  105. pas db 5 dup(' ')
  106. entpas db 5 dup(' ')
  107. paswin db 'Enter password (5 symbols)$'
  108.  
  109.  
  110. Int_21h_proc endp
  111.  
  112.  
  113. ; ===============================================================
  114.  
  115. Init:
  116.  
  117.  
  118.  
  119. jne Set_resident
  120.  
  121.  
  122. mov dx,offset In_memory
  123. int 21h
  124.  
  125.  
  126.  
  127.  
  128.  
  129. push cs
  130. pop ds
  131. push cs
  132. pop es
  133.  
  134. mov di,81h
  135. mov al," "
  136. mov cx,64
  137. repe scasb
  138. dec di
  139. push di
  140. pop si
  141. mov cl,ds:[80h]
  142. dec cl
  143. lea di,dir
  144. rep movsb
  145.  
  146.  
  147.  
  148.  
  149. mov ah,09h
  150. int 21h
  151.  
  152. xor cx,cx
  153. Ent_pas:
  154.  
  155.  
  156. int 21h
  157.  
  158. jz Next
  159. cmp cx,5
  160. jge ent_pas
  161.  
  162.  
  163.  
  164. mov ah,02h
  165. mov dl,"*"
  166.  
  167.  
  168. Next:
  169.  
  170.  
  171. mov ax,3521h
  172.  
  173.  
  174.  
  175.  
  176. mov ax,2521h
  177. mov dx,offset Int_21h_proc
  178.  
  179.  
  180.  
  181. mov dx,offset Init
  182.  
  183.  
  184.  
  185. cseg ends
  186. end Begin
  187.  


lina89 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: lina89 (статус: Посетитель)
Вопрос отправлен: 19 ноября 2010, 20:49
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 21 ноября 2010, 01:10; участников в обсуждении: 1.
Вадим К

Вадим К (статус: Академик), 21 ноября 2010, 01:10 [#1]:

а запускается программа не с под висты/севена случайно?
Для чистоты эксперимента, лучше воспользоваться dosbox'ом, гляди и заработает:)
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:51
Выполнено за 0.02 сек.