Лидеры

ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

1079

Россия, пос. Теплоозёрск, ЕАО


ID: 405587

Magic2hand

5-й класс

328


ID: 226425

Konstantin Shvetski

Модератор

309

Россия, Северодвинск


ID: 401284

Михаил Александров

Советник

278

Россия, Санкт-Петербург


ID: 137394

Megaloman

Мастер-Эксперт

181

Беларусь, Гомель


ID: 400669

epimkin

Профессионал

93


ID: 405537

hipunova1512

Посетитель

92


8.10.4

05.12.2021

JS: 2.10.3
CSS: 4.6.0
jQuery: 3.6.0
DataForLocalStorage: 2021-12-05 16:46:03-standard


Создание программ на языке Assembler.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

Консультация онлайн # 159863

Раздел:  Assembler
Автор вопроса: Alekc100
Дата: 07.02.2009, 16:19 Консультация закрыта
Поступило ответов: 1

Только начинаю программировать на Астме у меня версия masm611 по самоучителю Калашникова первая программа не могу получить Com файл строкой
ML.EXE PROGRAM1.ASM/AT из командной строки пишет ml.exe не является приложением win32 или пробую так >ML.EXE PROGRAM1.ASM/AT вообще просто открывает файл с текстом программы программка написана в блокноте в чем проблема помогите пожалуйста? smile

Приложение:

Здравствуйте, Alekc100!
Вы молодец, что решили изучить ассемблер! Удачи Вам на этом пути!
Есть несколько путей, чтобы запустить ассемблирование, проще всего, наверное, так:
Пишем исходник в папку \masm11\bin
Запускаем cmd и делаем, чтобы \masm11\bin была текущей - cd \masm11\bin
Запускаем ml program1.asm /AT (кстати, обратите внимание - пробел между именем исходника и параметром /AT)

Лысков Игорь Витальевич

Мастер-Эксперт
09.02.2009, 10:38
Мини-форум консультации # 159863
Boriss

1

= общий =    09.02.2009, 10:15

На такую тему было уже много вопросов и ответов. Попробуйте поискать в этом же разделе. Если ответа на свой вопрос не найдете - напишите здесь
Но, как правило, нужно уточнить порядок Вашей работы. Последовательно: 1) что сделали сначала, (как и что вызываете)...

неизвестный

2

= общий =    09.02.2009, 21:49

С созданием com файла получилось но что то эта программка открывается и сразу закрывается т.е не выводит сообщение 'Hello, world!'

неизвестный

3

= общий =    09.02.2009, 22:24

Дошло запускать надо было из CMD smile еще раз спасибо

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

4

= общий =    10.02.2009, 21:05

Alekc100:

Перед строкой int 20h вставьте строки:
xor ax,ax
int 16h

Прочитать символ с клавиатуры, они заставят программу ожидать символ и она будет открыта до нажатия любой клавиши, а после нажатия закроется. Это одна из особенностей работы CMD от WinХР(приложения для DOS - запускаются в эмуляторе), в Win9х command.com работает по другому(окно само не закрывается).
smile smile

А ещё, есть ещё несколько способов компиляции:
- Использование ВАТ-файлов:
= записываете ML.EXE PROGRAM1.ASM /AT строку в файл и запускаете его из проводника в папке BIN> , где и должна быть сама программа(для каждой программы нужно переписывать или создавать новый).
= использование в ВАТ-файлах параметров командной строки(один файл для компиляции любых программ)
- использование утилиты MAKE.EXE(NMAKE.EXE), но это нужно больше для больших проэктов.
Практически все способы компиляции есть в архиве рассылки. Пользуйтесь поиском. В архиве также есть ответы на все примеры по книге О.Калашникова.

Другая особенность CMD - по умолчанию не устанавливается текстовый видеорежим, поэтому пишите в начале программы ещё и:
mov ax,3
int 10h

Удачи Вам в изучении асеемблера!

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

неизвестный

5

= общий =    11.02.2009, 20:16

спасибо полезная информация для новичка smile .Если не сложно ответить на такой вопрос в программе выше прерывание 21h заканчивает программу и выходит откуда ее вызывали, а где же тогда находится последняя строка Message db 'Hello, world!$' я так думаю в памяти если он берет ее адрес в mov dx,offset Message пользуюсь отладчиком CodeView там тоже на этом прерывание заканчивается и не видно этой строки.Может я захожу вперед не разобравшись, но хотелось бы изначально понять. Заранее спасибо

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

6

= общий =    11.02.2009, 21:06

Alekc100:
Запустил компиляцию с включенным листингом:

Turbo Assembler Version 2.0 02/11/09 19:43:23 Page 1
control.ASM
1 0000 CSEG segment
2 org 100h
3 0100 Begin:
4 0100 B4 09 mov ah,9
5 0102 BA 0109r mov dx,offset Message
6 0105 CD 21 int 21h
7 0107 CD 20 int 20h
8 0109 48 65 6C 6C 6F 2C 20+ Message db 'Hello, world!$'
9 77 6F 72 6C 64 21 24
10 0117 CSEG ends
11 end Begin
Turbo Assembler Version 2.0 02/11/09 19:43:23 Page 2
Symbol Table
Symbol Name Type Value
??DATE Text "02/11/09"
??FILENAME Text "control "
??TIME Text "19:43:23"
??VERSION Number 0200
@CPU Text 0101H
@CURSEG Text CSEG
@FILENAME Text CONTROL
@WORDSIZE Text 2
BEGIN Near CSEG:0100
MESSAGE Byte CSEG:0109
Groups & Segments Bit Size Align Combine Class
CSEG 16 0117 Para none


Итого всё что выделено, это те байтики которые будут хранится в самой программе-файле. Но и те которые загружаются в память начиная с адреса 100Н, дальше всё завист от используемой модели памяти. Для этой модели РС отводит всё свободное адресное пространство, но рабочимы есть только 64кб.
smile
Я начинал с TASM 2.00, своего отладчика там нет, но всегда есть возможность запусить системный DEBUG.EXE, так по привычке и пользуюсь.
-N prog.com
-L
-D

Вот и все команды для работы(подробно команда -?), но Вы увидете всё сами то, что Вам выдал файл листинга.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

неизвестный

7

= общий =    11.02.2009, 21:39

что то у меня Debug не может найти файл уже поместил файл в корень с: не видит smile

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

8

= общий =    11.02.2009, 22:06

С помощью команд
CD .. - выйти из папки
CD папка - зайти в папку
disk: - сменить текущий диск
зайдите в папку с программой, как пример посмотрите URL >> у меня компиляторы(разные) расположены в отдельных папках, а рабочая папка одна. С помощью ВАТ-файлов компилирую программу и если нужно отлаживаю.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

9

= общий =    11.02.2009, 22:34

Ещё уточнение URL >>
Посмотрите сколько у меня различных компиляторов в различных папках(не хвастовство, а так для информации). На рисунке Вы также найдете параметры(свойство) настройки иконки с рабочего стола(для запуска сразу рабочей папки). Рабочая папка одна: my_Lib, все вопросы и ответы по порталу хранятся там.
В Ват-файлах я прописываю пути, к примеру для TASM(цветом выделены комментарии):

..\tasm\tasm.200\tasm %1 /l - вызываю транслятор
..\tasm\tasm.200\tlink %1 /t - вызываю компилятор
echo off
dlt - удаляю ненужные файлы, после компиляции
echo on


Командная строка у меня выглядит так > tc control, т.е %1 - это параметр подставляемый из командной строгки
Я так работаю.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

неизвестный

10

= общий =    11.02.2009, 23:10

Круто получилось smile спасибо а насчет bat- файлов я пробовал получается тоже. К стати в CodeView другой дамп памяти этой программы выдает почему то. Настрою тоже также
рабочую папку так удобнее как у Вас smile

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

11

= общий =    11.02.2009, 23:21

CV я не проверял, а вот то что Debug дает результат анлогичный с листингом, тут уж не поспориш. smile
Удачи Вам в изучении!
Но помните не Вы первый могли задать этот вопрос. Проверяйте архивы. smile smile smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

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

Лучшие эксперты раздела

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 243

Коцюрбенко Алексей Владимирович

Старший модератор

Рейтинг: 200

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 43

Nastya

1-й класс

Рейтинг: 3

Evgen aka Chuma

6-й класс

Рейтинг: 0

cain52

3-й класс

Рейтинг: 0