Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065

сборка проекта из нескольких файлов

16.06.2013, 01:13. Показов 7241. Ответов 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
.model small
.stack 256
.data   
public flag
    msg1 db 'Enter string: $'
    msg2 db 13, 10, 'Result: $'
    msg3 db 13, 10, 'Substring found$'
    max_size db 255
    real_size db ?
    string db 255 dup (?)
    flag db 0
    
extrn PrintStr:near
extrn ReadStr:near
extrn Change:near
 
.code   
assume cs:@code
start:
    mov ax,@data
    mov ds,ax
    mov es, ax
    
    mov dx, offset msg1
    call PrintStr
    mov dx, offset max_size
    call ReadStr
    
    mov di, offset string
    call change
    
    mov dx, offset msg2
    call PrintStr
    mov dx, offset string
    call PrintStr
    cmp flag, 0
    je exit
    mov dx, offset msg3
    call PrintStr
exit:   
    mov ax, 4c00h
    int 21h
end start
Assembler
1
2
3
4
5
6
7
8
9
10
11
.model small
public ReadStr
.code
ReadStr proc
    push ax
    mov ah, 10
    int 21h
    pop ax
    ret
ReadStr endp
end
Assembler
1
2
3
4
5
6
7
8
9
10
11
.model small
public WriteStr
.code
WriteStr proc
    push ax
    mov ah, 9
    int 21h
    pop ax
    ret
WriteStr endp
end
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
.model small
public Change
extrn flag:byte
.code
Change proc
    push si
    push di
    push ax
    mov si, di
@@1:
    lodsb
    cmp al, 13
    je ok
    cmp al, 'e'
    jne @@2
    cmp word ptr [si], 'ee'
    jne @@2
    mov al, 'o'
    add si, 2
    mov flag, 1
@@2:
    stosb
    loop @@1
ok:
    mov al, '$'
    stosb
    pop ax
    pop di
    pop si
    ret
Change endp
end
в итоге все файлы с процедурами транслируются нормально, а головная прогу выдает ошибки на месте вызова процедур Near jump or call to different CS. как решить сию проблему?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.06.2013, 01:13
Ответы с готовыми решениями:

Компиляция и сборка нескольких файлов исходного кода
Имеется такая программа из книги Кернигана и Ритчи: #include <stdio.h> #include <stdlib.h> /*для atof()*/ #define MAXOP 100 /*...

Компилирование проекта, состоящего из нескольких файлов
Как скомпилировать проект на питоне, состоящий из нескольких файлов?

Сборка файла дискрипторов (ejb-jar.xml) из нескольких файлов
Подскажите, плиз, антовскую таску или, что то подобное :))) для сборки дискриптора поставки из нескольких файлов. Смотрел таски, что то...

3
 Аватар для tm2012
110 / 110 / 100
Регистрация: 04.03.2012
Сообщений: 146
16.06.2013, 01:34
В главной программе замените строки 13-15 на

Assembler
1
2
3
PrintStr PROTO 
ReadStr PROTO
Change PROTO
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
16.06.2013, 01:58  [ТС]
сделал так
Assembler
1
2
3
extrn PrintStr PROTO 
extrn ReadStr PROTO
extrn Change PROTO
ошибка Extra characters on line.
если сделать так
Assembler
1
2
3
PrintStr PROTO 
ReadStr PROTO
Change PROTO
то будет illegal instruction и в месте вызова undefined symbol
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
16.06.2013, 05:17
Troll_Face, если ругается на near, не логично ли предположить, что нужно указать far? И следи за названиями процедур. А то в одном месте extrn PrintStr, а другом - public WriteStr. Удачи в освоении метода научного тыка.

Добавлено через 1 минуту
Да, и определи во вспомогательных модулях процедуры тоже как дальние.
Assembler
1
Change proc far
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.06.2013, 05:17
Помогаю со студенческими работами здесь

Как создать константу для нескольких файлов проекта
Создал константу, если писать в несколько заголовочных файлов а потом инклюдить в один вызывается ошибка

При компиляции проекта из нескольких файлов Visual Studio выдает множество ошибок
Здравствуйте! Долго маюсь с данной проблемой, искал на форуме и поисковых системах, но ответа не нашёл. При компиляции достаточно...

Как правильно объявить константы для всего проекта, который состоит из нескольких файлов
какой-нибудь Variables.h в котором будет что-то типа: #define A 50 #define B 40 или const int A 50

Работа с картинками из ресурсов проекта и сборка проекта
Всем привет! Проблема вот в чем, я добавил в ресурсы проекта несколько картинок и хочу вывести их в Image. Как задать полный путь через...

Сборка проекта во время работы другого проекта
Здравствуйте! Можно ли в VS13, когда в одном решении находится несколько проектов, во время работы одного проекта собрать второй, не...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru