Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
1
MASM32

Компиляция masm32 из RadASM программ для DOS

05.11.2013, 22:45. Показов 4362. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Вот такая проблема у меня. Скачал masm32 установил в корень диска С: В notepad забил текст,отдаю команду в командной строке ml /c xxxx.asm получаю файл с расширением .obj Далее doslnk /t xxxx.asm и тишина
"doslnk" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Это что ,получается у меня нет линковщика?! Хотя в папке bin файл DOSLNL.EXE присутствует. Что не так делаю?
И ещё я в папке bin создал папку WORKCATALOG ,а в ней подпапку ISHODNIK думал так удобней будет,в связи с этим вопрос,в Переменных средах прописывать надо ;c:\masm32\bin или ;C:\msam32\bin\WORKCATALOG?

Ещё почитав в нете установил RadAsm тут тоже какие-то ошибки выдаёт. Не хотит работать как надо. Его я установил так же в корень диска С: может надо его в masm запихать? В прописании путей запутался,может и там чего напортачил. Кстате его в переменные среды надо прописывать?
Так вроде с линковкой программы разобрался. Теперь как-то бы настроить инструмент RadAsm что б и он работал,как швецарсие часы) На скрине показал какие пути я прописал.В RadAsm есть отладчик ollyDbg,а если у меня уже имеется,то могу я к нему пути прописать? Там просто плагинов побле,чем в встроеном,да и настроен уже?
Миниатюры
Компиляция masm32 из RadASM программ для DOS  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2013, 22:45
Ответы с готовыми решениями:

Компиляция программ для DOS в MASM32
проблема в том, что через командную строку код компилится но линкером link16, я пишу в radasm и...

Компиляция программ exe для DOS в MASM32
помогите разобраться как создавать программы в masm32 типа exe , можете дать код который точно...

Компиляция и запуск программ для DOS в 32/64bit Windows
И так,Здравствуйте и начнем сразу к делу.Как мне компилировать 16 раз. программы на 64 раз....

Работа в RadASM с программами для DOS
хочу простенькую прогу написать на асме... что то типа такого.... но это не важно.. kl: mov...

18
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
06.11.2013, 04:22 2
Liss29,
собираешь программы под ДОС? в папке masm32\bin для этого есть link16.exe
  • для сборки СОМ-программ
    Код
    masm32\bin\ml /AT /c %filename%.asm
    masm32\bin\link16 /T %filename%.obj,,,,,
  • для сборки EXE-программ
    Код
    masm32\bin\ml /c %filename%.asm
    masm32\bin\link16 %filename%.obj,,,,,
0
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
06.11.2013, 04:53  [ТС] 3
MiklДа,под ДОС,пока так.Книженцию читаю,по ассамблеру,только что-то про компиляцию забыли упамянуть)) Я из .obj в .com уже откомпилировал,только в .exe не получилось,но мне сказали что,если присутствует значение org 100h,то в exe не не получится откомпилировать,а оно там есть...
Код
masm32\bin\link16 %filename%.obj,,,,,
Я набирал так doslnk xxxx.obj для екзешника.
А что с RadAsm-ом по поводу него ничего не подскажете!!!
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
06.11.2013, 06:29 4
Liss29,
я не экстрасенс, и не видя внутренностей твоих ассемблерных файлов легко ошибиться, но основные отличия СОМ и ЕХЕ файлов
  • СОМ-файл
    • один сегмент, в котором и команды и стек и данные
    • используется модель памяти tiny
    • если есть данные — значит должна быть строка org 100h
    • окончание программы RET или INT 20h
  • EXE-файл
    • несколько сегментов, данные, команды и стек в разных сегментах
    • используются модели памяти
      • small
      • medium
      • large
      • huge
      • flat
      • compact
      • tchuge
    • если есть данные — значит должны быть строки mov ax,@data/mov ds,ax
    • окончание программы mov ah,4Ch/int 21h
1
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
06.11.2013, 17:35  [ТС] 5
Цитата Сообщение от Mikl___ Посмотреть сообщение
INT 20h
там есть. Дак я ж написал,что экзешник не создать из этого файлика
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CSEG segment
org 100h
 
Begin:
 
    mov ah,9
    mov dx,offset Message
    int 21h
 
    int 20h
 
Message db 'Hello, world!$'
 
CSEG ends
end Begin
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CSEG segment
org 100h
 
Start:
 
    mov ah,9
    mov dx,offset String
    int 21h
 
    mov ah,10h
    int 16h
 
    int 20h
 
String db 'Ќ*¦¬ЁвҐ «оЎго Є«*ўЁиг...$'
 
CSEG ends
end Start
Вот эти два пока что файла мне нужны,я их уже откомпилировал в .com всё гуд.
0
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
08.11.2013, 20:17  [ТС] 6
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CSEG segment
org 100h
begin:
         mov ax,0B800h       
         mov es,ax             
         mov di,0            
         mov al,1            
         mov ah,31            
         mov cx,2000         
         
Next_face:                   
         mov es:[di],ax    
         add di,2            
         loop Next_face     
         
         mov ah,10h
         int 16h
         int 20h
CSEG ends
end Begin
Написано,что должна появляться рожица,в левом верхнем углу. запускаю в сомандной строке .com файл и ничего не появляется. Так же и при запуске в Far-е. В чём причина,может я где-то закосячил,вроде проверял,сравнивал с листингом,ошибок нет. Но и результата нет( Обидно,товарищи(((
0
193 / 188 / 18
Регистрация: 06.10.2013
Сообщений: 357
08.11.2013, 20:28 7
Liss29, нужно установить видеорежим в начале кода. Особенность работы эмулятора Dos.

Assembler
1
2
mov ax,3
int 10h
0
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
08.11.2013, 20:44  [ТС] 8
Цитата Сообщение от Not at all! Посмотреть сообщение
Liss29, нужно установить видеорежим в начале кода. Особенность работы эмулятора Dos.
В начале кода,это простите куда,
Assembler
1
2
3
4
5
6
7
8
9
10
CSEG segment
org 100h
begin:
         mov ax,3
         int 10h
         mov ax,0B800h      
         mov es,ax          
         mov di,0            
         mov al,1                   
         mov ah,31
Как-то так или куда это запихать? Или в тело цикла между next_face и loop_face
0
193 / 188 / 18
Регистрация: 06.10.2013
Сообщений: 357
08.11.2013, 21:09 9
Цитата Сообщение от Liss29 Посмотреть сообщение
Как-то так или куда это запихать?
Вы верно запихали.
0
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
08.11.2013, 21:19  [ТС] 10
Цитата Сообщение от Not at all! Посмотреть сообщение
Вы верно запихали.
Да ладно,сейчас опробую,что выйдет из этого.
0
193 / 188 / 18
Регистрация: 06.10.2013
Сообщений: 357
08.11.2013, 21:21 11
Дерзайте.
0
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
08.11.2013, 21:31  [ТС] 12
Ух ты,получилось,наконец-то

Добавлено через 6 минут
Что ж он(автор)в книге не вставил эти параметры,странно,получается там куча ошибок,например,при переводе чисел из шестнадцатеричного в десятичное или из двоичного в десятичное:10100b=24+0+22+0+0=16+8=20 Разве два в квадрате не 4 будет и как это 16+8=20 24 по моему. ???
0
193 / 188 / 18
Регистрация: 06.10.2013
Сообщений: 357
08.11.2013, 21:40 13
Цитата Сообщение от Liss29 Посмотреть сообщение
Что ж он(автор)в книге не вставил эти параметры
Этой книге сто лет в обед. Под чистым досом такое не нужно. А что касается перевода из двоичной системы в десятичную, то всё верно сделано. Это у Вас от радости в зобу дыханье спёрло, когда прога заработала.
0
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
08.11.2013, 21:47  [ТС] 14
Цитата Сообщение от Not at all! Посмотреть сообщение
Этой книге сто лет в обед. Под чистым досом такое не нужно. А что касается перевода из двоичной системы в десятичную, то всё верно сделано. Это у Вас от радости в зобу дыханье спёрло, когда прога заработала.
.О.Калашников. Может быть,но с чего-то надо начинать... Как верно,что я тогда недопонял,как может быть 2 в квадрате(или во второй степени) восем. Не могу сообразить. 2 в четвёртой понял 16,а это не могу понять. 16+8=24 Даже калькулятор так говорит)))Если не трудно поясните на доступном,желательно Русском языке.
0
193 / 188 / 18
Регистрация: 06.10.2013
Сообщений: 357
08.11.2013, 21:51 15
10000b = 16d, 100b = 4d Что тут не понятно может быть? Откуда восьмёрка взялась? Вбейте в калькулятор двоичное 10100 и переключите на десятичную систему. А в книге опечатка может быть.
0
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
08.11.2013, 22:07  [ТС] 16
Цитата Сообщение от Not at all! Посмотреть сообщение
10000b = 16d, 100b = 4d Что тут не понятно может быть? Откуда восьмёрка взялась? Вбейте в калькулятор двоичное 10100 и переключите на десятичную систему. А в книге опечатка может быть.
Так вот получается 20. Может и опечатка,так с опечатками там похоже проблема ,например,оператор Lebel,а потом пишет уже Label кому верить,правельно,как я понимаю второй вариант) Каоькулятор то считает,но,если не понять таких основ ,как перевод в различные системы счисления,то стоит ли вообще продолжать. Пытаюсь перводить сам,а потом проверяю в калькуляторе.
0
193 / 188 / 18
Регистрация: 06.10.2013
Сообщений: 357
08.11.2013, 22:36 17
Liss29, ну найдите себе другую книгу, без опечаток. В сети этого добра навалом.
0
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
08.11.2013, 22:46  [ТС] 18
Цитата Сообщение от Not at all! Посмотреть сообщение
Liss29, ну найдите себе другую книгу, без опечаток. В сети этого добра навалом.
Добра то навалом,только что из всего этого лучше выбрать,ВОТ В ЧЁМ ВОПРОС. Пока ,буду дочитывать эту,если уж начал.
0
223 / 37 / 4
Регистрация: 18.11.2012
Сообщений: 1,502
14.11.2013, 17:12  [ТС] 19
Помогите ,что-то не асемблируется вот этот пример:
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
CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Begin_shell:
;Проверим видеорежим.
         call Check_video
;Выведем сообщение прветствие.
         mov ah,9
         mov dx,offset Mess_about
         int 21h
;Вызовем главную процедуру
         call Main_proc
;Сюда мы вернёмся,только когда пользователь решит выйти в DOS.
         int 20h
         
;Здесь будут идти процедуры в произвольном порядке.
 
;Главная процедура,где будут происходить все действия.
         include main.asm
         
;Процедуры работы с дсплеем:
         include display.asm
         
;Роцедуры работы с файлами:
         include files.asm
;Процедуры работы с клавиатурой:
         include keyboard.asm
;Текст, сообщения:
         include messages.asm
;И другие. Со временем добавим.
CSEG ends
Begin_shell endp
В командной строке выдаёт вот такие ошибки:
Sshell11.asm(6) : error A2006: undefined symbol : Check_video
Sshell11.asm(9) : error A2006: undefined symbol : Mess_about
Sshell11.asm(12) : error A2006: undefined symbol : Main_proc
Не могу сам понять и разобраться!

Добавлено через 1 минуту
Begin_shell endp исправил на end Begin_shell
0
14.11.2013, 17:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2013, 17:12
Помогаю со студенческими работами здесь

Настроить RadASM для программирование под DOS
Всем привет! можно ли программировать DOS программы с помошью RADASM? если да как настроить его. ...

RadAsm 3.0. Компиляция ресурсов
Кто-нибудь пользует RadAsm третьей версии? Не могу разобраться с компиляцией ресурсов. Гружу проект...

Компиляция python 3.x кода для работы в ms-dos
Начал писать простенький консольный квест на питоне. По мере разработки, появилось желание...

Запуск программ для DOS в Windows x64
На данный момент на ноутбуке стоит ОС Win 10 x64. Столкнулся с проблемой то что Turbo Assembler не...

Компиляция программ для Russian Code Cup
Есть такая программа #include <stdio.h> #include <math.h> int main(){ int n;//Количество...

Копировать содержимое файла в другой файл
Всем доброго времени суток:), подскажите пожалуйста!:wall: как сделать!!! мне нужно написать код...


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

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