Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: nasm  (Прочитано 4046 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Yot

  • Автор темы
  • Новичок
  • *
  • Сообщений: 49
    • Просмотр профиля
nasm
« : 08 Октября 2013, 00:03:27 »
Не транслируется программа
%include "stud_io.inc"
global _start
section .text
_start: mov eax,0
again:PRINT "Hello"
PUTCHAR 10
inc eax
cmp eax,5
jl again
FINISH
Помогите разобраться кто программирует на NASM
hello5.asm:5: error: parser: instruction expected
hello5.asm:6: error: parser: instruction expected

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: nasm
« Ответ #1 : 08 Октября 2013, 12:44:25 »
А разве в NASMe есть инструкция
again:PRINT
Не надо ли там пробел поставить?
Делюсь знаниями, но их у меня мало!

Оффлайн user78

  • Участник
  • *
  • Сообщений: 199
    • Просмотр профиля
Re: nasm
« Ответ #2 : 08 Октября 2013, 19:48:44 »
"stud_io.inc" и исполняемый файл в одной папке лежат?
Запускаете пример из папки с исполняемым файлом (инструменты-->открыть текущую папку в терминале)?

Мне тоже книга Столярова нравится больше, чем у других авторов.
 
Lubuntu22.04 x64

Оффлайн Yot

  • Автор темы
  • Новичок
  • *
  • Сообщений: 49
    • Просмотр профиля
Re: nasm
« Ответ #3 : 09 Октября 2013, 18:22:19 »
Цитировать
"stud_io.inc" и исполняемый файл в одной папке лежат?
файл с макросами я поместил в каталог usr/bin а исполняемый файл в домашней папке.

Оффлайн user78

  • Участник
  • *
  • Сообщений: 199
    • Просмотр профиля
Re: nasm
« Ответ #4 : 09 Октября 2013, 18:46:09 »
Цитата с сайта Столярова:
Цитировать
Чтобы всё сработало, этот файл (с макросами) должен находиться в той же директории, что и ваш файл (исполняемый), который вы транслируете nasm'ом. Вообще-то это довольно очевидно, если внимательно прочитать в книге, как работает макродиректива %include.
Lubuntu22.04 x64

Оффлайн Yot

  • Автор темы
  • Новичок
  • *
  • Сообщений: 49
    • Просмотр профиля
Re: nasm
« Ответ #5 : 09 Октября 2013, 19:04:00 »
Сделал так как вы  посоветовали и всё равно две ошибки в 5 и 6 строчках.
Я думаю тут что-то с синтаксисом не в порядке,ведь с макросом FINISH не было проблем даже когда файл с макросами находился в папке usr/bin.

Оффлайн user78

  • Участник
  • *
  • Сообщений: 199
    • Просмотр профиля
Re: nasm
« Ответ #6 : 10 Октября 2013, 16:58:12 »
Что-то без понятия, я, ведь, тоже новичок. У меня такое подозрение, что прога не видит "stud_io.inc".
Просто напишу как я делал этот пример:
Создал папку для примеров. В ней написал этот пример. В эту же папку поместил файл"stud_io.inc". У меня файловый менеджер PCManFM. Зашёл в папку с примером, на верхней панели PCManFM нажимаю инструменты-->открыть текущую папку в терминале. Открывается терминал, и в нём компилирую и запускаю пример.
Lubuntu22.04 x64

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: nasm
« Ответ #7 : 10 Октября 2013, 17:32:19 »
В своё время тоже пришлось ковыряться — переписал на GAS (GNU Assembler), и всё заработало. =)

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: nasm
« Ответ #8 : 10 Октября 2013, 18:07:30 »
1. Это учли?
А разве в NASMe есть инструкция
again:PRINT
Не надо ли там пробел поставить?
то есть типа
again:
  PRINT


2. Могли бы и указать откуда у примера ноги растут... не сами же писали
http://stackoverflow.com/questions/14103624/how-to-compile-using-nasm-on-macosx
https://github.com/Totktonada/asm/blob/master/IO/stud_io.inc
...
Извините, я все еще учусь

Оффлайн Yot

  • Автор темы
  • Новичок
  • *
  • Сообщений: 49
    • Просмотр профиля
Re: nasm
« Ответ #9 : 10 Октября 2013, 19:36:02 »
Цитировать
1. Это учли?
Естественно учел,только безрезультатно.
Вобщем убираю макросы PRINT "Hello" и PUTCHAR 10 пишу что-нибудь вроде
mov eax,10
add eax,5
программа транслируется.Макрос FINISH остается с ним проблем нету.Даже самому интересно в чем дело,ну не в шляпе же. :)

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: nasm
« Ответ #10 : 10 Октября 2013, 21:49:15 »
ubuntu 12.04.3 32бит
NASM version 2.09.10 compiled on Oct 17 2011
a.asm
(Нажмите, чтобы показать/скрыть)
stud-io.inc
(Нажмите, чтобы показать/скрыть)

~/temp/asm/1$ nasm -f elf a.asm
~/temp/asm/1$ ld -s -o a a.o
~/temp/asm/1$ ./a
Hello
Hello
Hello
Hello
Hello
~/temp/asm/1$

Что я делаю не так?
Извините, я все еще учусь

Оффлайн Yot

  • Автор темы
  • Новичок
  • *
  • Сообщений: 49
    • Просмотр профиля
Re: nasm
« Ответ #11 : 11 Октября 2013, 09:55:27 »
С вашим файлом stud_io.inc  программа заработала,видимо я что-то пропустил в своем файле,хотя проверял его два раза.
Спасибо SergeyIT. :)

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: nasm
« Ответ #12 : 11 Октября 2013, 12:14:06 »
Yot,
Не за что. И это не мой файл - это "моя" первая программа на асме для РС ;)
Извините, я все еще учусь

 

Страница сгенерирована за 0.079 секунд. Запросов: 26.