[ Assembler ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by !_filin_!, 25 May 2007.

  1. freshman

    freshman New Member

    Joined:
    1 Aug 2010
    Messages:
    37
    Likes Received:
    0
    Reputations:
    0
    всем привет начал изучать асм. толко вот возникли проблемы на начале
    проблема у меня стоит windows 7 nasm как я понял 64 битный ибо система 64 бинтная
    создаю ехе -> nasm -f bin -о hello.ехе hello.asm

    сама прога создаётся толко запустит неудаётся так как надо 32 или 64 версия фаила как создать эту 32 битную версию низнаю может както в самом кода я читал что по умолчаню в нормалном режыме создаются 16 битные а в защищёном 32

    вот кода проги: я делаю это по книге Марек Ассамблер на Примерах глава программы под dos


    SECTION .text
    ;Эта программа выводит на экран текст "Hello, World!'
    ;конец строки {EOL - End Of Line) и завершает работу
    org 0x100
    mov ah,0x9
    mov dx,hello
    int 0x21
    mov ah,0x4C
    mov al,0
    int 0x21
    SECTION .data
    hello DB "Hello,World!",0xd,0xa,'$'
    ;конец программы
     
  2. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Эта программа получится 16-битной, а если система 64, то запустить такое и не удастся.
     
  3. freshman

    freshman New Member

    Joined:
    1 Aug 2010
    Messages:
    37
    Likes Received:
    0
    Reputations:
    0
    как зделат её 64 битнои?
     
  4. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Достаточно сделать ее 32-битной, написав на 32-битном ассемблере под Windows, а не под дос. Тогда они будет работать под 32-битными и 64-битными виндами.
     
  5. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    либо запускать на 32 разрядной системе, либо в эмуляторе DOS'a
     
    1 person likes this.
  6. freshman

    freshman New Member

    Joined:
    1 Aug 2010
    Messages:
    37
    Likes Received:
    0
    Reputations:
    0
    ну это и так понятно разве nasm не 32 бинтыйи :/ :) там наверное для компилации нужа какаето другая команда .. в книге примеры пошли сперва на дос потом под windows но мине надоело читать сухои матерял без примероф нелзя никак запустить DOS~пpилoжeния 16бит в среде Windows 32/46бит ?
     
  7. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    выше пост я для кого написал?
     
  8. freshman

    freshman New Member

    Joined:
    1 Aug 2010
    Messages:
    37
    Likes Received:
    0
    Reputations:
    0
    sorry незаметил ! , спасибо !! работает cкачал DosBoх патом надо установить папку стоит в мануале как ну и запустил com фаил почемуто ехе нешли из под дос
    и ешё вапрос что значит это ,0xd,0xa,'$' в конце Hello World ?
     
  9. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    0dh и 0ah '$' это перевод каретки и окончание строки
     
    #1109 DooD, 18 Aug 2011
    Last edited: 18 Aug 2011
  10. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    [​IMG]
    Что это и зачем это нужно?
     
  11. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    хекс код.16-тиричная система исчисления
     
  12. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    Это я, как ни странно, понимаю. Я не понимаю, зачем он там нужен, какую функцию несет.
    Для полноты картины:
    [​IMG]
     
  13. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Сегмент данных, который содержит, соответственно, данные.
     
  14. 2pick

    2pick Elder - Старейшина

    Joined:
    17 Mar 2007
    Messages:
    117
    Likes Received:
    39
    Reputations:
    2
    {Swap pointers}
    procedure XChg(var Critical, Normal); assembler;
    asm
    mov ecx, [edx]
    xchg [eax], ecx
    mov [edx], ecx
    end;

    Что делает эта функция?
    Переодически 2-я строчка выдает "Access Violation"
     
  15. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    все равно что присвоение переменных
     
  16. 2pick

    2pick Elder - Старейшина

    Joined:
    17 Mar 2007
    Messages:
    117
    Likes Received:
    39
    Reputations:
    2
    Что чему присваивается и длячего вообще делают такое извращение?
     
  17. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    считай что дельфийским методом будет так:
    var a:word
    begin
    a:=Normal;
    Normal:=Critical;
    Critical:=a;

    просто пример обмена указателями на встроенном ассемблере.
     
    1 person likes this.
  18. 2pick

    2pick Elder - Старейшина

    Joined:
    17 Mar 2007
    Messages:
    117
    Likes Received:
    39
    Reputations:
    2
    Так то на самом деле не пример - cobain2k использует в своем TICQClient в модуле по работе с сокетами...
     
  19. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    ааа...просто ассесблерный код в много раз быстрее ж выполняется.
     
  20. [ STEF ]

    [ STEF ] Member

    Joined:
    19 Aug 2011
    Messages:
    69
    Likes Received:
    36
    Reputations:
    3
    а если вписать cobain2k