Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
inquisitor
15 / 6 / 17
Регистрация: 22.12.2015
Сообщений: 1,808
1

Как запустить консольное приложение с моделью small?

19.10.2016, 01:10. Просмотров 1041. Ответов 21
Метки нет (Все метки)

Мне нужно,что бы консолька запустилась,запросила пароль и далее вывела сообщение о его правильности или не правильности.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
model small
stack 256
.data
match db 0ah,0dh,'PASSWORD IS OK','$'
failed db 0ah,0dh,'PASSWORD IS NOT CORRECT','$'
string1 db 07Fh,071h,06Dh,067h,060h,07Bh,064h,'$'
string2 db 10
string db 'Input PASSWORD:','$'
.code
assume ds:@data,es:@data
main:
mov ax,@data
mov ds,ax
mov es,ax
;выводим приглашение ко вводу пароля
mov ah,09h
lea dx,string
int 21h
 
;запрашиваем символы с клавиатуры
lea dx,string2-2
mov ah,0Ah
int 21h
 
;производим расшифровку пароля
mov si,0
mov cx,7
ll:
xor string1[si],34h
inc si
loop ll
 
;процедура проверки правельности пароля
cld
lea si,string1
lea di,string2
mov cx,7
cycl:
repe cmps string1,string2
jcxz equal ; если совподают
jne not_match
equal: ;если пароль верный
mov ah,09h
lea dx,match
int 21h
jmp exit
not_match: ;если пароль не верный
mov ah,09h
lea dx,failed
int 21h
jmp exit
 
jmp cycl
 
exit:
mov ax,4c00h
int 21h
end main
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2016, 01:10
Ответы с готовыми решениями:

Qt creator как запустить консольное приложение
скачал IDE Qt creator. сделал проект с таким файлом main.cpp, собрал проект, запускаю и мне...

Как запустить консольное приложение в фоновом режиме?
у меня такая проблема, мне надо, чтоб консольное приложение при запуске сворачивалось в трей, или...

Как запустить консольное приложение с ключами в PowerShell ISE?
Пытаюсь запустить приложение wincontig (дефрагментатор). Вот такой код в скрипте: $disk =...

Как запустить консольное приложение Java не из среды разработки, а из файла
Доброго времени суток! Как запустить десктопное приложение Java (с формами и граф интерфейсом)...

Как запустить консольное приложение через CreateProcess и спрятать его окно?
Т.е. как запустить досовский exe-шник через CreateProcess и чтобы его окна не было видно?

21
Manowar
Отава Ё.
2004 / 553 / 182
Регистрация: 12.03.2016
Сообщений: 2,095
Завершенные тесты: 1
19.10.2016, 06:02 2
Для начала
Assembler
1
2
3
.model small
.stack 256
.386
1
Manowar
Отава Ё.
2004 / 553 / 182
Регистрация: 12.03.2016
Сообщений: 2,095
Завершенные тесты: 1
19.10.2016, 07:21 3
Как запустить консольное приложение с моделью small?

компилировал в TASM
1
inquisitor
15 / 6 / 17
Регистрация: 22.12.2015
Сообщений: 1,808
19.10.2016, 12:22  [ТС] 4
Цитата Сообщение от мановар Посмотреть сообщение
компилировал в TASM
Расскажите, по шагам для новичка,как вы компилируете,какая ОС?
0
19.10.2016, 12:22
Manowar
Отава Ё.
2004 / 553 / 182
Регистрация: 12.03.2016
Сообщений: 2,095
Завершенные тесты: 1
19.10.2016, 12:47 5
Отличный учебник от Mikl http://www.cyberforum.ru/assembler-articles/thread1005284.html
глава 4 - http://www.cyberforum.ru/post5323068.html
Учебник В.И.Юров - Assembler. 2008 г. Питер. стр. - 129. (Есть Tasm и Masm).
В данном вопросе лучше разобраться самому (не будешь же по каждой ерунде темы создавать).
Если уж что то не будет получаться, спрашивай.
0
inquisitor
15 / 6 / 17
Регистрация: 22.12.2015
Сообщений: 1,808
19.10.2016, 13:02  [ТС] 6
Цитата Сообщение от мановар Посмотреть сообщение
глава 4 - Электронный учебник
tasm32 prog.asm
все ок.

не линкуеться
Как запустить консольное приложение с моделью small?
0
Manowar
Отава Ё.
2004 / 553 / 182
Регистрация: 12.03.2016
Сообщений: 2,095
Завершенные тесты: 1
19.10.2016, 13:07 7
Ты берешь для 32 разрядного, а программа в 16. Бери просто tasm.exe и tlink.exe
вот батник которым компилирую я.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
tasm /z/zi/n otl2,otl2,otl2
if errorlevel 1 goto err
tlink /x otl2,otl2
goto end
:err
echo Error transl!
goto fin
:end
echo Exit transl
:fin
echo.
0
inquisitor
15 / 6 / 17
Регистрация: 22.12.2015
Сообщений: 1,808
19.10.2016, 13:14  [ТС] 8
у меня виндовс 8.1 она не дает запуститься 16 разрядным.Как тогда откомпилировать и запустить?
Как вашим батником пользоваться?
0
inquisitor
15 / 6 / 17
Регистрация: 22.12.2015
Сообщений: 1,808
19.10.2016, 13:18  [ТС] 9
Как запустить консольное приложение с моделью small?
0
Manowar
Отава Ё.
2004 / 553 / 182
Регистрация: 12.03.2016
Сообщений: 2,095
Завершенные тесты: 1
19.10.2016, 13:26 10
scherbakovss201, у меня винда 7, поэтому с такими проблемами еще не сталкивался. Попробуй установить DOSBox и запуститься в нем.
Компилятор под Windows 8.1
0
inquisitor
15 / 6 / 17
Регистрация: 22.12.2015
Сообщений: 1,808
19.10.2016, 13:31  [ТС] 11
У меня установлена dosbox 0.74
Что в прописать в конфирационном файле в самом конце для монтировки диска?
Почему cmd.exe не видит tlink32.exe,а когда его ложешь в папку с prog.asm то видит?
Tasm32 cmd.exe видит и он не в папке с prog.asm
0
Manowar
Отава Ё.
2004 / 553 / 182
Регистрация: 12.03.2016
Сообщений: 2,095
Завершенные тесты: 1
19.10.2016, 13:47 12
Как запустить консольное приложение с моделью small?

батник запускает

@echo off
keyrus.com
vc.com

после чего получаем
Как запустить консольное приложение с моделью small?


и спокойно работаешь.
0
inquisitor
15 / 6 / 17
Регистрация: 22.12.2015
Сообщений: 1,808
19.10.2016, 16:32  [ТС] 13
Я положил батник в папку с prog.asm запустил его он на долю секунды запустился и закрылся.
Вот прописал в конирационном файле досбокса 074
Как запустить консольное приложение с моделью small?


Как запустить консольное приложение с моделью small?
0
proc3nt
волшебник
958 / 526 / 161
Регистрация: 26.05.2012
Сообщений: 1,491
19.10.2016, 21:11 14
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
string1 db 07Fh,071h,06Dh,067h,060h,07Bh,064h,'$'
если шестнадцатеричное число начинается с буквы, то перед ним нужно поставить ноль, иначе ассемблер подумает, что это не число, а имя переменной. Например, число FF в исходном коде на ассемблере должно быть записано как 0FFh. если шестнадцатеричное число начинается с цифры, то в этом нет нужды
Assembler
1
string1 db 7Fh,71h,6Dh,67h,60h,7Bh,64h,'$'
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
string2 db 10
надо бы увеличить количество допустимых элементов для вводимого пароля
Assembler
1
string2 db 10,0,10 dup(?)
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
lea dx,string2-2
зачем выходить слева за границы вводимого пароля. нам бы начало
Assembler
1
lea dx,string2
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
mov cx,7
cycl:
прежде, чем производить побайтовое сравнение настоящего и введенного паролей нужно сравнить их длины. если их длины не равны, то и побайтовое сравнение не требуется. введенный пароль будет ложным. если этого не сделать, то может произойти такая ситуация, что первые семь символов совпадут. и программа выведет сообщение, что пароль верный, хотя на самом деле это не так. но поскольку длина введенного пароля больше семи символов, то эти символы не учтутся при сравнении.
Assembler
1
2
3
mov al,passlen
cmp al,byte ptr [string2+1]
jne not_match
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
cycl:
эта метка в принципе здесь не нужна. также как и эта
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
jmp cycl
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
repe cmps string1,string2
указывать операнды в цепочечной команде сравнения не требуется. а вот указать, что будет производится побайтовое сравнение как раз таки надо бы
Assembler
1
repe cmpsb
вобщем вот так должно получиться
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
model small
.386
 
.data
match db 0ah,0dh,'PASSWORD IS OK$'
failed db 0ah,0dh,'PASSWORD IS NOT CORRECT$'
string1 db 7Fh,71h,6Dh,67h,60h,7Bh,64h
passlen equ $-string1
string2 db 10,0,10 dup(?)
string db 'INPUT PASSWORD:$'
 
.stack 
db 256 dup(?)
 
.code
main:
mov ax,@data
mov ds,ax
mov es,ax
 
;выводим приглашение ко вводу пароля
mov ah,09h
lea dx,string
int 21h
 
;запрашиваем символы с клавиатуры
mov ah,0Ah
lea dx,string2
int 21h
 
;производим расшифровку пароля
mov si,0
mov cx,7
ll:
    xor string1[si],34h
    inc si
loop ll
 
mov al,passlen
cmp al,byte ptr [string2+1]
jne not_match
 
;процедура проверки правильности пароля
cld
lea si,string1
lea di,string2+2
mov cx,7
repe cmpsb
jcxz equal 
jne not_match
 
equal: 
mov ah,09h
lea dx,match
int 21h
 
jmp exit
 
not_match:
mov ah,09h
lea dx,failed
int 21h
 
exit:
mov ax,4C00h
int 21h
end main
1
inquisitor
15 / 6 / 17
Регистрация: 22.12.2015
Сообщений: 1,808
19.10.2016, 22:17  [ТС] 15
Цитата Сообщение от proc3nt Посмотреть сообщение
string1 db 07Fh,071h,06Dh,067h,060h,07Bh,064h,'$'
Это не число,а закодированый пароль.Догадались какое слово?)

Добавлено через 3 минуты
и все таки ка мне откомпилировать и отлинковать,ведь виндовс 8 не допускает 16х разрядных приложений.
Пожалуйста дайте инструкцию для чайника.
tasm p1.asm
tlink p1.obj
0
Manowar
Отава Ё.
2004 / 553 / 182
Регистрация: 12.03.2016
Сообщений: 2,095
Завершенные тесты: 1
19.10.2016, 22:54 16
proc3nt, спасибо, кое что видел, что надо исправить, но и пропустил не мало. Но как еще объяснить на счет компиляции не знаю.
0
proc3nt
волшебник
958 / 526 / 161
Регистрация: 26.05.2012
Сообщений: 1,491
19.10.2016, 23:02 17
Лучший ответ Сообщение было отмечено scherbakovss201 как решение

Решение

Цитата Сообщение от scherbakovss201 Посмотреть сообщение
ка мне откомпилировать и отлинковать
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
ведь виндовс 8
используй GUI Turbo Assembler - A 64bit MuItilingual IDE for Assembly Language
1
R71MT
5792 / 1548 / 320
Регистрация: 29.07.2014
Сообщений: 2,575
Записей в блоге: 5
19.10.2016, 23:06 18
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
Догадались какое слово?)

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
; fasm code...
org 100h
jmp start
 
str1    db   'Pass: '
        db   07Fh xor 34h, 071h xor 34h
        db   06Dh xor 34h, 067h xor 34h
        db   060h xor 34h, 07Bh xor 34h, 064h xor 34h,'$'
 
start: mov   ah,9
       mov   dx,str1
       int   21h
 
@exit: xor   ax,ax
       int   16h
       int   20h
1
Изображения
 
Manowar
Отава Ё.
2004 / 553 / 182
Регистрация: 12.03.2016
Сообщений: 2,095
Завершенные тесты: 1
20.10.2016, 05:30 19
Первоначальная версия тоже работает. Посижу в отладчике, поразбираюсь.
Может пригодится http://www.techbrown.com/install-ass...-1-and-7.shtml
1
inquisitor
15 / 6 / 17
Регистрация: 22.12.2015
Сообщений: 1,808
20.10.2016, 21:13  [ТС] 20
Цитата Сообщение от proc3nt Посмотреть сообщение
используй GUI Turbo Assembler - A 64bit MuItilingual IDE for Assembly Language
Как запустить консольное приложение с моделью small?

Ура запустилось на виндовс 8.1.
В какой программе его отладить(что бы пароль найти)?
А есть
GUI Macro Assembler ?
0
20.10.2016, 21:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2016, 21:13

Как запустить внешнее консольное приложение и получить то, что будет выведено на экран?
Есть программка которая распознает капчу, когда я ее запускаю из командной строки выводится...

Как запустить консольное приложение .exe из командной строки, чтобы оно не закрывалось после компиляции?
если использовать команду start, то приложение закрывается после запуска.

Программно запустить консольное приложение
Помогите разобраться с кодом есть консольное приложение. Мне нужно чтоб его можно было запускать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru