Вместо Hello, world написал: Привет чуваки, программа не идет.Почему?

Тема в разделе "WASM.BEGINNERS", создана пользователем Пазолито, 24 сен 2006.

  1. Пазолито

    Пазолито New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    13
    Вот что советует автор:
    Код (Text):
    1. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    2. ;        ПРОЦ, МОДЕЛЬ, ОПЦИИ, ИНКЛУДЫ, БИБЛИОТЕКИ ИМПОРТА
    3. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    4.  
    5.  .386
    6.  .model flat,stdcall
    7. option casemap:none
    8.  
    9. includelib kernel32.lib
    10.  
    11. SetConsoleTitleA PROTO :DWORD
    12. GetStdHandle PROTO     :DWORD
    13. WriteConsoleA PROTO    :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    14. ExitProcess PROTO      :DWORD
    15. Sleep PROTO            :DWORD
    16.  
    17.  
    18. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    19. ;                         СЕКЦИЯ КОНСТАНТ
    20. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    21.  
    22.  .const
    23.  
    24. sConsoleTitle  db 'My First Console Application',0
    25. sWriteText  db 'hEILo, Wo(R)LD!!'
    26.  
    27. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    28. ;                          СЕКЦИЯ КОДА
    29. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    30.  
    31.  .code
    32.  
    33. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    34. ;                    Самая Главная Процедура
    35. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    36.  
    37. Main PROC
    38.   LOCAL hStdout :DWORD        ;(1)
    39.  
    40.   ;титл консоли
    41.   push offset sConsoleTitle   ;(2)
    42.   call SetConsoleTitleA
    43.  
    44.   ;получаем хэндл вывода      ;(3)
    45.   push -11
    46.   call GetStdHandle
    47.   mov hStdout,EAX
    48.  
    49.   ;выводим HELLO, WORLD!      ;(4)
    50.   push 0
    51.   push 0
    52.   push 16d
    53.   push offset sWriteText
    54.   push hStdout
    55.   call WriteConsoleA
    56.  
    57.   ;задержка, чтобы полюбоваться ;(5)
    58.   push 2000d
    59.   call Sleep
    60.  
    61.   ;выход                       ;(6)
    62.   push 0
    63.   call ExitProcess
    64.  
    65. Main ENDP
    66.  
    67. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    68.  
    69. end Main
    70.  
    71. Вот что написал я:
    72. ;ПРОЦ, МОДЕЛЬ, ОПЦИИ, ИНКЛУДЫ, БИБЛИОТЕКИ
    73. ;==============================
    74.  
    75.   .386
    76.   .model flat, stdcall
    77. option casemap: none
    78.  
    79. includelib kernel32.lib
    80.  
    81. SetConsoleTitleA PROTO: DWORD
    82. GetStdHandle PROTO:     DWORD
    83. WriteConsoleA PROTO:    DWORD, :DWORD, :DWORD, :DWORD, :DWORD
    84. ExitProcess PROTO:      DWORD
    85. Sleep PROTO:            DWORD
    86.  
    87. ;==============================
    88. ;Секция констант
    89. ;==============================
    90.  
    91.   .const
    92.  
    93. sConsoleTitle db 'Мое первое косольное приложение', 0
    94. sWriteText db 'Привет, Чуваки!'
    95.  
    96. ;==============================
    97. ;Секция кода
    98. ;==============================
    99.  
    100.   .code
    101.  
    102. ;==============================
    103. ;Самая главная процедура
    104. ;==============================
    105.  
    106. Main proc
    107.   local hstdout :dword
    108.  
    109.   ;титл консоли
    110.   push offset  sconsoletitle
    111.   call setconsoletitlea
    112.  
    113.   ;получаем хэндл вывода
    114.   push -11
    115.   call getstdhandle
    116.   mov hstdout,eax
    117.  
    118.   ;выводим привет чуваки
    119.   push 0
    120.   push 0
    121.   push 16d
    122.   push offset swritetext
    123.   push hstdout
    124.   call writeconsolea
    125.  
    126.   ;задержка, чтобы полюбоваться
    127.   push 2000d
    128.   call sleep
    129.  
    130.   ;выход
    131.   push 0
    132.   call exitprocess
    133.  
    134. main endp
    135. ;==============================
    136.  
    137. end main
    Масм говорит: несогласованное блочное вложение, что делать?
     
  2. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    Код (Text):
    1. sWriteText db 'Привет, Чуваки!',0
     
  3. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    на консоль нужо выводить через WriteFile, иначе не будет работать перенаправлениен
     
  4. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Сейчас вместо "hello, world" принято писать "превед кросавчег" :)
     
  5. Пазолито

    Пазолито New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    13
    rain
    slow
    CyberManiac
    Уважаемые, а кажется все дело в том, что масм критически относится к регистру команд. Я специально (для себя) решил проверить так это или нет, вот подрочился и выяснил. А то ведь никто не говорит. Без нолика привет чуваки заканчивалась буквой "d". после нолика появился "!". Такие вот дела.
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Вот это говорит: option casemap:none.

    Привыкаем к справке:
    Здесь передаётся не ASCIIZ, а просто буфер, поэтому необходимо указывать его размер:
    Код (Text):
    1. sConsole db 'Мое первое косольное приложение' ; строка
    2. nConsole = $ - sConsoleTitle ; размер строки
    3. szTitle db 'Hello, world',0
    4. ...
    5.   invoke SetConsoleTitleA,addr szTitle ; тут ASCIIZ
    6.   invoke WriteConsoleA,[hStdout],addr sConsole,nConsole,0,0 ; тут просто строка
     
  7. Пазолито

    Пазолито New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    13
    IceStudent
    Большое спасибо, как раз только что об этом прочитал на сайте Олега Калашникова Ассемблер, это просто.
    Раз уж Вы все такие умные, то хотел спросить, что такое (по русски и на пальцах):
    Handle?
    Консоль?
    А то я что только не читаю, ни хрена не понимаю.
    Пробовал читать книгу Юрова Ассемблер, такое впечатление, что автор тащится от самого себя и где то на последней странице достигнет оргазма.
    Читаю что нибудь из интернета, такое впечатление, что авторы пишут.. пишут.. а потом им все это надоедает и они бросают.
    А смотрю на мужиков на форуме, все делятся какими то достижениями... а что все собственно делают?
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Он учит ассемблеру, а не Windows или DOS. Меня по началу тоже смутило это, но опыт с WinAPI уже был, да и материала по последнему хватало. Если хочешь именно Windows+Asm - это Iczelion, хотя у него стиль очень уж си-подобен.

    А по терминам - пусть кто-нибудь другой объяснит, у кого язык подвешен :)
     
  9. OFFSIDE

    OFFSIDE New Member

    Публикаций:
    0
    Регистрация:
    23 сен 2006
    Сообщения:
    106
    Пазолито

    Будь добр, скинь ссылочку на Юрова, если есть....
     
  10. Пазолито

    Пазолито New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    13
    OFFSIDE
    У меня он в твердом переплете, сантиметров пять толщиной.... хотя тут (в нем есть какие то ссылки) не.. фигня всякая.
     
  11. Пазолито

    Пазолито New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    13
    IceStudent
    Спасибо за ответы, я его тоже скачал... А где взять Platform SDK и что это такое.
     
  12. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Пазолито
    Нужно хотя бы одну книжку до конца дочитать, а не придираться к авторскому стилю. Когда поумнеешь, если желание опустить Юрова и др. не пропадёт, сможешь пожаловаться в разделе WASM.BOOKS.

    Сам себя не похвалишь - никто не похвалит :)
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Пазолито
    Поиск по форуму и гуглу.
     
  14. Пазолито

    Пазолито New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    13
    IceStudent
    Скажи, пожалуйста, а в чем разница между kernel32.inc и kernel32.lib. Я так и не понял. с ув. П
     
  15. Пазолито

    Пазолито New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    13
    IceStudent
    Да вот еще, у меня в масме в папке инклуд всяких инклудов дофига, а в папке либ ни чего нет, а сейчас для следующего примера нужен очередной user32.lib. Где их вообще взять, на будущее? С ув. П.
     
  16. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    masm32\TOOLS\INC2L
     
  17. Пазолито

    Пазолито New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    13
    IceStudent
    вуду...., ты колдун.... большое спасибо. с ув. П.