Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для Tdutybq
8 / 3 / 1
Регистрация: 18.01.2012
Сообщений: 83

Приведение арифметического выражения к постфиксной форме

28.03.2012, 15:27. Показов 1858. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Преобразовать выражение (т.е. текст специального вида), составленное из цифр и знаков четырех арифметических операций (сложения, вычитания, умножения и деления), в постфиксную форму. В постфиксной форме сначала записываются операнды, а затем знак операции. Примеры: 3+4 34+
(5-4)+2 54-2+
2*(3+4)*5 234+*5*




Программа всё вычисляет и записывает верно, только не могу понять откуда берутся "загагулины" и непонятные буквы при выводе результатов. И при этом пищит процессор. В чём ошибка??
Код программы:

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
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
masm
.model small
.stack 64
.data
 
Right db ' Обработанные текст. $'
Start db ' Введите текст: $'
Endd db ' Для выхода нажмите любую клавишу! $'
errobrec db ' Неправильное скобочное выражение! $'
Maxmass db 30
Realmass db ?
Mass db 80 dup (' ')   - сюда записываем строку
Mass2 db 80 dup (' ')  - используем для ввода чисел
Mass3 db 80 dup (' ')  - используем для знаков
LengsMass3 dw 0        
bracket db 0                     - скобки
action dw 0 
 
 
 
 
.code 
 
;;;;;;;;;;;;;;;;;;;;; if plus
Plus proc near
Cmp mass[di], '+'
Jnz Not_Plus
 
Mov bx, lengsmass3
Mov mass3[bx], '+'
inc lengsMass3
Xor bx, bx
 
Not_Plus:
ret
Plus endp
;;;;;;;;;;;;;;;;;;;;; 
;;;;;;;;;;;;;;;;;;;;; if minus 
Minus proc near
Cmp mass[di], '-'
Jnz not_minus
 
Mov bx, lengsmass3
Mov mass3[bx], '-'
inc lengsMass3
Xor bx, bx
 
Not_minus:
ret
Minus endp
;;;;;;;;;;;;;;;;;;;;; 
;;;;;;;;;;;;;;;;;;;;; if multiply
Multiply proc near
Cmp mass[di], '*'
Jnz Not_Multiply 
Mov action, '*'
Not_Multiply:
ret
Multiply endp
;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;; if divide
Divide proc near
Cmp mass[di], '/'
Jnz Not_Divide 
Mov action, '/'
Not_Divide:
ret
Divide endp
;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 
 
 
 
 
 
 
 
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;
Cypher proc near        - процедура определяет какая цифра была введена
Cmp mass[di], '1'
Jnz not_one
Mov mass2[si], '1'
Mov cx,1 
Not_one:
Cmp mass[di], '2'
Jnz not_two
Mov mass2[si], '2'
Mov cx,1 
Not_two:
Cmp mass[di], '3'
Jnz not_three
Mov mass2[si], '3'
Mov cx,1 
Not_three:
Cmp mass[di], '4'
Jnz not_foure
Mov mass2[si], '4'
Mov cx,1 
Not_foure:
Cmp mass[di], '5'
Jnz not_five
Mov mass2[si], '5'
Mov cx,1 
Not_five:
Cmp mass[di], '6'
Jnz not_six
Mov mass2[si], '6'
Mov cx,1 
Not_six:
Cmp mass[di], '7'
Jnz not_seven
Mov mass2[si], '7'
Mov cx,1 
Not_seven:
Cmp mass[di], '8'
Jnz not_eight
Mov mass2[si], '8'
Mov cx,1 
Not_eight:
Cmp mass[di], '9'
Jnz not_nine
Mov mass2[si], '9'
Mov cx, 1 
Not_nine:
Cmp mass[di], '0'
Jnz not_zero
Mov mass2[si], '0'
Mov cx, 1 
Not_zero:
 
Cmp cx, 1
Jnz no_super
inc si
Xor cx, cx
Cmp action, '*'
Jnz GoNext
Mov mass2[si], '*'
inc si
Mov action,0
GoNext:
Cmp action, '/'
Jnz No_super
Mov mass2[si], '/'
inc si
Mov action,0
No_super:
ret
Cypher endp
;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;
Ending proc near 
Cmp action, '*'
Jnz GoNext1
Mov mass2[si], '*'
Inc si
Mov action,0 
GoNext1:
 
Cmp action, '/'
Jnz GoNext2
Mov mass2[si], '/'
Inc si
Mov action,0
GoNext2:
 
Cmp LengsMass3, 0
Jz end_work
 
Mov bx, LengsMass3
Dec bx
Mov al, mass3[bx]
Mov mass2[si], al
Inc si
Dec LengsMass3
Jmp GoNext2
end_work:
ret
Ending endp
;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 
 
 
 
 
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;
Work proc near
Xor di, di
Xor si, si
Xor ax, ax 
 
Go_Start:
Cmp mass[di], ' '
Jz go_to_end
Call Cypher 
Call Plus
Call Minus
Call Multiply 
Call Divide 
 
 
 
;;;;;;;;;;;;;;;;;Otkryvaushaya skobka ;;;;;;;;;;;;;;
cmp mass[di], '('
Jnz Not_Open_bracket 
Inc bracket
Push action
Push LengsMass3
Mov action, 0
Mov LengsMass3, 0 
Not_Open_bracket:
 
;;;;;;;;;;;;;;;;;;zakryvaushaya skobka ;;;;;;;;;;;;;
Cmp mass[di], ')'
Jnz not_Close_bracket 
Dec bracket
Call Ending
Pop LengsMass3
Pop action
Not_Close_bracket:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
inc di
mov al, Realmass 
cbw
Cmp di, ax
Jnz Go_Start
go_to_end:
Call Ending 
ret
Work endp
;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 
 
 
 
 
 
 
main proc far                  ; na4alo
    mov ax, @data          
    mov ds,ax
 
    again:
    mov   dx, offset Start    ; priglashenie ko vvodu
    mov ah,09h       
        int 21h 
 
;;;;;;;;;;;;;;;;;;;;;
  MOV AH,0AH        ;
  LEA DX,maxmass    ;
  INT 21H           ;
  XOR BH,BH         ;vvod dannih
  MOV BL, REALmass  ;
  mov mass[bx],' '  ;
  MOV mass[BX+1],'$';
  add realmass,3    ;
;;;;;;;;;;;;;;;;;;;;;
 
 
 
 
    mov   dx, offset Right     ; ‡*Јаг§Є* ў DX ЇҐаў®Ј® б®®ЎйҐ*Ёп
    mov ah,09h       
        int 21h
 
    Call work                  
 
    Cmp bracket, 0
    Jz norm
    mov   dx, offset errobrec     ; ‡*Јаг§Є* ў DX ЇҐаў®Ј® б®®ЎйҐ*Ёп
    mov ah,09h       
        int 21h
    jmp bed
 
 
norm:
    mov   dx, offset mass2     ; ‡*Јаг§Є* ў DX ЇҐаў®Ј® б®®ЎйҐ*Ёп
    mov ah,09h       
        int 21h
 
    
 
bed:
      mov  dx,offset endd    ; ‚ DX §**®бЁвбп ᬥйҐ*ЁҐ **з*«* б®®ЎйҐ*Ёп ўл室
      mov ah,09h       
      int 21h           
      mov  ah,07             ; ‚ў®¤ б Є«*ўЁ*вгал ЎҐ§ не* 
      int  21h               ; ЏаҐалў**ЁҐ 
      cmp   al,0dh
      je    again
      mov  ax,4c00h          ; ‡*ўҐаиҐ*ЁҐ Ї®¤Їа®жҐбб* б ў®§ўа*⮬ гЇа*ў«Ґ*Ёп.   
      int  21h               ; ЏаҐалў**ЁҐ          
      ret                
                 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
endp main
end  main
Миниатюры
Приведение арифметического выражения к постфиксной форме  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.03.2012, 15:27
Ответы с готовыми решениями:

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

Вычисление арифметического выражения
Здравствуйте! Assembler вижу впервые в жизни. В институте дали задание сосчитать арифметическое выражение. В методичке есть пример...

Вычисления арифметического выражения
Ребята, необходимо вічислить ариф.выражения, используя ариф.операції сопроцессора Intel x87 Дано: (2*c-d*koren iz 42/d) / c+a-1

8
 Аватар для Tdutybq
8 / 3 / 1
Регистрация: 18.01.2012
Сообщений: 83
28.03.2012, 18:23  [ТС]
:dance3:
0
85 / 85 / 38
Регистрация: 09.12.2011
Сообщений: 174
29.03.2012, 09:51
mov ah,9
int 21h
Выводит все начиная с адреса в dx и пока не встретится символ '$'.
В mass2 у тебя его нет, вот и выводится всякий мусор, пока не встретится '$' (пищит если встретился символ 07h)
0
 Аватар для Tdutybq
8 / 3 / 1
Регистрация: 18.01.2012
Сообщений: 83
29.03.2012, 10:54  [ТС]
За подсказку конечно спасибо, но можно поточнее и желательно с указанием на строку
0
85 / 85 / 38
Регистрация: 09.12.2011
Сообщений: 174
29.03.2012, 11:29
Вставь между 185 и 186 строками mov mass2[si],'$'
1
 Аватар для Tdutybq
8 / 3 / 1
Регистрация: 18.01.2012
Сообщений: 83
29.03.2012, 11:35  [ТС]
Получилось. Спасибо. Сейчас сижу разбиваю на процедуры. Процедуру Cypher нужно определить как внешнюю. Транслятор транслирует хорошо, но линковщик выдает ошибку, что неопределены переменные и массивы. (т.е. те, которые должны передаваться в процедуру из главного модуля). Вроде бы определил правильно все.

Главный модуль:
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
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
masm
extrn cypher: FAR 
.model small
.stack 64
.data
 
Right db ' ЋЎа*Ў®в***л© вҐЄбв. $'
Start db ' ‚ўҐ¤ЁвҐ ⥪бв: $'
Endd db ' END! $'
errobrec db ' ЌҐ Їа*ўЁ«м*®Ґ бЄ®Ў®з*®Ґ ўла*¦Ґ*ЁҐ! $'
Maxmass db 30
Realmass db ?
Mass db 80 dup (' ')
Mass2 db 80 dup (' ')
Mass3 db 80 dup (' ')
LengsMass3 dw 0
bracket db 0
action dw 0 
 
 
 
 
.code 
 
;;;;;;;;;;;;;;;;;;;;; if plus
Plus proc near
Cmp mass[di], '+'
Jnz Not_Plus
 
Mov bx, lengsmass3
Mov mass3[bx], '+'
inc lengsMass3
Xor bx, bx
 
Not_Plus:
ret
Plus endp
;;;;;;;;;;;;;;;;;;;;; 
;;;;;;;;;;;;;;;;;;;;; if minus 
Minus proc near
Cmp mass[di], '-'
Jnz not_minus
 
Mov bx, lengsmass3
Mov mass3[bx], '-'
inc lengsMass3
Xor bx, bx
 
Not_minus:
ret
Minus endp
;;;;;;;;;;;;;;;;;;;;; 
;;;;;;;;;;;;;;;;;;;;; if multiply
Multiply proc near
Cmp mass[di], '*'
Jnz Not_Multiply 
Mov action, '*'
Not_Multiply:
ret
Multiply endp
;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;; if divide
Divide proc near
Cmp mass[di], '/'
Jnz Not_Divide 
Mov action, '/'
Not_Divide:
ret
Divide endp
;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;
Ending proc near 
Cmp action, '*'
Jnz GoNext1
Mov mass2[si], '*'
Inc si
Mov action,0 
GoNext1:
 
Cmp action, '/'
Jnz GoNext2
Mov mass2[si], '/'
Inc si
Mov action,0
GoNext2:
 
 
Cmp LengsMass3, 0
Jz end_work
 
Mov bx, LengsMass3
Dec bx
Mov al, mass3[bx]
Mov mass2[si], al
Inc si
Dec LengsMass3
Jmp GoNext2
end_work:
ret
Ending endp
;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 
 
 
 
 
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;
Work proc near
Xor di, di
Xor si, si
Xor ax, ax 
 
Go_Start:
Cmp mass[di], ' '
Jz go_to_end
Call Cypher 
Call Plus
Call Minus
Call Multiply 
Call Divide 
 
 
 
;;;;;;;;;;;;;;;;;Otkryvaushaya skobka ;;;;;;;;;;;;;;
cmp mass[di], '('
Jnz Not_Open_bracket 
Inc bracket
Push action
Push LengsMass3
Mov action, 0
Mov LengsMass3, 0 
Not_Open_bracket:
 
;;;;;;;;;;;;;;;;;;zakryvaushaya skobka ;;;;;;;;;;;;;
Cmp mass[di], ')'
Jnz not_Close_bracket 
Dec bracket
Call Ending
Pop LengsMass3
Pop action
Not_Close_bracket:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
inc di
mov al, Realmass 
cbw
Cmp di, ax
Jnz Go_Start
go_to_end:
Call Ending 
ret
Work endp
;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 
 
 
 
 
 
 
main proc far                  ; na4alo
    mov ax, @data          
    mov ds,ax
 
    again:
        mov ax, 03
        int 10h 
    mov   dx, offset Start    ; priglashenie ko vvodu
    mov ah,09h       
        int 21h 
 
;;;;;;;;;;;;;;;;;;;;;
  MOV AH,0AH        ;
  LEA DX,maxmass    ;
  INT 21H           ;
  XOR BH,BH         ;vvod dannih
  MOV BL, REALmass  ;
  mov mass[bx],' '  ;
  MOV mass[BX+1],'$';
  add realmass,3    ;
;;;;;;;;;;;;;;;;;;;;;
 
 
 
 
    mov   dx, offset Right     ; ‡*Јаг§Є* ў DX ЇҐаў®Ј® б®®ЎйҐ*Ёп
    mov ah,09h       
        int 21h
 
    Call work                  
 
    Cmp bracket, 0
    Jz norm
    mov   dx, offset errobrec     ; ‡*Јаг§Є* ў DX ЇҐаў®Ј® б®®ЎйҐ*Ёп
    mov ah,09h       
        int 21h
    jmp bed
 
 
norm:
        Mov mass2[10], '$'
    mov   dx, offset mass2     ; ‡*Јаг§Є* ў DX ЇҐаў®Ј® б®®ЎйҐ*Ёп
    mov ah,09h       
        int 21h
 
    
 
bed:
      mov  dx,offset endd    ; ‚ DX §**®бЁвбп ᬥйҐ*ЁҐ **з*«* б®®ЎйҐ*Ёп ўл室
      mov ah,09h       
      int 21h        
 
   
      mov  ah,07             ; ‚ў®¤ б Є«*ўЁ*вгал ЎҐ§ не* 
      int  21h               ; ЏаҐалў**ЁҐ 
      cmp   al,0dh
      je    again           ; ЏаҐалў**ЁҐ 
    
      mov  ax,4c00h          ; ‡*ўҐаиҐ*ЁҐ Ї®¤Їа®жҐбб* б ў®§ўа*⮬ гЇа*ў«Ґ*Ёп.   
      int  21h               ; ЏаҐалў**ЁҐ          
      ret                
                 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
endp main
end  main






Процедура по считыванию цифр
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
Masm
Extrn mass: byte 
Extrn mass2: byte       <---------передаются из главного модуля
Extrn action: word 
.model large
.stack 64
.data
A dd ?
Realmass dw ?
 
 
.code
PUBLIC Cypher
;;;;;;;;;;;;;;;;;;;;;;;;;;
Cypher proc near
Cmp mass[di], '1'
Jnz not_one
Mov mass2[si], '1'
Mov cx,1 
Not_one:
Cmp mass[di], '2'
Jnz not_two
Mov mass2[si], '2'
Mov cx,1 
Not_two:
Cmp mass[di], '3'
Jnz not_three
Mov mass2[si], '3'
Mov cx,1 
Not_three:
Cmp mass[di], '4'
Jnz not_foure
Mov mass2[si], '4'
Mov cx,1 
Not_foure:
Cmp mass[di], '5'
Jnz not_five
Mov mass2[si], '5'
Mov cx,1 
Not_five:
Cmp mass[di], '6'
Jnz not_six
Mov mass2[si], '6'
Mov cx,1 
Not_six:
Cmp mass[di], '7'
Jnz not_seven
Mov mass2[si], '7'
Mov cx,1 
Not_seven:
Cmp mass[di], '8'
Jnz not_eight
Mov mass2[si], '8'
Mov cx,1 
Not_eight:
Cmp mass[di], '9'
Jnz not_nine
Mov mass2[si], '9'
Mov cx, 1 
Not_nine:
Cmp mass[di], '0'
Jnz not_zero
Mov mass2[si], '0'
Mov cx, 1 
Not_zero:
 
Cmp cx, 1
Jnz no_super
inc si
Xor cx, cx
Cmp action, '*'
Jnz GoNext
Mov mass2[si], '*'
inc si
Mov action,0
GoNext:
Cmp action, '/'
Jnz No_super
Mov mass2[si], '/'
inc si
Mov action,0
No_super:
ret
Cypher endp
;;;;;;;;;;;;;;;;;;;;;;;;;;
END
Миниатюры
Приведение арифметического выражения к постфиксной форме  
0
85 / 85 / 38
Регистрация: 09.12.2011
Сообщений: 174
29.03.2012, 12:00
А зачем типы внешние определять ? Объявил имя и хватит.
0
 Аватар для Tdutybq
8 / 3 / 1
Регистрация: 18.01.2012
Сообщений: 83
29.03.2012, 12:07  [ТС]
Даже если и без типов, то все равно не работает.

Добавлено через 1 минуту
Проблема в другом...Возможно я передаю не так что-то или они объявлены не в том месте, где нужно. Уже не знаю. Перепробовал все варианты
0
85 / 85 / 38
Регистрация: 09.12.2011
Сообщений: 174
29.03.2012, 13:13
основная
Assembler
1
2
3
4
.model small
extrn CYPHER:far
public mass,mass2
.stack 64
модуль
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
Extrn mass
Extrn mass2
Extrn action 
.model small
.stack 64
.data
A dd ?
Realmass dw ?
 
 
.code
PUBLIC Cypher
;;;;;;;;;;;;;;;;;;;;;;;;;;
Cypher proc far
 
Cmp  byte ptr mass[di], '1'
Jnz not_one
Mov  byte ptr mass2[si], '1'
Mov cx,1 
Not_one:
Cmp  byte ptr mass[di], '2'
Jnz not_two
Mov  byte ptr mass2[si], '2'
Mov cx,1 
Not_two:
Cmp  byte ptr mass[di], '3'
Jnz not_three
Mov  byte ptr mass2[si], '3'
Mov cx,1 
Not_three:
Cmp  byte ptr mass[di], '4'
Jnz not_foure
Mov  byte ptr mass2[si], '4'
Mov cx,1 
Not_foure:
Cmp  byte ptr mass[di], '5'
Jnz not_five
Mov  byte ptr mass2[si], '5'
Mov cx,1 
Not_five:
Cmp  byte ptr mass[di], '6'
Jnz not_six
Mov  byte ptr mass2[si], '6'
Mov cx,1 
Not_six:
Cmp  byte ptr mass[di], '7'
Jnz not_seven
Mov  byte ptr mass2[si], '7'
Mov cx,1 
Not_seven:
Cmp  byte ptr mass[di], '8'
Jnz not_eight
Mov  byte ptr mass2[si], '8'
Mov cx,1 
Not_eight:
Cmp  byte ptr mass[di], '9'
Jnz not_nine
Mov  byte ptr mass2[si], '9'
Mov cx, 1 
Not_nine:
Cmp  byte ptr mass[di], '0'
Jnz not_zero
Mov  byte ptr mass2[si], '0'
Mov cx, 1 
Not_zero:
 
Cmp cx, 1
Jnz no_super
inc si
Xor cx, cx
Cmp  action, '*'
Jnz GoNext
Mov  byte ptr mass2[si], '*'
inc si
Mov  action,0
GoNext:
Cmp  action, '/'
Jnz No_super
Mov  byte ptr mass2[si], '/'
inc si
Mov  action,0
No_super:
ret
Cypher endp
;;;;;;;;;;;;;;;;;;;;;;;;;;
END
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.03.2012, 13:13
Помогаю со студенческими работами здесь

Вычислить значение арифметического выражения
операнды - байты, вычисления знаковые Была бы очень признательна если мне хотя бы объяснили суть как делать данное задание.

Составить алгоритм вычисления и написать программу арифметического выражения
Составить алгоритм вычисления и написать программу арифметического выражения a·(b+2)-3·c+b/7+21 a=-2 b=11 c=34

Просьба помочь вычслить на Ассемблере значение арифметического выражения
Здравствуйте, уважаемые форумчане. Просьба помочь решить задачу на Ассемблере: Требуется вычислить значение выражения с использованием...

Вычисление целочисленного арифметического выражения
Здравствуйте, есть выражение f/e — b/d – a/c, нужно посчитать его с процедурами, все компилирует, но не запускает .exe Помогите...

Решение арифметического выражения ( X*Y )+( X/Y ) / X-Y
В задании необходимо вывести решение выражения (( X*Y )+( X/Y )) / X-Y, при условии что, X - WORD Y - DWORD. Тупые вопросы тут не...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru