Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 7

Кто сообразить? Как скомпилировать на ассемблер? выдает ошибка!

12.03.2013, 14:51. Показов 1556. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кто сообразить?как скомпилировать файл asm на ассемблере. Выдает ошибка fatal error A1010: unmatched block nesting : getParityCode Пользовался прог. RadASM и MASM32 Editor
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
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
.model small
.stack 100H
.Data
MAXDIGITS equ 16
BUFFERSIZE Equ MAXDIGITS + 2 + 1
buffer DB BUFFERSIZE Dup (?)
ARRAYSIZE Equ 4
dataArray DB 4 * ARRAYSIZE Dup (?)
changeValueNo DB ?
changeValue DB ?
parityCode DD ?
rand_a dd 69621
rand_m dd 7FFFFFFFH
seed DD - 1
welcomeMsg DB "Welcome to array parity checker. ", 0DH, 0AH
DB 0DH, 0AH
DB "This program generates array with random values and calculates its parity code. ", 0DH, 0AH
DB "Then you can change any array value and program will check parity code. ", 0DH, 0AH
DB "Enjoy! ", 0DH, 0AH
DB 0DH, 0AH
DB 0DH, 0AH, "$"
errorMsg DB "Parity check error. ", 0DH, 0AH, "$"
okMsg DB "Parity check ok. ", 0DH, 0AH, "$"
dataMsg DB "Array data: $"
codeMsg DB "Parity code: $"
numberMsg DB "Enter array item number to change (0. .15): $"
valueMsg DB "Enter new value (0. .255): $"
uncorrectMsg DB "Incorrect number. $"
writeln DB 0DH, 0AH, "$"
byeMsg DB "Bye! ", 0DH, 0AH, "$"
itemSeparator DB "$"
.Code
.386
start: Mov Ax, @data
Mov Ds, Ax
Mov Es, Ax
And Sp, Not 3
Mov Ax, 0003H
Int 10H
Mov Dx, Offset welcomeMsg
Call showString
Call fillArray
Mov Cx, ARRAYSIZE * 4
Mov Si, Offset dataArray
Mov Di, Offset parityCode
Call saveParityCode
Call showArray
Mov  eax, parityCode
Call showParityCode
Call inputValueNo
Call inputValue
Call ch angeItem
Call showArray
Call getParityCode
Call showParityCode
Cmp parityCode, Eax
Je parityCode_notChanged
parityCode_Changed: 
Mov Dx, Offset errorMsg
Call showString
Jmp main_exit
parityCode_notChanged: 
Mov Dx, Offset okMsg
Call showString
main_exit: 
Call writeLine
Call writeLine
Mov Dx, Offset byeMsg
Call showString
Call writeLine
Mov Ax, 4C00H
Int 21H
fillArray proc ;??????????
Push Eax
Push Cx
Push Edi
Mov Edi, Offset dataArray
Mov Cx, ARRAYSIZE
fillArray_loop: 
Call rand
cld 
stosd;izmenil enter
loop fillArray_loop
Pop Edi
Pop Cx
Pop Eax
ret
fillArray endp
rand proc ;??????????
Push Edx
Mov Eax, dword ptr seed
Test Eax, Eax
Js fetch_seed
randomize:
Mul dword ptr rand_a
Div dword ptr rand_m
Mov Eax, Edx
Mov dword ptr seed, Eax
Pop Edx
ret
fetch_seed: 
Push Ds
Push 0040H
Pop Ds
Mov Eax, dword ptr Ds:006CH
Pop Ds
Jmp short randomize
rand endp ;??????????
saveparityCode proc ;??????????
Push Eax
Call getparityCode
mov [di], eax
Pop Eax
ret
saveparityCode endp
getparityCode proc
Cmp Cx, 32
Ja getParityCode_sum
Call getParityBits
ret
getParityCode_sum:
Call getParitySum
ret
getParityCode endp
getParityBits proc
Push Ebx
Push Cx
Push Si
Xor Ebx, Ebx
std
Add Si, Cx
Dec Si
getParityBits_loop: 
lodsb
Test Al, Al
Jp getParityBits_parity
clc
Jmp short getParityBits_shift
getParityBits_parity: 
stc
getParityBits_shift: 
Rcl Ebx, 1
loop getParityBits_loop
Mov Eax, Ebx
Pop Si
Pop Cx
Pop Ebx
ret
getParityBits endp
getParitySum proc
Push Ebx
Push Cx
Push Si
Xor Ebx, Ebx
cld
getParitySum_loop: 
lodsb
Test Al, Al
jnp getParitySum_next
Inc Ebx
getParitySum_next: 
loop getParitySum_loop
Mov Eax, Ebx
Pop Si
Pop Cx
Pop Ebx
ret
getParitySum endp
showArray proc
Push Eax
Push Cx
Push Dx
Push Si
Push Di
Mov Dx, Offset dataMsg
Call showString
Xor Eax, Eax
Mov Si, Offset dataArray
Mov Di, Offset buffer
Mov Cx, ARRAYSIZE * 4
showArray_loop: 
cld
lodsb
Call int 2 Dec
Mov Dx, Offset buffer
Call showString
Mov Dx, Offset itemSeparator
Call showString
Loop showArray_loop
Call writeLine
Pop Di
Pop Si
Pop Dx
Pop Cx
Pop Eax
ret
showArray endp
showParityCode proc
Push Dx
Push Di
Mov Dx, Offset codeMsg
Call showString
Mov Di, Offset buffer
Call Int 2 Dec
Mov Dx, Di
Call showString
Call writeLine
Pop Di
Pop Dx
ret
showParityCode endp
inputValueNo proc
Push Bx
Push Cx
Push Dx
Push Si
Push Di
Mov Bx, ARRAYSIZE * 4 - 1
Mov Cl, 2
Mov Dx, Offset numberMsg
Mov Si, Offset uncorrectMsg
Mov Di, Offset changeValueNo
Call inputNumber
Pop Di
Pop Si
Pop Dx
Pop Cx
Pop Bx
ret
inputValueNo endp
inputValue proc
Push Bx
Push Cx
Push Dx
Push Si
Push Di
Mov Bx, 255
Mov Cl, 3
Mov Dx, Offset valueMsg
Mov Si, Offset uncorrectMsg
Mov Di, Offset changeValue
Call inputNumber
Pop Di
Pop Si
Pop Dx
Pop Cx
Pop Bx
ret
inputValue endp
ch angeItem proc
Push Ax
Push Bx
Push Si
Mov Bx, Offset dataArray
Xor Ax, Ax
Mov Al, changeValueNo
Mov Si, Ax
Mov Al, changeValue
mov [bx + si], al
Pop Si
Pop Bx
Pop Ax
ret
ch angeItem endp
inputNumber proc
Push Ax
Push Di
inputNumber_input: 
Call showString
Mov Di, Offset buffer
Call do_inputNumber
Call writeLine
Jnc inputNumber_exit
inputNumber_error: 
Push Dx
Mov Dx, Si
Call showString
Pop Dx
jmp short inputNumber_input
inputNumber_exit: 
Pop Di
mov [di], al
pop ax
ret
inputNumber endp
do_inputNumber proc
Push Dx
Push Si
And Cx, 0FH
clc
Inc Cl
mov [di], cl
Dec Cl
Mov Dx, Di
Mov Ah, 0AH
Int 21H
Mov Ch, [Di + 1]
Cmp Ch, 0
Je do_inputNumber_error1
Mov Si, Di
Inc Si
Inc Si
Push Cx
Mov Cl, Ch
And Cx, 0FH
Call Dec 2 Int
Pop Cx
Jc do_inputNumber_error1
Cmp Bx, Ax
Jc do_inputNumber_error2
Jmp do_inputNumber_exit
do_inputNumber_error1: 
Xor Ax, Ax
do_inputNumber_error2:
stc
do_inputNumber_exit: 
Pop Si
Pop Dx
ret
do_inputNumber endp
showString proc
Push Ax
Mov Ah, 9H
Int 21H
Pop Ax
ret
showString endp
writeLine proc
Push Dx
Mov Dx, Offset writeln
Call showString
Pop Dx
ret
writeLine endp
Dec 2 Int proc
Push Bx
Push Cx
Push Dx
Push Si
Cmp Cx, 0
Je Dec 2 int_error
Cmp Cx, 5
Ja Dec 2 int_error
Xor Ax, Ax
Xor Bx, Bx
clc
Dec 2 int_loop:
Mov Bl, byte ptr[Si]
Cmp Bl, '0'
Jb Dec 2 int_error
Cmp Bl, '9'
Ja Dec 2 int_error
Sub Bl, '0'
Mov Dx, Ax
Shl Ax, 1
Jc Dec 2 int_error
Shl Ax, 1
Jc Dec 2 int_error
Add Ax, Dx
Jc Dec 2 int_error
Shl Ax, 1
Jc Dec 2 int_error
Add Ax, Bx
Jc Dec 2 int_error
Inc Si
Loop Dec 2 int_loop
Jmp Dec 2 int_exit
Dec 2 int_error:
Xor Ax, Ax
stc
Dec 2 int_exit:
Pop Si
Pop Dx
Pop Cx
Pop Bx
ret
Dec 2 Int endp
Int 2 Dec proc
Push Eax
Push Ebx
Push Cx
Push Edx
Push Di
Xor Ebx, Ebx
Mov Bl, 10
Xor Cx, Cx
Int 2 dec_loop:
Xor Edx, Edx
Div Ebx
Add Dl, '0'
Push Dx
Inc Cx
Test Eax, Eax
Jnz Int 2 dec_loop
cld
Int 2 dec_store:
Pop Ax
stosb
Loop Int 2 dec_store
Mov byte ptr[Di], '$'
Pop Di
Pop Edx
Pop Cx
Pop Ebx
Pop Eax
ret
Int 2 Dec endp
end start
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.03.2013, 14:51
Ответы с готовыми решениями:

помогите скомпилировать ассемблер!!!
.data a db '6' b db '8' c db '1' d db '3' .code start: mov ax,@data mov ds,ax ...

Не могу скомпилировать на dev c++, выдает ошибки
#include <stdio.h> void p1(int *m, int k) { int i; for(i=0;i<k;i++) m=-1*m; } void p2(int *m, int k) {

Ошибка гдето! Подправить бы ... Сможете сообразить?
Помогите подправить код программы! гдето ошибка, только не пойму где! Программа на Паскале! суть программы в том что мы вводим таблицу из...

9
12.03.2013, 14:55

Не по теме:

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

0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
12.03.2013, 15:30
stroggfaer,
названия меток и процедур пишутся в одно слово, без разрывов, для названия переменных не используй названия команд типа "Dec 2 Int", "Int 2 Dec" или "Int 2 dec_store"
0
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 7
13.03.2013, 08:30  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
stroggfaer,
названия меток и процедур пишутся в одно слово, без разрывов, для названия переменных не используй названия команд типа "Dec 2 Int", "Int 2 Dec" или "Int 2 dec_store"
Угу точно спасибо исправил)))...кстати почему еще выдает ошибку 48 строка error A2074: cannot access label through segment registers ("Mov eax, parityCode") может не стоит прописовать регистр отдельно?
0
13.03.2013, 08:39

Не по теме:

писать регистры с заглавной буквы. Такого я еще не видел :D

0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
13.03.2013, 09:14
Цитата Сообщение от Fatal Error
писать регистры с заглавной буквы. Такого я еще не видел
Fatal Error,
можно с заглавной, можно со строчной, можно смешать строчные с заглавными, это как раз компиляторы в написании команд, регистров, директив позволяют, а вот при написании названий меток, переменных, процедур, макросов, тут если ключ компилятора установлен "различать регистр" (ml /Cp или tasm /ml) тогда низяяя
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
13.03.2013, 11:08
Да это то я знаю, просто первый раз вижу такой стиль
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
13.03.2013, 11:17
Fatal Error,
стиль появится после сотой программы, а это обычное студенческое раздолбайство...
0
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 7
13.03.2013, 11:18  [ТС]
Цитата Сообщение от Fatal Error Посмотреть сообщение
Да это то я знаю, просто первый раз вижу такой стиль
Мой редактор подправил автоматом и за этого так получился)
0
13.03.2013, 11:19

Не по теме:

Цитата Сообщение от stroggfaer Посмотреть сообщение
Мой редактор подправил
что и требовалось доказать...

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2013, 11:19
Помогаю со студенческими работами здесь

Кто может скомпилировать?

Кто возмется скомпилировать dll
Кто поможет скомпилировать dll файл , есть исходники , нужен исходный файл trayhook.dll x64 bit программы Glass Toast кому интересно , я в...

Компилятор выдает три ошибки, при попытке скомпилировать программу
Добрый день. Мне по заданию нужно решить эту формулу: l=min(x+y,y-z)/max(x,y). Я написал код программы на C++, но компилятор выдает 3...

Xenu - выдает ошибки перехожу а там в корзине отложенный товар Кто знает как ?
Сайт создан на WordPress сайт infotv.net.ua использовал программу Xenu и она выдает вот такие ошибки скажите от куда они и как от них...

Кто может скомпилировать програмку(я её только перевёл)
Даже не знаю чем её в java... Исходники в папке src. Заранее спасибо, ну или хотя бы подскажите чем можно скомпилить...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru