Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler, MASM, TASM

Войти
Регистрация
Восстановить пароль
 
allens
0 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 40
#1

Разработка программ с использованием цепочечных команд - Assembler

25.10.2011, 10:36. Просмотров 492. Ответов 2
Метки нет (Все метки)

помогите, пожалуйста, в написании программы:
Ввести строку из произвольного числа символов и произвести в ней поиск подстроки COMPUTER. Если такой подстроки нет, то данную подстроку ввести в начало исходной строки и вывести на экран. В противном случае дать сообщение There is. Программу защитить паролем.
заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2011, 10:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разработка программ с использованием цепочечных команд (Assembler):

Разработка программ с использованием цепочечных команд - Assembler
добрый вечер, может у кого завалялись какие нибудь простенькие программки по следующим темам *** 1)Разработка программ с использованием...

Разработка программ с использованием арифметических команд на языке ассемблер - Assembler
По возможности напишите программу по ассемблеру в Turbo Assembler; Задание: Разработать программу на языке ассемблер с линейной...

Разработка циклических программ с использованием подпрограмм - Assembler
1) Даны два массива чисел A(10) и C(18). Найти для каждого из массивов сумму положительных чисел для одного получается, а для двоих...

Программа с использованием команд обработки строк - Assembler
Снова нужна ваша помощь с лабораторной:) Есть массив из символов (mas1 db 'aaad ad qqwert rt a wedas xzsz z dd'). Определить количество...

Линейное программирование с использованием команд сдвига??? - Assembler
вычислить y с использованием сдвигов y=((c*3)/2)+((c+d)/4) c,d вводиться с клавиатуры,результат вывести на экран вычислить величину ...

Программа с использованием команд обработки строк - Assembler
вобщем нужно напсать програмку, но я зашел в тупик задание: Задано 8 слов по 6 символов. В начале каждого слова записан номер из двух...

2
zzzyyyxxx
759 / 303 / 11
Регистрация: 27.05.2011
Сообщений: 704
25.10.2011, 19:38 #2


прога по поиску слова:
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
data segment
    string db 100, 100 dup ('$')
    len dw 0
    wrd db 'computer'
    lenw db $ - wrd
    mess_NO db 0ah, 'There is',0ah,'$'
    mess_YES db 0ah,'FOUND!!!$'
    new_string db 110 dup ('$')
data ends
 
code segment
assume cs:code,ds:data
start:
    mov ax,data
    mov ds,ax
    mov es,ax
    
    mov ah,0ah
    lea dx,string
    int 21h
    
    xor ax,ax
    mov al,byte ptr string[1]   ;получаем длину введённой строки
    mov len,ax
    
    lea si,wrd
    lea dx,string
    add dx,2                ;везде, где +2 = компенсация первых двух байтов (инфа о строке)
    add dx,len
    
    cld
    lea di,string
    add di,2
    mov cx,len
begin:
    mov al,byte ptr [si]
    repne scasb
    jne next    
            push di
            xor bx,bx
            inc si  
            inc bl
        yyy:
            inc bl
            inc si
            inc di          
            mov al,byte ptr [si]
            cmp al,byte ptr [di]
            je yyy
            
                cmp bl,lenw
                jne no
                    pop di
                    ;НАЙДЕНО
                    lea dx,mess_YES
                    mov ah,9
                    int 21h
                    jmp ext
                    
            no:
                cmp di,dx
                je next
                pop di
                lea si,wrd
                jmp begin
    
next:
    lea dx,mess_NO
    mov ah,9
    int 21h
    
;пишем слово
    lea si,wrd
    xor cx,cx
    mov cl,lenw
    lea di,new_string
    rep movsb
;пишем строку
    lea si,string
    add si,2
    mov cx,len
    lea di,new_string
    xor ax,ax
    mov al,lenw
    add di,ax
    rep movsb
    
;на экран
    mov ah,9
    lea dx,new_string
    int 21h
 
ext:
    mov ah,4ch
    int 21h
code ends
end start

распаковщик, программа выше уже внутри:
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
data segment
    mess_pass db 'PASSWORD:   $'
    lenp dw 0
    pass db 10, 10 dup (0)
    string  db 54h, 043h, 08Ch, 018h, 01Bh, 019h, 018h, 019h, 039h, 019h, 019h, 019h, 0E6h, 0E6h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 009h, 019h, 027h, 019h, 019h, 019h, 018h, 019h, 0E2h, 068h
        db 73h, 06Bh, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 018h, 019h
        db 09h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 19h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 7Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 03Dh, 03Dh, 019h, 019h, 07Ah, 076h, 074h, 069h, 06Ch, 06Dh, 07Ch, 06Bh, 011h
        db 13h, 04Dh, 071h, 07Ch, 06Bh, 07Ch, 039h, 070h, 06Ah, 013h, 03Dh, 013h, 05Fh, 056h, 04Ch, 057h
        db 5Dh, 038h, 038h, 038h, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh, 03Dh
        db 3Dh, 03Dh, 03Dh, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h, 019h
        db 0A1h, 019h, 019h, 097h, 0C1h, 097h, 0D9h, 0ADh, 013h, 0A3h, 019h, 019h, 0D4h, 038h, 02Ah, 0D9h
        db 0B9h, 018h, 019h, 0BAh, 07Ch, 019h, 0A7h, 07Eh, 019h, 0A3h, 019h, 019h, 09Ah, 0DBh, 01Bh, 01Ah
        db 0Fh, 07Ch, 019h, 0E5h, 0A6h, 019h, 019h, 09Ah, 0DEh, 01Bh, 092h, 017h, 07Ch, 019h, 093h, 01Dh
        db 0EBh, 0B7h, 06Ch, 032h, 04Eh, 02Ah, 0C2h, 05Fh, 0E7h, 0DAh, 0E7h, 0DAh, 05Fh, 05Eh, 093h, 01Dh
        db 23h, 01Ch, 06Dh, 0EFh, 023h, 007h, 076h, 019h, 06Ch, 012h, 046h, 0A3h, 062h, 019h, 0ADh, 010h
        db 0D4h, 038h, 0F2h, 024h, 089h, 022h, 0E3h, 06Dh, 01Fh, 046h, 0A7h, 07Eh, 019h, 0F2h, 0D6h, 0A3h
        db 69h, 019h, 0ADh, 010h, 0D4h, 038h, 0A7h, 07Eh, 019h, 02Ah, 0D0h, 093h, 017h, 076h, 019h, 0A6h
        db 9Ch, 019h, 0EAh, 0BDh, 0A7h, 019h, 019h, 09Ah, 0DFh, 01Bh, 092h, 017h, 07Ch, 019h, 0A6h, 09Ch
        db 19h, 02Ah, 0D9h, 0B9h, 076h, 019h, 01Ah, 0E1h, 0EAh, 0BDh, 0ADh, 010h, 0A3h, 09Ch, 019h, 0D4h
        db 38h, 0ADh, 055h, 0D4h, 038h
    
    lens dw $ - string
    names db 'prog.exe',0
data ends
 
code segment
assume cs:code,ds:data
start:
    mov ax,data
    mov ds,ax
    
    mov ah,9
    lea dx,mess_pass
    int 21h
    
    mov ah,0ah
    lea dx,pass
    int 21h
    
    xor ax,ax
    mov al,byte ptr pass[1]
    mov lenp,ax
    
    lea si,pass
    add si,2
    mov cx,lenp
n1:
    push cx
    mov al,byte ptr [si]
    
    lea di,string
    mov cx,lens
    n2:
            xor byte ptr [di],al
            inc di
            loop n2
    inc si  
    pop cx
    loop n1
    
 
    mov ah,5bh
    xor cx,cx
    lea dx,names
    int 21h 
    
    mov bx,ax
    push bx
    mov ah,40h
    mov cx,lens
    lea dx,string
    int 21h
    
    pop bx
    mov ah,3eh
    int 21h
ext:
 
    mov ah,4ch
    int 21h
code ends
end start
защита очень простая. (кстати, пароль тебе известен, послед символов значения не имеет).
при вводе пароля распакуется - prog.exe - запусти, если не выдаст ошибок, то вводи строку и получишь результат.

в архиве исходники и программки.
2
Вложения
Тип файла: rar prog.rar (2.8 Кб, 12 просмотров)
zzzyyyxxx
759 / 303 / 11
Регистрация: 27.05.2011
Сообщений: 704
26.10.2011, 14:42 #3
исправления:
программа поиска слова:
.исправлена ошибка при выводе сообщения "There is" (опять моя невнимательность)

программа кодирования:
.последние 2 символа пароля, не участвовали при кодировании.
.послед символов в пароле закреплена.


P.S.: Вот вроде и всё, пиши, если что не так.
2
Вложения
Тип файла: rar prog.rar (2.3 Кб, 12 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2011, 14:42
Привет! Вот еще темы с ответами:

Сумма элементов массива(с использованием MMX команд) - Assembler
Здравствуйте уважаемые эксперты! Тему уже создавал, но в разделе "Паскаль", поэтому прощу не удалять.. Помогите найти сумму элементов...

Изменение сегмениа при цепочечных операциях - Assembler
Частенько вижу что-то типа REP MOVS DWORD PTR ES:, DWORD PTR DS:. ES и DS и без того указывают на один и тот же сегмент. Смысл для...

Написать программу обратного расположения элементов цепочки с использованием цепочечных команд - Assembler
Написать программу обратного расположения элементов цепочки с использованием цепочечных команд

Разработка простых программ с применением команд перехода - Assembler
Взять задание и написать программу, используя операторы условного и безусловного переходов. y =\begin{cases} & \text{ a\cdot b - {a}^{2}...


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

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

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