Консультация № 185343
01.02.2012, 13:07
85.00 руб.
0 21 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Я вот только только хочу научиться программировать на Assembler'е.. Приобрел книгу "Ассемьлер это просто" Олега калашникова.
И не могу даже написать окно с hello world:) Дело в том что пишу в блакноте код, который в учебнике. сохраняю helloworld.asm и дальше пытаюсь запустить MASM 6.11 ,но он тут же прям вылетает. так же все и с TASM. Можете пожалуйста сказать в чем дело и как вообще мне дальше создать программу ?

Обсуждение

давно
Старший Модератор
17042
808
01.02.2012, 13:19
общий
Вам стоит подробнее описать последовательность выполняемых действий.
1. Что значит "вылетает"? Ответьте на вопросы для экспертов: а) как вы запускаете MASM / NASM (из командной строки, щелчком по значку файла программы); б) с какими параметрами Вы запускаете ассемблер; в) что пишет ассемблер при "вылете".
2. У Вас (я полагаю, Вы работаете в Windows) отключена опция "Не отображать расширения для зарегистрированных типов файлов"? А то, быть может, Вы сохраняете программу как helloworld.asm.txt?
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
давно
Старший Модератор
31795
6196
01.02.2012, 13:34
общий
Для начала прочитайте это.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
01.02.2012, 13:36
общий
Адресаты:

я запускаю из папки, MASM611\BIN и там файл MASM.
насчет параметров не знаю если честно))
А там где "скрывать расширение для зарегистрированных типов файлов" стоит галочка..

или можете пожалуйста рассказать подробно, как написать эту первую программуот запуска и до конца, я буду вам очень признателен... Может я просто что-то не так делаю или запускаю..
давно
Старший Модератор
31795
6196
01.02.2012, 13:44
общий
01.02.2012, 13:46
ещё одно замечание по имени файла: смотрите тут.

Давайте оставайтесь он-лайн некоторое время и максимум через час Вы получите свой "хелло ворлд".
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
01.02.2012, 13:54
общий
Что либо получилось?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
01.02.2012, 14:01
общий
Делаю все так как и написано ..

Нажимаете кнопки "Windows" + "R", у Вас появится окно "Выполнить | Run".
В этом окне Вы набираете "COMMAND"(W9x)" или CMD"(XP), у Вас откроется окно "Сеанс MS-DOS | MS-DOS prompt" c текстом "имя ОСи и текущая папка(к примеру: C: \ Windows \ Destop >)".
Используя команды MS-DOS:
-CD имя папки - зайти в папку;
-CD . . - выйти из папки;
-D: - сменить дисковод;
Вы должны попасть в папку \ MASM611 \ BIN >.
После этого Вы набираете команду:
ML prog01.asm [ options | ключи ]

Но вот что у меня выдает..
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\User>CD C:\MASM611\BIN

C:\MASM611\BIN>ML pgm1.asm
Microsoft (R) Macro Assembler Version 6.11
Copyright (C) Microsoft Corp 1981-1993. All rights reserved.

Assembling: pgm1.asm
fatal error A1020: cannot find link.exe

C:\MASM611\BIN>
давно
Старший Модератор
31795
6196
01.02.2012, 14:03
общий
01.02.2012, 14:04
Цитата: 392134
cannot find link.exe

Посмотрите этот файл в соседних папках(обычно BINR) и скопируйте его в папку с масм
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
01.02.2012, 14:14
общий
Он создает конечно , файл obj и саму программу но при запуске выдает ошибку, я сделал снимок.
C:\MASM611\BIN>ML prog1.asm
Microsoft (R) Macro Assembler Version 6.11
Copyright (C) Microsoft Corp 1981-1993. All rights reserved.

Assembling: prog1.asm

Microsoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992
Copyright (C) Microsoft Corp 1984-1992. All rights reserved.

Object Modules [.obj]: prog1.obj
Run File [prog1.exe]: "prog1.exe"
List File [nul.map]: NUL
Libraries [.lib]:
Definitions File [nul.def]:
LINK : warning L4021: no stack segment

C:\MASM611\BIN>
Прикрепленные файлы:
af41072852fbb1233179b92cf87a63bd.JPG
давно
Старший Модератор
31795
6196
01.02.2012, 14:24
общий
Цитата: 392134
Object Modules [.obj]: prog1.obj
Run File [prog1.exe]: "prog1.exe"
List File [nul.map]: NUL
Libraries [.lib]:
Definitions File [nul.def]:
LINK : warning L4021: no stack segment

Вы создаете ЕХЕ-файл, а у Вас пример для СОМ-файла.
В командной строке наберите >link.exe prog1.obj /t
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
01.02.2012, 14:29
общий
Что бы этим не заморачиватся, я в свое время сразу писал модель памяти в программе:
Код:
.model tiny
.code; segment
;assume cs:code;ds:code;ss:code
org 100h
begin:
mov ah,09h
mov dx,offset myText
int 21h
;тут нужно для ХР ставить XOR AX,AX и INT 16H
ret;может быть и такая строка int 20h
myText db 'Hello World$';выводимый текст может быть любой
;ends
end begin;двоеточие не ставится

Компилятор сам всё выполнял.


Перед командой RET, советую поставить XOR AX,AX и INT 16H
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
01.02.2012, 14:32
общий
Run file [prog1.com]:
и тут что-то надо вписать?
давно
Старший Модератор
31795
6196
01.02.2012, 14:35
общий
01.02.2012, 14:37
Можно, ничего не писать просто нажимайте ввод, в скобках стоит значение поумолчанию.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
01.02.2012, 14:39
общий
Само приложение MS-DOS он создал, когда его запускаю , то консоль появляется и тут же исчезает )
Прикрепленные файлы:
29c389d977a129d957c3ea50ef87b57b.JPG
давно
Старший Модератор
31795
6196
01.02.2012, 14:41
общий
Цитата: Зенченко Константин Николаевич
;тут нужно для ХР ставить XOR AX,AX и INT 16H
ret;может быть и такая строка int 20h

В ХР приложения закрываются автоматически, перед выходом нужно вставить команды см. выше.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
01.02.2012, 14:42
общий
или в командной строке набирите имя программы.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
01.02.2012, 14:49
общий
Цитата: Зенченко Константин Николаевич
сегодня, 12:44
Sidarok Anton:

Давайте оставайтесь он-лайн некоторое время и максимум через час Вы получите свой "хелло ворлд".


Получилось?
Время выходит.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
01.02.2012, 14:50
общий
все, спасибо большое за все, я разобрался:)
давно
Старший Модератор
31795
6196
01.02.2012, 14:57
общий
Цитата: 392134
все, спасибо большое за все, я разобрался:)

Добро пожаловать в МИР АССЕМБЛЕРА!


СОВЕТ: в 3-тем уроке, когда будете выводить "рожицу" нужно в начале программы поставить:
Код:
Begin:
mov ax,3
int 10h

Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
17042
808
01.02.2012, 15:46
общий
Адресаты:
Ответ-то оформите?
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
Неизвестный
01.02.2012, 15:52
общий
Здравствуйте, здравствуйте!
Здравствуйте, в мире низкоуровневого программирования!!!

Вы выбрали MASM и TASM потому что они самые раскрученные?
Я вам хочу предложить более молодой компилятор: FASM
Вам не предаётся пользоваться блокнотом так как в программа имеет своё окно, на подобии блокнота.
Компиляция происходит при нажатии кнопки [F9], а той же папке где расположен файл *.asm скомпилируется файл *.exe, и самостоятельно запустится, вы увидите свою программу в действии. Если нажать [ctrl]+[F9] программа не запускается, а только компилируется.
Пройдя по выше указанной ссылке вы также найдёте примеры рабочих программExamples, в том числе и "Hello word"

Успехов вам в изучении!
давно
Старший Модератор
31795
6196
01.02.2012, 17:28
общий
это ответ
Здравствуйте, Sidarok Anton!

С компилятором Masm работают в командной строке.
Создаете в любом текстовом редакторе (можно и блокнот) свою программу и сохраняете в папку \ MASM611 \ BIN и с разширением *.asm (к примеру prog01.asm).
Нажимаете кнопки "Windows" + "R", у Вас появится окно "Выполнить | Run".
В этом окне Вы набираете "COMMAND"(для W9x)" или CMD"(для XP), у Вас откроется окно "Сеанс MS-DOS | MS-DOS prompt" c текстом "имя ОСи и текущая папка(к примеру: C: \ Windows \ Destop >)".
Используя команды MS-DOS:
-CD имя папки - зайти в папку;
-CD . . - выйти из папки;
-D: - сменить дисковод;
Вы должны попасть в папку \ MASM611 \ BIN >.
Смотрите рисунок:

Для быстрого перехода в папку с компилятором я использую ВАТ-файл gotomasm(его содержимое см. на рисунке справа вверху).

Первая программа книги написана для модели TINY, поэтому в результате должен быть СОМ-файл.
Получить его можно несколькими способами:
- Явно прописать модель памяти в программе .MODEL TINY, тогда ключи указывать ненужно.
- Использовать ключ компилятора /AT - Enable tiny model (.COM file)

У Вас первым запустится транслятор MASM - он и должен создать obj-файл, при условии, что в исходном тексте программы не было ошибок, если они были - Вы должны их исправить с помощью редактора и начать все заново.
OBJ-файл это промежуточное звено между исходными и исполняемым кодами.
Вторым будет запущен линковщик LINK.exe . Он, используя ранее созданный obj-файл создаст исполняемый файл (ЕХЕ или СОМ), это и есть цель всего процесса написания программ(если есть ошибки их нужно исправить). Иногда задаются уточняющие вопросы - просто нажимайте ВВОД. При первом запуске компилятора, LINK.exe может находится в папке отличной от папки BIN, скопируйте его туда.

Остается только запустить полученую программу.

Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа