Консультация № 189761
11.09.2016, 00:17
0.00 руб.
0 46 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Купил книгу Олега Калашникова Ассемблер это просто. Дисковода у меня нет..поэтому решил скачать файлы по книге с сайте:http://kalashnikoff.ru. Сайт оказался не рабочим..вернее там другая инфа по недвижимости. Где мне взять нужные файлы по книге?

Обсуждение

давно
Старший Модератор
31795
6196
20.09.2016, 19:27
общий
это ответ
Здравствуйте, Strannik!

У меня тоже 32-х битная семерка и все работает. Пиратка или нет, тут роли не играет. Скорее всего, Вы что-то не так делаете.

Внимательно прочитайте Установка и настройка Microsoft MASM 6.11.

У меня стоит много компиляторов(см. рисунок) и одна папка для рабочих программ (_my)


С MASM как и с TASM работают в командной строке, чтобы запустить её Вам нужно:

WIN + R появится окно Run, нужно набрать CMD и нажать ОК
или
Start -> All program -> Accessories -> Command Prompt(я отправил ярлык на рабочий стол и изменил его параметры, поэтому мне не нужно переходить в рабочую папку, она открывается сразу(см. рисунок))

В результате откроется окно команндной строки

Левое верхнее окно стандартный запуск, нижнее - с измененными настройками и я пропускаю переход в рабочую папку с помощью команд: D: -> CD Cat\_my.

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

MASM:
D:\CAT\_Lang\Masm\Masm.613\BIN\ml 160601b.asm /c
D:\CAT\_Lang\Tasm\tasm.2\tlink 160601b.obj /t

TASM:
D:\CAT\_Lang\Tasm\tasm.4\BIN\tasm 160601b
D:\CAT\_Lang\Tasm\tasm.4\BIN\tlink 160601b /t


После компиляции? в этой же командной строке набираю имя 160601b и программа запускается. Если есть ошибки компиляции или в коде, иправляю их и все повторяется с момента компиляции.

Для графики использую DOSBox. Отладчик AFDpro или Debug.

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

давно
Старший Модератор
31795
6196
20.09.2016, 19:32
общий
Адресаты:
Что-то тут не так.
Прикрепленные файлы:
97cb7e1daaf10d4b5d545ec5f0d93c1d.jpg
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
400534
33
20.09.2016, 19:39
общий
Адресаты:
у меня так
Прикрепленные файлы:
9632cfdcc9645e610adf308282ef1d99.jpg
давно
Посетитель
400534
33
20.09.2016, 19:43
общий
20.09.2016, 19:44
попробуйте продублировать до мелочей установку..я разархивирую папку masm613.zip захожу в папку диск 1 и запускаю сетап..далее появляется меню на синем экране..первая строке..ентер..далее подтверждаю yes..на диск с установилось папка MASM611 захожу в папку BIN и пытаюсь запустить файл MASM.EXE
давно
Старший Модератор
31795
6196
21.09.2016, 11:59
общий
Цитата: Strannik
на диск с установилось папка MASM611 захожу в папку BIN и пытаюсь запустить файл MASM.EXE

Цитата: Зенченко Константин Николаевич
Скорее всего, Вы что-то не так делаете.

Вы читали, мой ответ?
Цитата: Зенченко Константин Николаевич
С MASM как и с TASM работают в командной строке, чтобы запустить её Вам нужно:

Не с проводника запускать, а с КОМАНДНОЙ СТРОКИ.
В прикрепленном файле работа с Tasm, для MASM аналогично, только команда:ML name.asm
Прикрепленные файлы:
a8a1de55508e5ebe5e4af3c181eea2a0.jpg
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
400534
33
21.09.2016, 19:06
общий
Настройка. Если установка пакета MASM 6.11 производилась с параметрами по-умолчанию, то в результате диск C:\ будет содержать ноый каталог, а именно: C:\MASM611\. (Если пакет MASM 6.11 был установлен на диске отличном от диска C:\, то при настройках путей к файлам MASMа следует указывать именно этот диск!. Например, D:\MASM611 и т.п.).

Теперь остались сущие пустяки: нужно указать Windows где ей следует искать файлы и программы установленного пакета.

После установки каталог \MASM611\ содержит в себе несколько папок, или подкаталогов: \BIN\, \BINR\, \LIB\, \INCLUDE\, \HELP\, \INIT\, \SAMPLES\.

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

Итак, проделываем в Windows следующий путь: «Пуск», «Мой компьютер». В открывшемся окне, вверху-слева, находим и жмем на графу «Просмотр сведений о системе». Открываем пункт «Дополнительно». В нижней части открывшегося окна нажимаем на пункт «Переменные среды».

Вновь открывшееся окно будет разделено на две половины: верхнюю и нижнюю. Нас интересует нижняя половина, в которой нужно найти строчку, начинающуюся со слова path.

Предупреждение! Будте внимательны при редактировании переменной среды path: добавляйте новые значения только в конец строки! Изменение предустановленных параметров может привести к неработоспособности некоторых установленных программ или системы в целом!

Кликаем по этой строчке двойным щелчком мыши. Откроется небольшое окошко «Изменение системной переменной», в котором будет выделена синим цветом указанная строка.


Кликаем мышкой в конец выделенной строки, переводим раскладку клавиатуры в латинскую и ставим сразу же за последним символом, символ точки с запятой «;».

Теперь нужно (без пробелов!) дописать в этой строке полные пути к нашим подкаталогам, разделяя каждый из них сиволом точки с запятой. Пишем, начиная с подкаталога BIN: C:\MASM611\BIN;C:\MASM611\BINR;C:\MASM611\LIB;C:\MASM611\INCLUDE;C:\MASM611\HELP;C:\MASM611\INIT;C:\MASM611\SAMPLES

Обратите внимание: после последнего указанного подкаталога символ точки с запятой или любой другой символ ставить не нужно!

Теперь остается только закрыть каждое открытое окно нажатием соответствующей кнопки «OK». После перезагрузки компьютера пакет Microsoft MASM 6.11 будет готов к работе.

Создание командных файлов. Пришло время проверить макроассемблер на работоспособность. Как ни странно, но использовать вышеуказанные подкаталоги напрямую, мы не будем. Хотя во многих учебниках по ассемблеру можно заметить противоположное: для создания файлов используется либо подкаталог BIN, либо создается специальный подкаталог в каталоге MASM611. Возникает один законный вопрос: для чего мы указывали пути к нашим подкаталогам в переменной среды path?.. Ответ на него такой: для того, чтобы можно было обращаться к файлам, находящимся в данных подкаталогах, из любого места операционной системы. Это значит, что мы можем создать пустую папку на Рабочем столе и вызывать из нее нужные нам программы из пакета MASM 6.11. Для этих целей используют командные файлы.

Создадим пустой каталог на Рабочем столе, и дадим ему имя source.

Запустите программу Блокнот (Пуск — Все программы — Стандартные — Блокнот), и напишите в открывшемся редакторе всего одну строчку следующего содержания:
edit.com


Теперь нужно сохранить этот файл в нашем каталоге source под любым именем,но обязательно с расширением .bat, например — edit.bat.Для этого переходим в Блокноте: Файл — Сохранить как. Теперь следует выбрать в качестве каталога для сохранения файла, наш каталог source.В поле Имя файла: нужно ввести edit.bat, а в поле Тип файла: выбрать из списка Все файлы. В последнем поле — Кодировка — должно стоять ANSI.

Сохраняем наш файл.

Точно таким же образом создается второй файл, имя которого будет cmd.bat, а содержимым — строка cmd.exe. Сохраняется этот файл точно так же в наш каталог source.

Теперь у нас в распоряжении есть две программы, входящие в состав Windows: edit.com (простой текстовый редактор — наследие Windows, перешедшее из DOS) и cmd.exe (Командная строка Windows), запускаемые созданными нами файлами — edit.bat и cmd.bat соответственно.

Запускать эти файлы следует двойным кликом мыши по соответствующему файлу.

Тестирование. Запускаем файл cmd.bat, и переводим клавиатуру в латинскую раскладку. Набираем в открывшемся окне команду qh. Если появляется окно со строкой «QuickHelp cannot open c.hlp» — не обращаем на это внимания и просто жмем клавишу Enter. (Появление этого окна объясняется тем, что программа быстрой помощи пакета MASM 6.11 не может найти и открыть файл c.hlp. Где находится данный файл — не грех поинтересоваться у Билла Гейтса. Можно лишь догадываться, что это файл помощи по языку Си ?..).

Поскольку окно с сообщением об ошибке — появилось, значит установленный нами пакет работает. После нажатия клавиши Enter, появляется окно программы QuickHelp. Переходы по меню осуществляются либо при помощи мыши, либо клавишей Tab. Выход из программы осуществляется по нажатию клавиши X.


Файл edit.bat запускает текстовый редактор. Принцип создания и сохранения файлов в нем точно такой же, как и в обычном Блокноте. Но для наших целей он гараздо удобней последнего: вместо выбора типа файла, мы просто пишем нужные нам имя и расширение и сохраняем файл. Cписок поддерживаемых команд редактора можно просмотреть клавишей F1. Выход из редактора осуществляется через меню Файл.

давно
Старший Модератор
31795
6196
22.09.2016, 12:33
общий
22.09.2016, 12:37
Адресаты:
Цитата: Strannik
Настройка. Если установка пакета MASM 6.11 производилась с параметрами по-умолчанию . . . . . . Выход из редактора осуществляется через меню Файл.


Мда, всё нет.

Специально установил MASM, по умолчанию на диск С, везде нажимал ENTER


Скопировал LINK.EXE с папки BINR в папку BIN.

Нажал кнопку WIN одновременно с кнопкой R
Появилось окно RUN дальше смотрите каркинку и по стрелкам


Набросал код в блокноте и записал в папку BIN. :
[code lang=asm h=200].MODEL tiny
.code
.186
org 100h
start:
mov ax,3
int 10h
mov ax,0b800h
mov es,ax
xor dx,dx
xor di,di
mov cx,256
cld
@@01: call @@02
mov al,'-'
stosw
mov al,dl
stosw
mov al,' '
stosw
inc dx
loop @@01
xor ax,ax
int 16h
ret
@@02: mov al,dl
shr al,4
call @@03
mov al,dl
@@03: and al,0fh
add al,'0'
cmp al,'9'
jbe @@04
add al,7
@@04: mov ah,7h
stosw
ret
end start[/code]

В томже окне набираю имя файла(видно на картинке) и получил результат

Жму любую кнопку завершаю программу.
Всё. Зачем так пудрить себе мозги.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
400534
33
22.09.2016, 19:14
общий
Цитата: Зенченко Константин Николаевич

Специально установил MASM, по умолчанию на диск С, везде нажимал ENTER

ну вот..уже кое что есть..вот сделал по вашим шагам и вот что получилось..мои ошибки ? так же набрал в текстовом редакторе код программы, а сохранять его как надо..под расширением .asm? или в текстовом? Поймите..я работал только с высокоуровневым программированием..там все намного проще..с DOS Программаторами я туп..только из за этого у меня пропадал интерес к ассемблеру..но спустя времени опять пытался.. так что потерпите еще немного посмотрите на скрин..меня смущает слово фатал эррор..
Прикрепленные файлы:
fd6ba4c4799d201101c7285e2d902472.jpg
давно
Старший Модератор
31795
6196
23.09.2016, 10:07
общий
23.09.2016, 10:01
Адресаты:
Цитата: Зенченко Константин Николаевич
Набросал код в блокноте и записал в папку BIN.

Ошибка - компилятор не может открыть файл.
Причина, скорее всего в следующем:
1)У Вас стоит опция скрывать известные типы файлов(отмечено зеленым) в свойствах папки;
2)Когда сохраняли файл, сохранили его как 160601b.asm.txt из-за значения указаного в поле "Записать как"(красным), а нужно 160601b.asm
Прикрепленные файлы:
81382f634ff16a95f21c68f6b088e841.jpg
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
400534
33
23.09.2016, 19:58
общий
Цитата: Зенченко Константин Николаевич
)У Вас стоит опция скрывать известные типы файлов(отмечено зеленым) в свойствах папки;

вы имели ввиду скрывать защищенные системные файлы..стоит у меня галочка?
давно
Посетитель
400534
33
23.09.2016, 20:08
общий
не может найти программу чем открыть файл .asm
Прикрепленные файлы:
d651750e4619b0ebb40614d9b04359ea.jpg
давно
Посетитель
400486
11
24.09.2016, 23:07
общий
24.09.2016, 23:10
Адресаты:
[q=400534][/q]

Если верить переводу с англ, то он имел ввиду снять галочку напротив "скрывать расширения для зарегистрированных типов файлов"... Разве нет?

P.S. Я тоже слежу за вашим топиком, потому что у нас с вами похожая проблема. Вот мой вопрос: https://rfpro.ru/question/189804#290794
давно
Посетитель
400534
33
25.09.2016, 11:11
общий
25.09.2016, 11:13
Цитата: darka777
снять галочку напротив "скрывать расширения для зарегистрированных типов файлов"

на скрине видно, да и по умолчанию оно и так снята.. Я считаю, в книге Калашникова надо уделять особое внимание установки компилятора под DOS это не 32 разрядная программа и требует особого скрупулезного внимание к установке и наладке на рабочий режим.
давно
Посетитель
400534
33
25.09.2016, 13:17
общий
ну вот, поставил виртуальную ОС Win XP проделал те же манипуляции...создал файл 160601b.asm в нем ассемблерный код программы. Запустил этот файл и выдало вот что:
Я так понял. ошибка в синтаксисе программы?
Прикрепленные файлы:
364ce24ea88096a80e318cea0aff627e.jpg
давно
Посетитель
400534
33
25.09.2016, 13:26
общий
25.09.2016, 13:27
а по книге запустил учебный файл у меня создался файл с расширением.obj и .exe
Прикрепленные файлы:
bfb995da79513c5f4d3b950d10d39e48.jpg
давно
Посетитель
400486
11
25.09.2016, 14:30
общий
25.09.2016, 14:31
Адресаты:
Ну у меня например по умолчанию везде галочки были поставлены... Хотя что толку, я сняла ее, у меня все равно все то же!( Я даже поочередно со всех галочки начала снимать, ничего не меняется)
Да, мне тоже кажется это упущение, что на этом не заострялось внимание. Однако Калашников написал и без этого годную книгу. Мб на том сайте кроме установочных файлов были еще и ЦУ по установке? Но он же не знал, что домен вот так вот будет продаваться... Жалко, что даже зеркала никакого не сделали( Потому что даже сама установка, для человека, который только приобщается к низкоуровневому миру, это проблематично. Я все точно делала отсюда, откуда и советовали Установка и настройка MASM 6.11 . Однако тех файлов он не находит!

Цитата: Strannik
ну вот, поставил виртуальную ОС Win XP проделал те же манипуляции...
а для чего вам XP? Вы хотите сказать это все только под нее?
На 7-ке х32 же тоже работают!
давно
Посетитель
400534
33
25.09.2016, 15:12
общий
Цитата: darka777
а для чего вам XP?

потому что под XP? 98 и ниже семейство DOS работает лучше и комфортней чем под семерку и выше..вот например Скачать CodeView отладчик под семерку не пашет а в xp проблем нет..
давно
Посетитель
400534
33
26.09.2016, 18:43
общий
Я ВОТ ЗАПУСКАЮ mi 160601b.asm/AT но выводит фотал эррор..это ошибка в программе? если компилятор не пропускает..
давно
Старший Модератор
31795
6196
27.09.2016, 11:47
общий
Адресаты:
Цитата: Strannik
Я ВОТ ЗАПУСКАЮ mi 160601b.asm/AT но выводит фотал эррор..это ошибка в программе? если компилятор не пропускает..

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

давно
Посетитель
400534
33
27.09.2016, 18:40
общий
27.09.2016, 18:43
Цитата: Зенченко Константин Николаевич
ML не Mi

Сори Константин Николаевич..конечно ML, опечатка вышла..это я и имел ввиду.. ошибка все равно..вот..посмотрите скрин
запустил два разных файла..
давно
Посетитель
400534
33
27.09.2016, 18:41
общий
Цитата: Зенченко Константин Николаевич
ML не Mi

Прикрепленные файлы:
dc8ded4f4b55f353b21b09b2cb8e9f9f.jpg
давно
Старший Модератор
31795
6196
28.09.2016, 09:26
общий
Адресаты:
На вход подается ASM-файл. Ключи-опции отделяются пробелом.
Скачайте Tasm(ссылка на загрузку в статье). В отличии от MASM'а командная строка не сильно замороченная. Достаточно набрать :
tasm name,,,
tlink name,,,
запятые после имени позволяют генерировать различные вспомогательные файлы: листинги, перекресные ссылки, карты и т.д., ну еще макросы более продвинутые были во времена ДОСа. К примеру CALL name,val1,val2 автоматически создает передачу параметров через стек.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
400534
33
28.09.2016, 18:43
общий
спасибо., начну прорабатывать этот вариант
давно
Посетитель
400534
33
28.09.2016, 19:47
общий
Цитата: Зенченко Константин Николаевич
Ключи-опции отделяются пробелом.

Решил еще на последок за морочится с MASM' и вставить пробелы в команды..как в скрине..да..ошибки теперь нет..но вышло..вот такие сообщения..что сие значит?
Прикрепленные файлы:
3ce67f4e299a14d6b1daa3e29bd63bc6.jpg
давно
Посетитель
400534
33
28.09.2016, 19:52
общий
29.09.2016, 10:52
[q=400534][/q]
ну а на файл ..ошибки в самом коде..компилятор об этом сообщает

[code lang=asm].MODEL tiny
.code
.186
org 100h
start:
mov ax,3
int 10h
mov ax,0b800h
mov es,ax
xor dx,dx
xor di,di
mov cx,256
cld
@@01: call @@02
mov al,'-'
stosw
mov al,dl
stosw
mov al,' '
stosw
inc dx
loop @@01
xor ax,ax
int 16h
ret
@@02: mov al,dl
shr al,4
call @@03
mov al,dl
@@03: and al,0fh
add al,'0'
cmp al,'9'
jbe @@04
add al,7
@@04: mov ah,7h
stosw
ret
end start
[/code]

Прикрепленные файлы:
f26b117a72640ba81a2a0ed0e6bf066f.jpg
давно
Посетитель
7438
7205
29.09.2016, 11:15
общий
Адресаты:
По предыдущему сообщению:
Цитата: Strannik
что сие значит?
Во-первых, параметр /AT надо писать слитно. Об этом говорит сообщение Invalid command-line option : /
Что означает: некорректная опция командной строки: /. Не знает компилятор, что такое /. Надо писать /AT
Во-вторых, из файла ASM формируется объектный файл OBJ. Это еще не программа, а заготовка.
Чтобы объектные файлы стали программой, их надо "слинкировать". ML умеет и компилировать, и линкировать (точнее, вызывает для этих целей соответствующие программы masm и link).
Программой может стать и один OBJ-файл, и объединение нескольких, а также модулей из библиотек... В нашем случае имеем один OBJ-модуль.
В-третьих, т.к. опция для создания COM-файла задана некорректна, создается по-умолчанию EXE-файл.
Что и пишется далее.
В последующих строках указывается, что файлы MAP (отчет о линкировании), LIB (библиотеки) и def (некоторые предустановки) не заданы. Нам они не нужны.
И наконец, no steck segment говорит о том, что в программе отсутствует сегмент стека. Для COM-программы
задание стека даже противопоказано. С ним можно построить только EXE-программу.
Так что, это даже нужное предупреждение
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
29.09.2016, 11:18
общий
Адресаты:
По последнему коду не вижу ошибок. Все корректно...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
400534
33
29.09.2016, 17:29
общий
Цитата: Лысков Игорь Витальевич
По последнему коду не вижу ошибок. Все корректно...

а раз корректно, почему не компилируется и не линкуется?
Цитата: Лысков Игорь Витальевич
Во-первых, параметр /AT надо писать слитно

вы правы..нужно между .asm сделать пробел, далее слитно и все получилось..вот скрин
но второй файл так же не компилируется..хотя код корректный..
Прикрепленные файлы:
6995ec31dbed77f87d8c15e898a79288.jpg
давно
Посетитель
400534
33
29.09.2016, 17:30
общий
вот и com файл появился
Прикрепленные файлы:
3d82fc6e810b85086c08d163b524ecab.jpg
давно
Посетитель
400534
33
29.09.2016, 17:32
общий
29.09.2016, 17:32
А всем, кто наблюдает за этой темой..я все таки работаю в виртуалке программы VMware Workstation и стоит ОС ХР
Прикрепленные файлы:
514e8727c86222a5dfa255e2fdbd9cb2.jpg
Форма ответа