0 / 0 / 0
Регистрация: 25.04.2014
Сообщений: 69
1

Как выделить нужное из этого кода?

18.05.2014, 14:15. Показов 1281. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
.387
.386p
.model flat
        PUBLIC  main
        EXTRN   system:BYTE
        EXTRN   printf:BYTE
        EXTRN   scanf:BYTE
        EXTRN   __iob:BYTE
        EXTRN   fgetc:BYTE
        EXTRN   _cstart_:BYTE
DGROUP      GROUP   CONST,CONST2,_DATA
_TEXT       SEGMENT BYTE PUBLIC USE32 'CODE'
        ASSUME CS:_TEXT, DS:DGROUP, SS:DGROUP
 
; #include <stdio.h>
; #include <stdlib.h>
; void main (void)
main:
    push        ebx 
    push        esi 
    push        edi 
    push        ebp 
    sub         esp,0cH 
 
; {int a,b,n,d;
; d=0;
; system("chcp 1251");
    push        offset FLAT:L$6 
    call        near ptr FLAT:system 
    add         esp,4 
 
; system ("cls");
    push        offset FLAT:L$7 
    call        near ptr FLAT:system 
    add         esp,4 
 
; printf("Введите a:");
    push        offset FLAT:L$8 
    call        near ptr FLAT:printf 
    add         esp,4 
 
; scanf("%d",&a);
    mov         eax,esp 
    push        eax 
    push        offset FLAT:L$9 
    call        near ptr FLAT:scanf 
    add         esp,8 
 
; printf("Введите b:");
    push        offset FLAT:L$10 
    call        near ptr FLAT:printf 
    add         esp,4 
 
; scanf("%d",&b);
    lea         eax,4[esp] 
    push        eax 
    push        offset FLAT:L$9 
    call        near ptr FLAT:scanf 
    add         esp,8 
 
; printf("Введите n:");
    push        offset FLAT:L$11 
    call        near ptr FLAT:printf 
    add         esp,4 
 
; scanf("%d",&n);
    lea         eax,8[esp] 
    push        eax 
    push        offset FLAT:L$9 
    call        near ptr FLAT:scanf 
    add         esp,8 
 
; {d=(a*b)*n;}
    mov         eax,dword ptr [esp] 
    imul        eax,dword ptr 4[esp] 
    imul        eax,dword ptr 8[esp] 
 
; printf("(a+b)*n)=%d",d);
    push        eax 
    push        offset FLAT:L$12 
    call        near ptr FLAT:printf 
 
; getchar();getchar();
    mov         ebx,dword ptr FLAT:__iob+4 
    add         esp,8 
    test        ebx,ebx 
    jle         L$1 
    mov         eax,dword ptr FLAT:__iob 
    movzx       edx,byte ptr [eax] 
    sub         edx,0dH 
    cmp         edx,0dH 
    ja          L$4 
L$1:
    push        offset FLAT:__iob 
    call        near ptr FLAT:fgetc 
    add         esp,4 
L$2:
    mov         edi,dword ptr FLAT:__iob+4 
    test        edi,edi 
    jle         L$5 
    mov         eax,dword ptr FLAT:__iob 
    movzx       edx,byte ptr [eax] 
    sub         edx,0dH 
    cmp         edx,0dH 
    jbe         L$5 
    lea         ebp,-1[edi] 
    inc         eax 
    mov         dword ptr FLAT:__iob+4,ebp 
    mov         dword ptr FLAT:__iob,eax 
 
; }
L$3:
    add         esp,0cH 
    pop         ebp 
    pop         edi 
    pop         esi 
    pop         ebx 
    ret         
L$4:
    lea         esi,-1[ebx] 
    inc         eax 
    mov         dword ptr FLAT:__iob+4,esi 
    mov         dword ptr FLAT:__iob,eax 
    jmp         L$2 
L$5:
    push        offset FLAT:__iob 
    call        near ptr FLAT:fgetc 
    add         esp,4 
    jmp         L$3 
_TEXT       ENDS
CONST       SEGMENT DWORD PUBLIC USE32 'DATA'
L$6:
    DB  63H, 68H, 63H, 70H, 20H, 31H, 32H, 35H
    DB  31H, 0
L$7:
    DB  63H, 6cH, 73H, 0
L$8:
    DB  0c2H, 0e2H, 0e5H, 0e4H, 0e8H, 0f2H, 0e5H, 20H
    DB  61H, 3aH, 0
L$9:
    DB  25H, 64H, 0
L$10:
    DB  0c2H, 0e2H, 0e5H, 0e4H, 0e8H, 0f2H, 0e5H, 20H
    DB  62H, 3aH, 0
L$11:
    DB  0c2H, 0e2H, 0e5H, 0e4H, 0e8H, 0f2H, 0e5H, 20H
    DB  6eH, 3aH, 0
L$12:
    DB  28H, 61H, 2bH, 62H, 29H, 2aH, 6eH, 29H
    DB  3dH, 25H, 64H, 0
 
CONST       ENDS
CONST2      SEGMENT DWORD PUBLIC USE32 'DATA'
CONST2      ENDS
_DATA       SEGMENT DWORD PUBLIC USE32 'DATA'
_DATA       ENDS
        END
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2014, 14:15
Ответы с готовыми решениями:

Как вытащить из кода нужное значение?
Ребята, подскажите пожалуйста какую функцию использовать. У нас есть код веб-страницы. В нем...

Как выделить нужное слово из "чар" перемнной
Если пользователь наберет к примеру &quot;open file.txt&quot;,то как сделать так чтобы программа распознала...

Как из этого уравнения выделить полный квадрат
Как из этого уравнения выделить полный квадрат? 5y'2 + 6sqrt(5)x' + 2sqrt(5)y' +7 = 0

Как в C++ Builder из кода сделать "процедуру" для дальнейшего использования этого кода?
Есть код C++ Builder в котором его часть дальше будет неоднократно использоваться. Как правильно...

7
Ушел с форума
Автор FAQ
16277 / 7602 / 1064
Регистрация: 11.11.2010
Сообщений: 13,617
18.05.2014, 14:23 2
Цитата Сообщение от AirC Посмотреть сообщение
Как выделить нужное из этого кода?
"Нужное" для ЧЕГО? ПРАВИЛЬНО поставленный вопрос УЖЕ содержит в себе ответ
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
18.05.2014, 14:42 3
Не по теме:
Эх Mikl___, Mikl___ совсем ты не телепат.
1
0 / 0 / 0
Регистрация: 25.04.2014
Сообщений: 69
18.05.2014, 15:00  [ТС] 4
Mikl___, мне нужна прога на ассамблере и она по-моему должна выглядить намного меньше
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
18.05.2014, 15:03 5
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Дык, делов-то[FASM]:
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
 format PE console 4.0
 
include 'win32a.inc'
 
; #include <stdio.h>
; #include <stdlib.h>
; void main (void)
main:
 
; {int a,b,n,d;
; d=0;
; system("chcp 1251");
    invoke  system, @chcp
; system ("cls");
    invoke  system, @cls
; printf("Введите a:");
    cinvoke printf, entr, _a
; scanf("%d",&a);
    cinvoke scanf, tpi, a
; printf("Введите b:");
    cinvoke printf, entr, _b
; scanf("%d",&b);
    cinvoke scanf, tpi, b
; printf("Введите n:");
    cinvoke printf, entr, _n
; scanf("%d",&n);
    cinvoke scanf, tpi, n
; {d=(a*b)*n;}
    mov eax,[a] 
        imul    eax,[b] 
        imul    eax,[n] 
    mov [d], eax
 
; printf("(a*b)*n)=%d",d);
    cinvoke printf, rslt, eax
; getchar();getchar();
    invoke  _getch
    invoke  exit,0
; }
@chcp   db  'chcp 1251',0
@cls    db  'cls',0
entr    db  'Введите %s:',0
tpi db  '%d',0
rslt    db  '(a*b)*n)=%d',0
;;; KL+ в силу убогости реализации printf(); в msvcrt.dll приходится извращаться
_a  db  'a',0
_b  db  'b',0
_n  db  'n',0
;;; KL-
d   dd  0
a   dd  ?
b   dd  ?
n   dd  ?
; import data in the same section
 data import
 
 library msvcrt,'MSVCRT.DLL'
 
 import msvcrt,\
    system,'system',\
    scanf,'scanf',\
        printf,'printf',\ 
        _getch,'_getch',\ 
    exit,'exit'
end data
1
0 / 0 / 0
Регистрация: 25.04.2014
Сообщений: 69
18.05.2014, 16:32  [ТС] 6
Charles Kludge, еще одну сможешь?

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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
.387
.386p
.model flat
        PUBLIC  main
        EXTRN   printf:BYTE
        EXTRN   scanf:BYTE
        EXTRN   malloc:BYTE
        EXTRN   __iob:BYTE
        EXTRN   fgetc:BYTE
        EXTRN   _cstart_:BYTE
DGROUP      GROUP   CONST,CONST2,_DATA
_TEXT       SEGMENT BYTE PUBLIC USE32 'CODE'
        ASSUME CS:_TEXT, DS:DGROUP, SS:DGROUP
 
; #include <stdio.h>
; #include <malloc.h>
; #include <stdlib.h>
; void main(void)
main:
    push        ebx 
    push        esi 
    push        edi 
    push        ebp 
    sub         esp,8 
 
; {int*mas;
; int i,n,c;
; int sum,sum2;
; sum=0;
; sum2=0;
; printf("Vvedite kolichestvo elementov:");
    push        offset FLAT:L$11 
    call        near ptr FLAT:printf 
    add         esp,4 
 
; scanf("%d",&n);
    mov         eax,esp 
    push        eax 
    push        offset FLAT:L$12 
    call        near ptr FLAT:scanf 
    add         esp,8 
 
; mas=(int*)malloc(n*sizeof(int));
    mov         eax,dword ptr [esp] 
    shl         eax,2 
 
    xor         ebp,ebp 
    push        eax 
 
    xor         edi,edi 
 
; for(i=0;i<n;i++)
    xor         ebx,ebx 
    call        near ptr FLAT:malloc 
    add         esp,4 
    mov         esi,eax 
    mov         dword ptr 4[esp],eax 
L$1:
    cmp         ebx,dword ptr [esp] 
    jl          L$4 
 
; {printf("mas[%d]=",i);
; scanf("%d",&mas[i]);
; }
; for(i=0;i<=3;i++)
    mov         eax,dword ptr 4[esp] 
    lea         ebx,10H[eax] 
 
; {sum=sum+mas[i];
L$2:
    add         ebp,dword ptr [eax] 
 
; }
    add         eax,4 
    cmp         eax,ebx 
    jne         L$2 
    mov         eax,dword ptr 4[esp] 
 
; for(i=4;i<n;i++)
    mov         ebx,4 
    add         eax,10H 
L$3:
    cmp         ebx,dword ptr [esp] 
    jge         L$5 
    inc         ebx 
 
; {sum2=sum2+mas[i];
    add         edi,dword ptr [eax] 
 
; }
    add         eax,4 
    jmp         L$3 
 
L$4:
    push        ebx 
    push        offset FLAT:L$13 
    call        near ptr FLAT:printf 
    add         esp,8 
 
    push        esi 
    push        offset FLAT:L$12 
    inc         ebx 
    call        near ptr FLAT:scanf 
 
    add         esi,4 
    add         esp,8 
    jmp         L$1 
 
; {c=sum2*5-sum;
L$5:
    mov         eax,edi 
    shl         eax,2 
    add         eax,edi 
    sub         eax,ebp 
 
; }
; printf ("c=%d",c); 
    push        eax 
    push        offset FLAT:L$14 
    call        near ptr FLAT:printf 
    add         esp,8 
 
; getchar();
    cmp         dword ptr FLAT:__iob+4,0 
    jle         L$6 
    mov         eax,dword ptr FLAT:__iob 
    movzx       ebx,byte ptr [eax] 
    sub         ebx,0dH 
    cmp         ebx,0dH 
    ja          L$9 
L$6:
    push        offset FLAT:__iob 
    call        near ptr FLAT:fgetc 
    add         esp,4 
 
; getchar();
L$7:
    mov         edi,dword ptr FLAT:__iob+4 
    test        edi,edi 
    jle         L$10 
    mov         eax,dword ptr FLAT:__iob 
    movzx       ebx,byte ptr [eax] 
    sub         ebx,0dH 
    cmp         ebx,0dH 
    jbe         L$10 
    lea         ebp,-1[edi] 
    inc         eax 
    mov         dword ptr FLAT:__iob+4,ebp 
    mov         dword ptr FLAT:__iob,eax 
 
; L$8:
    add         esp,8 
    pop         ebp 
    pop         edi 
    pop         esi 
    pop         ebx 
    ret         
L$9:
    inc         eax 
    dec         dword ptr FLAT:__iob+4 
    mov         dword ptr FLAT:__iob,eax 
    jmp         L$7 
L$10:
    push        offset FLAT:__iob 
    call        near ptr FLAT:fgetc 
    add         esp,4 
    jmp         L$8 
_TEXT       ENDS
CONST       SEGMENT DWORD PUBLIC USE32 'DATA'
L$11:
    DB  56H, 76H, 65H, 64H, 69H, 74H, 65H, 20H
    DB  6bH, 6fH, 6cH, 69H, 63H, 68H, 65H, 73H
    DB  74H, 76H, 6fH, 20H, 65H, 6cH, 65H, 6dH
    DB  65H, 6eH, 74H, 6fH, 76H, 3aH, 0
L$12:
    DB  25H, 64H, 0
L$13:
    DB  6dH, 61H, 73H, 5bH, 25H, 64H, 5dH, 3dH
    DB  0
L$14:
    DB  63H, 3dH, 25H, 64H, 0
 
CONST       ENDS
CONST2      SEGMENT DWORD PUBLIC USE32 'DATA'
CONST2      ENDS
_DATA       SEGMENT DWORD PUBLIC USE32 'DATA'
_DATA       ENDS
        END
Добавлено через 20 минут
Charles Kludge, и мне нужен машинный код
0
Ушел с форума
Автор FAQ
16277 / 7602 / 1064
Регистрация: 11.11.2010
Сообщений: 13,617
18.05.2014, 17:47 7
Цитата Сообщение от AirC Посмотреть сообщение
и мне нужен машинный код
А ковры пропылесосить не нужно?
2
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
20.05.2014, 13:07 8
Цитата Сообщение от AirC Посмотреть сообщение
еще одну сможешь?
Да я-то сможешь, только зачем? Тебе это скиллов не прибавит, а мне, сисадмину и реверс-инженеру быдлокодеры не нужны. Я здесь для того, чтобы заставить вас _*думать*_.
2
20.05.2014, 13:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2014, 13:07
Помогаю со студенческими работами здесь

Как выделить на форме точки, созданные в определенном классе при выборе этого класса
Всем здрасте! Есть форма на которой находятся таксоны(классы) точек и treeView в котором они...

Как из кода выделить формулу для расчетов
Уважаемые программисты и разработчики, добрый Вам день! Помогите советом абсолютно глупому...

Как сделать вывод этого кода?
Вот что-то получилось но не пойму как сделать что-бы этот код за работал. Нужно как-то загрузить...

Как вытащить ссылку из этого кода?
&lt;a...


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

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

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