Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
1

Изменить прогу на ассемблере (всего лишь пару строк)

16.05.2012, 12:06. Показов 932. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
прога запрашивает строку (например edede) и меняет все символы d на 7
выводит в окне результат (например e7e7e)
запрашивает название и записывает результат в файл в который помещается результат работы (e7e7e)
------------
нужно чтобы она записывала в него не результат а то что вводилось, притом чтобы в окне всё равно изменяла

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
125
126
127
128
;сегмент стека 
stseg segment 
stk db 256 dup (?) 
stseg ends 
 
;сегмент данных 
data segment 
mes1 db 'Vvedennay stroka:',0ah,0dh,'$' 
mes2 db 0ah,0dh,'Izmenennay stroka:',0ah,0dh,'$' 
mes3 db 0ah,0dh,'Vvedite file:',0ah,0dh,'$' 
mes4 db 0ah,0dh,'File suschestvuet! Perezapisat? (y|n) $' 
 
buf db 78 
len db 00 
s db 78 dup('$'),'$' 
 
filebuf db 255 
filelen db 00 
filename db 255 dup('$'),'$' 
data ends 
 
;сегмент кода 
code segment 
assume CS:code, DS:data, SS:stseg 
 
;процедура замены буквы d 
;в DS:SI должна лежать обрабатываемая строка, оканчивающаяся символом $ 
char2char proc 
push SI 
push AX 
mloop: 
mov AL,byte ptr [SI] 
cmp AL,'$' 
je mend 
cmp AL,'d' 
jne mnext 
mov byte ptr [SI],'7' 
mnext: 
inc SI 
jmp mloop 
mend: 
pop AX 
pop SI 
ret 
char2char endp 
 
start: 
xor AX,AX 
mov BX,data 
mov DS,BX 
 
;ввод строки 
mov AH,09h 
lea DX,mes1 
int 21h 
mov AH,0ah 
lea DX,buf 
int 21h 
 
;вывод исходной строки 
mov AH,09h 
lea DX,s 
int 21h 
 
;изменение строки 
lea SI,s 
call char2char 
 
;вывод изменённой строки 
mov AH,09h 
lea DX,mes2 
int 21h 
mov AH,09h 
lea DX,s 
int 21h 
 
;получение имени файла 
askname: 
mov AH,09h 
lea DX,mes3 
int 21h 
mov AH,0ah 
lea DX,filebuf 
int 21h 
;записываем \ вместо CR 
lea AX,filename 
add AL,filelen 
mov BX,AX 
mov [BX],byte ptr 0 
 
;попытка создать файл 
mov AH,5bh 
lea DX,filename 
mov CX,0000000b 
int 21h 
jnc workwithfile 
;если уже существует, переспрашиваем пользователя 
mov AH,09h 
lea DX,mes4 
int 21h 
;ожидание ответа 
mov AH,01h 
int 21h 
cmp AL,'y' 
jne askname 
;создаём принудительно 
mov AH,3ch 
lea DX,filename 
mov CX,0000000b 
int 21h 
workwithfile: 
;запись строки в файл 
mov BX,AX 
mov AH,40h 
lea DX,s 
xor CX,CX 
mov CL,len 
int 21h 
 
;закрываем файл 
mov AH,3eh 
int 21h 
 
;нормальный выход 
mov AH,4ch 
int 21h 
code ends 
end start
Вложения
Тип файла: txt 123.txt (2.1 Кб, 8 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2012, 12:06
Ответы с готовыми решениями:

Новичок, разъясните код (пару строк всего)
Начал учить пайтон 3.х по книге Майкла Доусена "программируем на пайтон". В главе 6 есть пример...

Я наверное схожу с ума: всего лишь INSTEAD OF-триггер
Привет всем. у меня есть одна вьюшка которая отображает данные из двух таблиц При попытке создать...

Написать прогу в с++ на ассемблере
Всем привет, дорогие форумчане. Давно я не заходил сюда, да и аккаунт уже старый (первый) не...

Почему всего лишь 4 гиг а не все 8 что установлены?
Собрал новый комп точнее мне собрали. К меня стоит 8 гиг оперативки а в свойствах написано 3,12...

6
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
16.05.2012, 12:07  [ТС] 2
там легко должно быть, но я много вариантов перепробовал с расстановкой и удалением/добавлением - не помогло =(
0
273 / 268 / 11
Регистрация: 24.12.2010
Сообщений: 328
16.05.2012, 12:23 3
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
125
126
127
128
129
;сегмент стека 
stseg segment 
stk db 256 dup (?) 
stseg ends 
 
;сегмент данных 
data segment 
mes1 db 'Vvedennay stroka:',0ah,0dh,'$' 
mes2 db 0ah,0dh,'Izmenennay stroka:',0ah,0dh,'$' 
mes3 db 0ah,0dh,'Vvedite file:',0ah,0dh,'$' 
mes4 db 0ah,0dh,'File suschestvuet! Perezapisat? (y|n) $' 
 
buf db 78 
len db 00 
s db 78 dup('$'),'$' 
 
filebuf db 255 
filelen db 00 
filename db 255 dup('$'),'$' 
data ends 
 
;сегмент кода 
code segment 
assume CS:code, DS:data, SS:stseg 
 
;процедура замены буквы d 
;в DS:SI должна лежать обрабатываемая строка, оканчивающаяся символом $ 
char2char proc 
push SI 
push AX 
mloop: 
mov AL,byte ptr [SI] 
cmp AL,'$' 
je mend 
cmp AL,'d' 
jne mnext 
mov byte ptr [SI],'7' 
mnext: 
inc SI 
jmp mloop 
mend: 
pop AX 
pop SI 
ret 
char2char endp 
 
start: 
xor AX,AX 
mov BX,data 
mov DS,BX 
 
;ввод строки 
mov AH,09h 
lea DX,mes1 
int 21h 
mov AH,0ah 
lea DX,buf 
int 21h 
 
;вывод исходной строки 
mov AH,09h 
lea DX,s 
int 21h 
 
;получение имени файла 
askname: 
mov AH,09h 
lea DX,mes3 
int 21h 
mov AH,0ah 
lea DX,filebuf 
int 21h 
;записываем \ вместо CR 
lea AX,filename 
add AL,filelen 
mov BX,AX 
mov [BX],byte ptr 0 
 
;попытка создать файл 
mov AH,5bh 
lea DX,filename 
mov CX,0000000b 
int 21h 
jnc workwithfile 
;если уже существует, переспрашиваем пользователя 
mov AH,09h 
lea DX,mes4 
int 21h 
;ожидание ответа 
mov AH,01h 
int 21h 
cmp AL,'y' 
jne askname 
;создаём принудительно 
mov AH,3ch 
lea DX,filename 
mov CX,0000000b 
int 21h 
workwithfile: 
;запись строки в файл 
mov BX,AX 
mov AH,40h 
lea DX,s 
xor CX,CX 
mov CL,len 
int 21h 
 
;закрываем файл 
mov AH,3eh 
int 21h 
 
 
;изменение строки 
lea SI,s 
call char2char 
 
;вывод изменённой строки 
mov AH,09h 
lea DX,mes2 
int 21h 
mov AH,09h 
lea DX,s 
int 21h 
 
;нормальный выход 
mov AH,4ch 
int 21h 
code ends 
end start
1
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
16.05.2012, 12:44  [ТС] 4
спасибо большое за быстрый ответ. вы молодцы

Добавлено через 2 минуты
можно закрывать тему
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
21.05.2012, 13:35  [ТС] 5
ещё вопрос по этой проге.
как сделать чтобы в файл записывалось и первоначальное (то что вводим с клавы) и измененое?
типа вводим eddr выводит e77r и в файл записывает
eddr
e77r
0
273 / 268 / 11
Регистрация: 24.12.2010
Сообщений: 328
21.05.2012, 16:01 6
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
125
126
127
128
129
130
131
stseg segment 
stk db 256 dup (?) 
stseg ends 
 
;сегмент данных 
data segment 
mes1 db 'Vvedennay stroka:',0ah,0dh,'$' 
mes2 db 0ah,0dh,'Izmenennay stroka:',0ah,0dh,'$' 
mes3 db 0ah,0dh,'Vvedite file:',0ah,0dh,'$' 
mes4 db 0ah,0dh,'File suschestvuet! Perezapisat? (y|n) $' 
 
buf db 78 
len db 00 
s db 78 dup('$'),'$' 
filebuf db 255 
filelen db 00 
filename db 255 dup('$'),'$' 
data ends 
 
;сегмент кода 
code segment 
assume CS:code, DS:data, SS:stseg 
 
;процедура замены буквы d 
;в DS:SI должна лежать обрабатываемая строка, оканчивающаяся символом $ 
char2char proc 
push SI 
push AX 
mloop: 
mov AL,byte ptr [SI] 
cmp AL,'$' 
je mend 
cmp AL,'d' 
jne mnext 
mov byte ptr [SI],'7' 
mnext: 
inc SI 
jmp mloop 
mend: 
pop AX 
pop SI 
ret 
char2char endp 
 
start: 
xor AX,AX 
mov BX,data 
mov DS,BX 
 
;ввод строки 
mov AH,09h 
lea DX,mes1 
int 21h 
mov AH,0ah 
lea DX,buf 
int 21h 
 
;вывод исходной строки 
mov AH,09h 
lea DX,s 
int 21h 
 
;получение имени файла 
askname: 
mov AH,09h 
lea DX,mes3 
int 21h 
mov AH,0ah 
lea DX,filebuf 
int 21h 
;записываем \ вместо CR 
lea AX,filename 
add AL,filelen 
mov BX,AX 
mov [BX],byte ptr 0 
 
;попытка создать файл 
mov AH,5bh 
lea DX,filename 
mov CX,0000000b 
int 21h 
jnc workwithfile 
;если уже существует, переспрашиваем пользователя 
mov AH,09h 
lea DX,mes4 
int 21h 
;ожидание ответа 
mov AH,01h 
int 21h 
cmp AL,'y' 
jne askname 
;создаём принудительно 
mov AH,3ch 
lea DX,filename 
mov CX,0000000b 
int 21h 
workwithfile: 
;запись строки в файл 
mov BX,AX 
mov AH,40h 
lea DX,s 
xor CX,CX 
mov CL,len 
int 21h 
 
;изменение строки 
lea SI,s 
call char2char 
    mov word ptr[buf],0a0dh 
    mov ah,40h
    lea dx,buf
    add cx,2
    int 21h
 
;закрываем файл 
mov AH,3eh 
int 21h 
 
;вывод изменённой строки 
mov AH,09h 
lea DX,mes2 
int 21h 
mov AH,09h 
lea DX,s 
int 21h
 
;нормальный выход 
mov AH,4ch 
int 21h 
code ends 
end start
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
21.05.2012, 16:59 7
zawibis, обе строки записываешь и все. Старую и новую.
0
21.05.2012, 16:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2012, 16:59
Помогаю со студенческими работами здесь

На жестком диске вместо 200 гб, доступно всего лишь 110 гб
Суть проблемы ясна на скрине. Помогите решить. Буду благодарен. ОС ставил давным давно. Раньше...

не могу растолковать выражения в Javascript/ всего лишь один цикл. Выручайте
<html> <head> <title> Лабораторная работа № 12</title> </head> <body> <script...

Почему в .NET последней версии установлен компилятор для C# 5 всего лишь?
Как видно из тегов, VS 2017. Версия 15.9.10. Только качал. Но компилятор старый - C# до 5-ой...

Оверклокинг на чипсетах Intel H87, B85 и H81 – всего лишь процессорный баг?
На прошлой неделе производитель материнских плат ASRock продемонстрировал удивительную способность...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru