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

 eXeL@B —› Вопросы новичков —› вопрос по RadAsm
Посл.ответ Сообщение

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

Создано: 25 апреля 2011 15:45
· Личное сообщение · #1

Подскажите как вывести в радасме консоль, например чтобы там было написано привет мир...




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 25 апреля 2011 17:46
· Личное сообщение · #2

Ты хочешь создать консольное приложение в RadASM, которое бы выводила в консоль сообщение "Привет мир", так?

Ставишь пакет MASM32 и идёшь в примеры по адресу \masm32\examples\advanced\

-----
EnJoy!




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

Создано: 25 апреля 2011 18:44 · Поправил: magistr011
· Личное сообщение · #3

.386
.model small
.stack 256h
.data
szHello db 'Hello world','$'
.code
start:
mov ax,@data
mov ds,ax
mov es,ax
mov ah,9
lea dx,szHello
int 21
mov ah,1
int 21h
mov ax, 4C00h
int 21h
end Start


вот код, ассемблируется нормально:
C:\masm32\bin\ML.EXE /DMASM /DDOS /Zm /c /nologo /I"C:\masm32\include" "04.asm"
Assembling: 04.asm

Make finished.
Total compile time 157 ms

Авот когда начинаю линковать, появляется ошибка и висит вечно пока Alt-F4 не воткнёшь (((





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 25 апреля 2011 19:14
· Личное сообщение · #4

Консольное приложение под винду и программа под DOS - это разные вещи.
Ты создаёшь 16-битное приложение для DOS, но при этом запускаешь его в Windows XP.

Варианты решения:

1. Писать 32-битные приложение под Windows, запускать без проблем в Windows XP.
2. Писать, как ты сейчас пишешь, но использовать DOSBox для запуска собранных программ.
3. Использовать Windows 98 для написания и отладки 16-битных приложений.

-----
EnJoy!


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

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

Создано: 25 апреля 2011 19:29 · Поправил: magistr011
· Личное сообщение · #5

Спасибо, а можно спросить, как исправить код чтобы получилось 32-битное приложение??
Просто мне асм нравится изучать, но скоро сессия и надо написать программы на асме,
которые считали бы примеры: такого типа примерно (R * H + B) div (L * G^2)....
Прога должна быть написана на асме как вставка в язык высокого уровня,
но я больше никакого языка не знаю, вот и хочу написать это на асме как могу,
хоть в консоли((( А тут такое... В hiew32 я просто умру писать такое,
а в радасме консольное приложение мне показалось легче написать... можете мне помочь???
Заранее благодарю...



Ранг: 73.7 (постоянный), 22thx
Активность: 0.040
Статус: Участник

Создано: 25 апреля 2011 19:43 · Поправил: XQuader
· Личное сообщение · #6

Jupiter пишет:
Варианты решения:

1. Писать 32-битные приложение под Windows, запускать без проблем в Windows XP.
2. Писать, как ты сейчас пишешь, но использовать DOSBox для запуска собранных программ.
3. Использовать Windows 98 для написания и отладки 16-битных приложений.

4. как вариант юзать emu8086




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 25 апреля 2011 19:58
· Личное сообщение · #7

Почитать уроки Iczelion'а, через час уже оконные приложения будишь на асме кодить.

-----
Yann Tiersen best and do not fuck





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 25 апреля 2011 20:05
· Личное сообщение · #8

magistr011 пишет:
Спасибо, а можно спросить, как исправить код чтобы получилось 32-битное приложение??

Смотри мой первый ответ:

Jupiter пишет:
Ставишь пакет MASM32 и идёшь в примеры по адресу \masm32\examples\advanced\


-----
EnJoy!




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

Создано: 25 апреля 2011 20:48
· Личное сообщение · #9

примеры по адресу \masm32\examples\advanced\ не работают, хотя скомпилировались и EXEшники вообще никак не риагируют (((((




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 25 апреля 2011 21:00
· Личное сообщение · #10

magistr011
Far в помощь

farmanager.com

можешь создать командный файл "test.cmd" со следующим содержимым:

Code:
  1. @echo off
  2. имя_файла параметры
  3. @pause


пример:

Code:
  1. @echo off
  2. msort FileName
  3. @pause


-----
EnJoy!




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

Создано: 25 апреля 2011 21:39 · Поправил: magistr011
· Личное сообщение · #11

лан спс всем за советы, буду дальше пробовать, ничего не получилось,
пишет что EXEшник не является приложением ((( а мои консольные приложения в радасме
так и не работают ((( очень жаль, просто я уже месяц сижу и с места не сдвинулся...
Решил на старый добрый форум обратиться., где мне в прошлый раз помогли...
В этот раз я потерпел неудачу ((( А надо-то в радасме написать код чтобы в консольке
вывелось слово привет... Пишу и вот тебе на... Ошибка((( Кстати в emu8086 этот код
запросто работает и выдаёт именно то что я написал )) А так хочется в радасме...



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 25 апреля 2011 21:42
· Личное сообщение · #12

magistr011
не используй сборку и всё ок будет!




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

Создано: 25 апреля 2011 21:52
· Личное сообщение · #13

magistr011 пишет:
но скоро сессия и надо написать программы на асме


magistr011 пишет:
А так хочется в радасме...


Так на чём сессию сдаёте? И под какую платформу, 16 или 32? Если это не принципиально, то и правда MASM32 подойдёт

-----
IZ.RU




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

Создано: 25 апреля 2011 22:14 · Поправил: magistr011
· Личное сообщение · #14

Вот мои задания, если кому интересно... Они выделены жёлтым, единственное что мне хочется это посмотреть код хотябы одного задания и посидеть поразбираться и т.д. Но
у меня пока знаний маловато (((
Если кто может помогите, буду признателен.



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

Создано: 25 апреля 2011 23:09
· Личное сообщение · #15

magistr011
Так а причем IDE RadAsm тут ? Тебе инлайн асм нужен... в С - дирректива _asm{ код_на_масме };
И не забывай pushad \ popad ;)




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

Создано: 25 апреля 2011 23:44
· Личное сообщение · #16

Нашёл свой первый рабочий код на TASM, подправил как надо, проверил - работает

Code:
  1. include kernel32.inc
  2.  
  3. .386
  4. .model flat
  5. STD_INPUT_HANDLE equ -10
  6. STD_OUTPUT_HANDLE equ -11
  7. KEY_EVENT equ 1
  8.  
  9. .const
  10. Message db 'Hello, World!', 0
  11. MessageLength db $ - Message - 1
  12. .data
  13. hInput dd 0
  14. hOutput dd 0
  15. BytesWritten dd 0
  16. BytesRead dd 0
  17. Buffer db 100h dup (?)
  18.  
  19. .code
  20.  
  21. start:
  22.   xor ebx, ebx
  23.   call AllocConsole
  24.  
  25.   push STD_INPUT_HANDLE
  26.   call GetStdHandle
  27.   mov hInput, eax
  28.  
  29.   push STD_OUTPUT_HANDLE
  30.   call GetStdHandle
  31.   mov hOutput, eax
  32.  
  33.   push ebx
  34.   push offset BytesWritten
  35.   movzx eax, MessageLength
  36.   push eax
  37.   push offset Message
  38.   push hOutput
  39.   call WriteConsoleA
  40.  
  41. ReadLoop:
  42.   push offset BytesRead
  43.   push 1
  44.   push offset Buffer
  45.   push hInput
  46.   call ReadConsoleInputA
  47.   
  48.   mov eax, BytesRead
  49.   test eax, eax
  50.   jz ReadLoop
  51.   
  52.   mov ax, word ptr Buffer
  53.   cmp ax, KEY_EVENT
  54.   jnz ReadLoop
  55.  
  56.   call FreeConsole
  57.   push ebx
  58.   call ExitProcess
  59. end start


-----
IZ.RU





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

Создано: 25 апреля 2011 23:58 · Поправил: DenCoder
· Личное сообщение · #17

[c4] пишет:
Так а причем IDE RadAsm тут ?

И верно и нет. С одной стороны всё равно к какому асму привыкать, хоть они и отличаются - для опыта это не важно. С другой - время ограничено, на ассемблерные вставки просто не хватит времени...

Всё-таки верно советует [c4] - не теряйте времени, беритесь за вставки!

[c4] пишет:
И не забывай pushad \ popad

Необязательно! Имеют значение только регистры esi, edi, ebx, ebp, esp. Каждый из них, если используется во вставках, должен быть восстановлен. Глазу препода больше по душе будет.

P.S. Сорри, опять забыл правку нажать...

-----
IZ.RU




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

Создано: 26 апреля 2011 08:06
· Личное сообщение · #18

Благодарю всех за советы и помощь



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

Создано: 26 апреля 2011 09:11 · Поправил: magistr011
· Личное сообщение · #19

[c4] пишет:
Так а причем IDE RadAsm тут ? Тебе инлайн асм нужен... в С - дирректива _asm{ код_на_масме }; И не забывай pushad \ popad ;)

Я ведь говорю, что С++ я не знаю, а если я смогу понять как в масм32 делать exe. чтобы досовское приложение печатало "привет" Я напишу длинную программу на асме
как и задумал))



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

Создано: 26 апреля 2011 09:26
· Личное сообщение · #20

DenCoder
И верно и нет.

magistr011Вот мои задания, если кому интересно... Они выделены жёлтым, единственное что мне хочется это посмотреть код хотябы одного задания и посидеть поразбираться и т.д. Но
у меня пока знаний маловато (((
Если кто может помогите, буду признателен.

ca0b_25.04.2011_EXELAB.rU.tgz - Задания по Ассемблеру .doc



задание никто не читал ?

Примечания к заданиям:
- Реализуйте вычисление заданного выражения как ассемблерную вставку в программе на языке высшего уровня (Паскаль, С++ и т.д.).
- Программа на языке высшего уровня должна запрашивать значения переменных и выводить результат на экран.
- Все переменные являются целочисленными.




 eXeL@B —› Вопросы новичков —› вопрос по RadAsm
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати