Форум программистов, компьютерный форум, киберфорум
Assembler: Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
1
NASM

Запуск другой программы

06.08.2018, 18:44. Показов 5496. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
section .data
 
    file db "b.sh"
section .text
    global _start
_start:
         mov ecx, 5
         cmp ecx, 2
         jg  jamp
         int 0x80
jamp:
          mov eax, 11
          mov ebp, file
          int 0x80
 
        mov eax, 1
        int 0x80
не могу понять почему не запускается скрипт.
везде спрашивал-все молчат. одна надежда на Вас

Добавлено через 28 минут
если без условного перехода, то запуститься
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
section .data
 
    file db "b.sh"
section .text
    global _start
_start:
        
          mov eax, 11
          mov ebp, file
          int 0x80
 
        mov eax, 1
        int 0x80
Добавлено через 45 минут
я же не код банковской карты у Вас спрашиваю. так молчите, что похоже на это.


просто напишите , не поленитесь , где я ошибся
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2018, 18:44
Ответы с готовыми решениями:

Компиляция и запуск программы в GUI TASM
Здравствуйте. Скачал турбо ассемблер 64 вот с этой ссылки...

Запуск программы только из другой программы
Здравствуйте уважаемые программисты, сегодня столкнулся с проблемой, естественно первым делом...

Запуск внешней программы из другой программы
День добрый! Мне нужно запустить exeшник Hello world программы при компиляции другой программы....

[Emu8086] Запуск из программы другой программы
Доброе утро, форумчане! Задача следующая: Есть Emu8086. Нужно написать программу, которая...

30
Модератор
2121 / 991 / 169
Регистрация: 23.07.2018
Сообщений: 3,328
Записей в блоге: 3
07.08.2018, 14:12 21
Author24 — интернет-сервис помощи студентам
И результат копипасты всегда проверять!
И внимательно читать подсказки, которые нам дают используемые при разработке и тестировании инструменты.
Ассемблер же первый нашёл опечатки и показал, в каких именно они строчках.
1
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
07.08.2018, 18:14  [ТС] 22
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
А как вам удавалось в первом сообщении темы правильно объявить массив с названием имени запускаемого файла?
Линукс прощает многие ошибки)

Добавлено через 14 минут
Цитата Сообщение от politoto Посмотреть сообщение
1


je jamp
jmp tojamp
jamp:
* * * * *
* * * * * * int 0x80
как это сработает ребята?
допустим что cmp ebx, 100 , где значение в ebx будет равно ста и при вычитании будет ноль.
Assembler
1
je jamp   должен случиться условынй прожок на метку jamp  но ведь нет системного вызова int 0x80
как это тогда случиться?

Ассемблер разве не пойдет в таком случае ворочить код дальше? до момента безусловного прыжка?

это очень важно. поясните пожалуйста
0
Модератор
Эксперт по электронике
8476 / 4335 / 1642
Регистрация: 01.02.2015
Сообщений: 13,461
Записей в блоге: 8
07.08.2018, 18:52 23
pcmax, все ответы в учебнике по ассемблеру и отладчике.

Чего вы от форума хотите - объёмных цитат из заезженных учебников?

Желания отвечать вам меньше с каждым ответом по причине, что вы не понимаете предмета, и более того - действие по образцу для вас недостижимо.

Искренне предлагаю вам с сего момента завершить неискреннее обучение ассемблеру.
1
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
07.08.2018, 19:24  [ТС] 24
просто скажите, как Ассемблер будет обрабатывать код.
он совершает два прохода.
Assembler
1
2
3
4
5
6
7
je jamp .....
int 0x80
jmp tojamp
 
 
je jamp -без системного вызова. 
jmp to jamp
как увидет и поймет это Ассемблер?
вот что я прошу от форума. это в учебнике не опишут
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
08.08.2018, 04:51 25
Цитата Сообщение от pcmax Посмотреть сообщение
вот что я прошу от форума. это в учебнике не опишут
зато в любом учебнике написано, что в результате сравнения (команда CMP) если два сравниваемых оператора одинаковы, то в регистре флагов флажок ZF=1 если не равны, то ZF=0
по команде je jamp произойдет переход к метке jamp если ZF=1 иначе выполняется следующая команда
по команде jmp tojamp произойдет переход без всяких условий.
2
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
08.08.2018, 13:13  [ТС] 26
Цитата Сообщение от Mikl___ Посмотреть сообщение
ато в любом учебнике написано, что в результате сравнения (команда CMP) если два сравниваемых оператора одинаковы, то в регистре флагов флажок ZF=1 если не равны, то ZF=0
по команде je jamp произойдет переход к метке jamp если ZF=1 иначе выполняется следующая команда
по команде jmp tojamp произойдет переход без всяких условий.

ребята, речь то о другом.

просто скажите: для прыжков и прочих действий, которые прописаны в коде, если они не обращаются к ядру, то не нужны int 0x80?
0x80 нужет лишь для вызова sys_call и прочих действий, которые выполняет уже не сам Ассемблер, а ядро Линукс. это конечно же условное разделение.


вобщем для условных переходов не нужно прописывать int 0x80
для sys_call нужно пропысывать в коде 0x80
так?

а то я леплю его везде
0
Модератор
2121 / 991 / 169
Регистрация: 23.07.2018
Сообщений: 3,328
Записей в блоге: 3
08.08.2018, 14:09 27
int xxx, sysenter, syscall, RST, SVC и подобные инструкции нужны прикладной программе, чтобы сообщить ОС, что программе от ОС что-то нужно.
Как именно сообщать, написано в документации для прикладных программистов конкретной операционной системы.

Лепить в программу команды, которые неизвестно что делают, нежелательно.

Добавлено через 44 минуты
Цитата Сообщение от pcmax Посмотреть сообщение
просто скажите,

как увидет и поймет это Ассемблер?
вот что я прошу от форума. это в учебнике не опишут
Инженеры Intel скрывают не всю информацию об инструкциях процессора от программистов.
В томах
2
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
08.08.2018, 14:26 28
pcmax,
int 0x80 понадобятся:
  1. при работе с файлами (открытие, закрытие, чтение, запись, перемещение по файлу, удаление, переименование, создание)
  2. при работе с памятью (выделение, закрытие и т.д.)
  3. завершение программы
  4. вывод на печать или экран
для всего остального (сложение, вычитание, умножение, деление, тригонометрические, взятие корня, переходы условные и безусловные, вызовы подпрограмм написанных пользователем и т.д.) int 0x80 не нужно
3
Модератор
2121 / 991 / 169
Регистрация: 23.07.2018
Сообщений: 3,328
Записей в блоге: 3
08.08.2018, 16:02 29
pcmax, Вы можете найти полезную информацию с помощью Форума самостоятельно.
В полезной теме Раздела ✅ Полезные ссылки, книги, инструменты есть ссылка на старенький, но очень удобный справочник по 32-разрядным Linux Syscall . В табличке видно, что нужно положить в какой регистр для каждого системного вызова. Слева ссылка на подробную документацию с примерами использования syscall. А справа - ссылка на код в одной из версий ядра Linux, обрабатывающий запрос прикладной программы.
Рядом - ссылка на справочник по 64-разрядному linux, и русскоязычную документацию.

Выше - ссылка на тома официальной документации по инструкциям процессора, который Вы программируете, Intel Architectures Software Developer's Manual ( SDM )
Вам пока более, чем достаточно первых двух томов.
Миниатюры
Запуск другой программы  
2
299 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,265
08.08.2018, 22:54  [ТС] 30
ну оставим веб программирование для веб программистов. кто хотел денег, тот туда и пошел.

это Ваш выбор. поэтому поводу я рассуждать не могу.
а вот по поводу регистров, Вы кстати. уж уважте, объясните суть. Вы как-никак три года потратили на это. пусть не пропадут даром.


Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
section .data
      file db "hi forum", 0
 
section .text
      global _start
_start:
 
 
      mov eax, 4
      mov ebx, 1
 
      mov ecx, 
 
      mov edx,
      int 0x80
 
      mov eax, 1
      int 0x80
хочу на экран вывести адрес ячейки в которой храниться hi forum

подскажите пожалуйста
0
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
10.08.2018, 17:59 31
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

Цитата Сообщение от politoto Посмотреть сообщение
Да не такие уж и тупые последние вопросы.
Ага, вернемся в топик:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
section .data
 
    file db "b.sh"
section .text
    global _start
_start:
         mov ecx, 5
         cmp ecx, 2
         jg  jamp
         int 0x80
jamp:
          mov eax, 11
          mov ebp, file
          int 0x80
 
        mov eax, 1
        int 0x80
И вопрос
не могу понять почему не запускается скрипт. везде спрашивал-все молчат. одна надежда на Вас
Хорошо там 17-ть строчек, можно в уме все просчитать, а если строчек будет сотня-две-три.
Ни комментов, ни своих мыслей в коментах- вот Вам код, не работает, гребитесь как хотите, я не понимаю, и книжек читать не буду.
Я раньше плохо смотрел на студентов, у которых "привет вася", был длиною в 50-т строк с комментариями: Теперь понимаю- преподы их заставляли , хоть мельком, но все таки перечитывать собственноручно скопи-пастеные комменты, т.е. информацию из учебника.

Об отладчике - это год, хотя, при желании - это сутки(основные команды:загрузить, запустить, выполнить щаг, выйти), 17-ть строчек в пошаговом режиме, с карандашом в руке, и пониманием того, что было написано самим кодером, и того, что с кодом происходит.
1
10.08.2018, 17:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.08.2018, 17:59
Помогаю со студенческими работами здесь

Запуск из программы другой программы с параметрами
Исходные данные: 1)ОС Linux ubuntu, xubuntu; 2)Есть некоторая простенькая написанная программка;...

Запуск программ из другой программы?
Можно ли как-то написать программу, которая запускает другие программы? К примеру, у меня написан...

Запуск функции другой программы
Как как программа может запустить функцию другой программы? Пояснение: //Программа функцию...

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


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

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