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

Ошибка при линковке "fatal bad object file record in module near module file offset 0x0000032D"

09.12.2012, 22:19. Показов 5072. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, форумчане
Обращаюсь к знающим ассемблер,а именно TASM.
Код программы есть. После команды tasm lab создается obj -файл. При линковании далее ошибка

fatal bad object file record in module near module file offset 0x0000032D

Мне нужна помощь)

Добавлено через 57 минут
хмм... код закинуть чтоли, чтобы хоть кто то откликнулся?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.12.2012, 22:19
Ответы с готовыми решениями:

Asm неправильно компилирует 32 битные регистры и выдает ошибку Bad object file record in module
Здравствуйте, помогите пожалуйста разобраться где у меня ошибки. Решил заняться изучением ассемблера с 16-битными регистрами получается...

Ошибка: Member already exists in an object module from which this object module derives
Помогитееееееее!!!!! Начиление з/п. Программа отказывается работать, формулы не работают, при выделении ячейки выскакивает такая...

Ошибка Traceback (most recent call last): File "jailed_code", line 450, in <module> rope = BstRope(s) File "jail
Ошибка - Traceback (most recent call last): File &quot;jailed_code&quot;, line 450, in &lt;module&gt; rope = BstRope(s) File...

2
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
09.12.2012, 22:32
Цитата Сообщение от young_young Посмотреть сообщение
хмм... код закинуть чтоли, чтобы хоть кто то откликнулся?
да ну, зачем?? мы же экстрасенсы тут, решим проблему методом астрального анализа вашего линковщика
0
 Аватар для young_young
1 / 1 / 0
Регистрация: 17.05.2010
Сообщений: 10
09.12.2012, 22:40  [ТС]
sorry)

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
.486
.MODEL FLAT, STDCALL
 
EXTRN  GetStdHandle@4:NEAR
EXTRN  WriteConsoleA@20:NEAR
 
EXTRN  CharToOemA@8:NEAR
EXTRN  ReadConsoleA@20:NEAR
 
EXTRN  ExitProcess@4:NEAR ; функция выхода из программы
 
EXTRN  lstrlenA@4:NEAR ; функция определения длины строки
EXTRN  wsprintfA:NEAR; т.к. число параметров функции не фиксировано, 
            ; используется соглашение, согласно которому очищает стек 
            ; вызывающая процедура
 
; сегмент данных
.DATA
    stdout dd ? ; четырёхбайтовый дескриптор вывода
    stdin dd ?  ; четырёхбайтовый дескриптор ввода
    
    prompt db "Введите строку: ",13,10,0
    resfmt db "У %d символов одинаковые соседи",13,10,0
    res    db 128 dup (?) ; Сюда запишется отформатированная предыдущая строка
        
    ptr1   dd ? ;
    ptr2   dd ? ;
    last   dd ? ;
    result dd ? ;
        
    tmp dd ? ; четыре байта под всякий мусор
        
    str_ db 128 dup (?) ; обрабатываемая строка
    strl dd ?           ; длина этой строки
     
; сегмент кода 
.CODE
    business proc far
        ; ptr1 - предшествующий сосед обрабатываемого символа
        ; ptr1 = str_
        mov ptr1, offset str_
        ; ptr2 - последующий сосед обрабатываемого символа
        mov ptr2, offset str_
        add ptr2, 2
        ; last = (str_ - 1), т.к. с ним надо будет постоянно сравнивать ptr2
        mov last, offset str_
        mov eax, last
        add eax, strl
        mov last, eax
        dec last
        ; result - сколько символов у которых равные соседи
        mov result, 0
        
        ; if (strl > 1)
        cmp strl, 2
        ; {
        jl else_if2
            ; while (true) {
            loop1:
                ; if (ptr2 > last) break;
                mov eax, last
                cmp ptr2, eax
                jg endloop1
                                
                ; if (*ptr1 == *ptr2)
                mov eax, dword ptr [ptr1]
                movsx ebx, byte ptr [eax]
                mov ecx, dword ptr [ptr2]
                movsx edx, byte ptr [ecx]
                cmp ebx, edx
                ; {
                jne endif1
                    ; result++
                    inc result
                ; }
                endif1:
                
                ; ptr1++
                inc ptr1
                ; ptr2++
                inc ptr2
                
                ; это цикл!
                jmp loop1
            ; }
            endloop1:
            
            ; Соседи первого символа
            ; ptr1 = str_ + strl - 1
            mov ptr1, offset str_
            mov eax, ptr1
            add eax, strl
            mov ptr1, eax
            dec ptr1
            ; ptr2 = str_ + 1
            mov ptr2, offset str_
            inc ptr2
            ; if (*ptr1 == *ptr2)
            mov eax, dword ptr [ptr1]
            movsx ebx, byte ptr [eax]
            mov ecx, dword ptr [ptr2]
            movsx edx, byte ptr [ecx]
            cmp ebx, edx
            ; {
            jne endif3
                ; result++
                inc result
            ; }
            endif3:
            
            ; Соседи второго символа
            ; ptr1 = str_ + strl - 2
            mov ptr1, offset str_
            mov eax, ptr1
            add eax, strl
            mov ptr1, eax
            sub ptr1, 2
            ; ptr2 = str_
            mov ptr2, offset str_
            ; if (*ptr1 == *ptr2)
            mov eax, dword ptr [ptr1]
            movsx ebx, byte ptr [eax]
            mov ecx, dword ptr [ptr2]
            movsx edx, byte ptr [ecx]
            cmp ebx, edx
            ; {
            jne endif4
                ; result++
                inc result
            ; }
            endif4:
        ; }
        jmp endif2
        ; else {
        else_if2:
            ; result = 1
            mov result, 1
        ; }
        endif2:
        
        ret
    business endp
 
    START: ; метка точки входа (завершается двоеточием)
    
    ; перекодируем приглашение
    PUSH OFFSET prompt
    PUSH OFFSET prompt
    CALL CharToOemA@8
    
    ; перекодируем результат
    PUSH OFFSET resfmt
    PUSH OFFSET resfmt
    CALL CharToOemA@8
    
    ; дескриптор ввода
    PUSH -10
    CALL GetStdHandle@4 ; в eax будет дескриптор ввода
    MOV stdin, eax
    
    ; дескриптор вывода
    PUSH -11
    CALL GetStdHandle@4 ; в eax будет дескриптор вывода
    MOV stdout, eax
    
    ; вывод приглашения
    PUSH OFFSET prompt
    CALL lstrlenA@4 ; в eax будет длина строки
    
    PUSH 0              ; конец параметров
    PUSH OFFSET tmp     ; длина выведенной строки (не нужна)
    PUSH EAX            ; длина выводимой строки (после предыдущего шага лежит в eax)
    PUSH OFFSET prompt  ; выводимая строка
    PUSH stdout         ; куда выводить
    CALL WriteConsoleA@20
    
    ; ввод строки
    PUSH 0           ; конец параметров
    PUSH OFFSET strl ; длина считанной строки
    PUSH 200         ; максимальная длина считываемой строки
    PUSH OFFSET str_ ; куда читать
    PUSH stdin       ; откуда читать
    CALL ReadConsoleA@20 
    
    push offset str_
    call lstrlenA@4
    mov strl, eax
    sub strl, 2
    
    ; вызов процедуры
    call business
    
    ; формирование результата
    push result
    push offset resfmt
    push offset res
    call wsprintfA
    
    ; вывод результата
    push offset res
    call lstrlenA@4
    PUSH 0
    PUSH OFFSET tmp
    PUSH eax
    PUSH OFFSET res
    PUSH stdout
    CALL WriteConsoleA@20
    
    ; небольшая задержка
    MOV ECX,03FFFFFFFH ; помещение в регистр ECX – счетчик цикла –
    ; большого значения
    L1:
    LOOP L1 ; цикл без тела
    ; выход из программы 
    PUSH 0 ; параметр: код выхода
    CALL ExitProcess@4
    END START
Добавлено через 5 минут
ну и само задание, на всякий)

Имеется строка. Программа должна вернуть количество символов, у которых равные соседи и исходной строке. Еще условие,что первый символ в строке и последний тоже считать "соседями"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.12.2012, 22:40
Помогаю со студенческими работами здесь

Ошибка Bad object file
Доброго времени суток, уважаемые форумчане. Возникла такая проблема: ...имеется листинг программы (приводится ниже; файл lw4_1 в...

Fatal: 32-bit record encountered in module.
Дали задание. Поиск минимального модуля в массиве из 10 заданных значений. Проблемы две: 1. Не проходит компановку. Пишет: Fatal:...

Ассемблер. Fatal: 32-bit record encountered in module.
Дали задание. Поиск минимального модуля в массиве из 10 заданных значений. Проблемы две: 1. Не проходит компановку. Пишет: Fatal:...

Ошибка "record, object of file type required" при компиляции
При компиляции выдает ошибку &quot;record, object of file type required&quot;,выделяет последнюю строку с end., это моя первая работа поэтому я не...

bad class file: C:Program FilesJavajre1.5.0_02lib t.jar(java/lang/Object.class) class file has wrong version 49.0, should be 48.0
написал тестовый td_jsp.jsp фаил -&gt;&gt; &lt;html&gt; &lt;head&gt;&lt;title&gt;JSP test&lt;/title&gt;&lt;/head&gt; &lt;body&gt; &lt;p&gt;JSP test&lt;/p&gt; &lt;/body&gt; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru