Установщик пароля на программы. - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. В общем я не разбираюсь в ассемблере, программирую на высокоуровневых яп. Но тут попросили помочь, да и самому стало интересно написать программу. Вот условия задачи:

Написать программу, которая модифицирует произвольный *.com файл таким образом, что при его запуске проводилась проверка пароля при входе. В случае несоответствия пароля производится аварийный выход из программы. Имя модифицируемого файла и пароль желательно вводить в командной строке.

Нашел код на ассемблере, где нужно ввести пароль за несколько попыток. Но не понимаю само условие: "модифицирует произвольный *.com файл". Компилятор же сам компилируется комовский файл. Извините если запутано спрашиваю, в общем помогите пожалуйста)

Решение задачи: «Установщик пароля на программы.»

textual
Листинг программы
  1. .model  small
  2. .stack  100h
  3. .data
  4. pass db 'Parol'
  5. passLen=$-pass              
  6. MaxInputLen db 50            
  7. InputLen db 0                    
  8. InputBuff db 50 dup (0)          
  9. InputMsg db 'Enter password: $'
  10. MsgWrong db 'Password is wrong!$'
  11. MsgAccept db 'Password is accept!$'
  12. Access db 0
  13.  
  14. .code
  15. start:
  16. mov ax,@data
  17. mov ds,ax
  18. mov es,ax        
  19. xor ax,ax
  20.  
  21. call MessageForIn            
  22. call input                
  23. call Check              
  24. cmp Access,1            
  25. je GoodPass            
  26. call BadMsg            
  27.  
  28. jmp exit                    
  29.  
  30. GoodPass:
  31.   call GoodMsg            
  32.  
  33. exit:
  34.   mov ax,4c00h
  35.   int 21h
  36.  
  37. input proc
  38.   mov ah ,0Ah          
  39.   mov dx,offset MaxInputLen  
  40.   int 21h            
  41.   mov dl,10  
  42.   mov ah,6
  43.   int 21h
  44.   ret
  45. endp
  46.  
  47. MessageForIn proc
  48.   mov ah,9
  49.   mov dx,offset InputMsg    
  50.   int 21h
  51.   ret
  52. endp
  53.  
  54. Check proc      
  55.   mov ah,passLen
  56.   mov bh,InputLen
  57.   cmp ah,bh  
  58.   jne wrong  
  59.   mov di,offset pass
  60.   mov si,offset InputBuff
  61.   mov cx,PassLen
  62.   cld
  63.   repe cmpsb
  64.   jne wrong          
  65.   mov Access,1
  66.   wrong:
  67.     ret
  68. endp
  69.  
  70. GoodMsg proc
  71.   mov ah,9
  72.   mov dx,offset MsgAccept
  73.   int 21h
  74.   ret
  75. endp
  76.  
  77. BadMsg proc
  78.   mov ah,9
  79.   mov dx,offset MsgWrong
  80.   int 21h
  81.   ret
  82. endp
  83.  
  84. end start

Объяснение кода листинга программы

  1. Установка начального значения регистров.
  2. Вывод сообщения для ввода пароля.
  3. Ввод пароля в буфер ввода.
  4. Проверка правильности введенного пароля.
  5. Если пароль верный, то выводится сообщение о успешном вводе.
  6. Если пароль не верный, то выводится сообщение о неверном вводе.
  7. Выход из программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут