Сейчас на форуме: jinoweb (+5 невидимых)

 eXeL@B —› Программирование —› Программа висит в процессах, но не запускается
Посл.ответ Сообщение

Ранг: 3.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 ноября 2015 06:19
· Личное сообщение · #1

Code:
  1. TITLE Add and Subtract              (AddSub.asm)
  2.  
  3. ; This program adds and subtracts 32-bit integers.
  4. ; Last update: 06/01/2006
  5.  
  6. INCLUDE C:/masm32/include/Irvine32.inc
  7. includelib C:/masm32/lib/Irvine32.lib
  8.  
  9.  
  10. includelib C:/masm32/lib/kernel32.lib
  11. includelib C:/masm32/lib/user32.lib
  12.  
  13. .code
  14. main PROC
  15.  
  16.     mov eax,10000h      ; EAX = 10000h
  17.     add eax,40000h      ; EAX = 50000h
  18.     sub eax,20000h      ; EAX = 30000h
  19.     call    DumpRegs
  20.       call  WaitMsg
  21.  
  22.     exit
  23. main ENDP
  24. END main


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




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 15 ноября 2015 07:02 · Поправил: plutos
· Личное сообщение · #2

HAIRY пишет:
запускаю ничего не происходит


А что по вашему должно происходить? ожидаете увидеть user interface?

Не знаю, что именно происходит в процедуре DumpRegs. но, судя по всему, программа нормально запускается, но поскольку никаких окон не создает, ее не "видно" на экране монитора.
Запусти под debugger'ом (OllyDbg).

-----
Give me a HANDLE and I will move the Earth.




Ранг: 19.4 (новичок), 11thx
Активность: 0.020
Статус: Участник

Создано: 15 ноября 2015 09:13
· Личное сообщение · #3

plutos пишет:
но поскольку никаких окон не создает, ее не "видно" на экране монитора.

Она вроде как консольная. Попробовал собрать - работает: --> Link <--

HAIRY, может Irvine32.inc/Irvine32.lib старые, хз. Я собирал с этими: --> Link <-- - на Win 8.1 Pro x64 без проблем запустилось.

Добавлено спустя 1 минуту
Или собираете не как консольную?

| Сообщение посчитали полезным: HAIRY

Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 15 ноября 2015 10:47 · Поправил: dosprog
· Личное сообщение · #4

dir:
Code:
  1. 15.11.2015  09:33     576 dumpregs.asm
  2. 15.11.2015  09:35   9 216 dumpregs.exe
  3. 29.07.2005  11:07   5 162 Irvine32.inc
  4. 13.06.2006  12:08  65 976 Irvine32.lib
  5. 15.11.2015  09:35   2 942 MAKE.BAT
  6. 19.07.2005  12:11  16 039 SmallWin.inc
  7. 15.04.2003  10:38   2 040 VirtualKeys.inc

dumpregs.asm:
Code:
  1. ..........
  2.   IF 0
  3. INCLUDE    C:/masm32/include/Irvine32.inc
  4. includelib C:/masm32/lib/Irvine32.lib
  5.   ELSE
  6. INCLUDE    Irvine32.inc
  7. includelib Irvine32.lib
  8.   ENDIF
  9. ..........

make.bat:
Code:
  1. set NAME=dumpregs
  2. \masm32\bin\ml //coff   %NAME%.asm
  3. \masm32\bin\Link /SUBSYSTEM:CONSOLE    %NAME%.obj


И всё работает.



| Сообщение посчитали полезным: HAIRY

Ранг: 3.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 ноября 2015 14:14
· Личное сообщение · #5

elch, можете рассказать как собирать консольную программу? Я делаю так захожу в редактор MASM32 Editor вставляю код, сохраняю, потом Project - Build All, потом Project - Run.



Ранг: 19.4 (новичок), 11thx
Активность: 0.020
Статус: Участник

Создано: 15 ноября 2015 18:17
· Личное сообщение · #6

HAIRY пишет:
Я делаю так захожу в редактор MASM32 Editor вставляю код, сохраняю, потом Project - Build All, потом Project - Run.

Не знаю, не пользуюсь им, наверно где-то в свойствах проекта надо указать, что /SUBSYSTEM:CONSOLE. Я собирал с WinAsm (попался готовый проект на ту же тему, только с чуть другим примером), потом переделал по своему, для сборки батником - так тоже всё ОК. Вот эти два варианта + выше в посте dosprog та же подсказка.


6b75_15.11.2015_EXELAB.rU.tgz - ch03.2.rar




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 15 ноября 2015 18:19 · Поправил: plutos
· Личное сообщение · #7

HAIRY пишет:
можете рассказать как собирать консольную программу?


\masm32\bin\Link /SUBSYSTEM:CONSOLE %NAME%.obj

в масм32 editor создать новый консольный проэкт, вставить туда свой код.
Тогда масм32 использует при сборке все нужные и правильные опции.

А еще проще не заморачиваться с масм32 пока что, а использовать указаный dosprog bat file.

-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: HAIRY

Ранг: 3.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 ноября 2015 20:06
· Личное сообщение · #8

спасибо всем за помощь, все получилось!




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 15 ноября 2015 21:34
· Личное сообщение · #9

Видимо, на этом можно закрыть тогда.


 eXeL@B —› Программирование —› Программа висит в процессах, но не запускается
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати