MASM и C

Тема в разделе "WASM.BEGINNERS", создана пользователем Alexey_krasikov, 3 мар 2011.

  1. Alexey_krasikov

    Alexey_krasikov New Member

    Публикаций:
    0
    Регистрация:
    3 мар 2011
    Сообщения:
    38
    Очень долго программировал на MASMе. Теперь вот решил изучить C. Далее двинуться к C++ и закончить на visual C.NET. Обратил внимание на такую особенность. Простейшая программа в EXE формате на C "Hello, world!", хотя и весит почти в 20 раз больше, но выполняется раз в 10 быстрее. Если кто может ответить на этот вопрос - буду признателен. Привожу исходные коды на СИ и масме:

    C:

    #include <stdio.h>
    main()
    {
    printf ("Hello, world!\n);
    }

    MASM:

    xyz segment
    assume cs:xyz
    main:
    mov ax,cs
    mov ds,ax

    lea dx,mess
    mov ah,9
    int 21h

    mov ax,4c00h
    int 21h
    mess db 'Hello, world!',0ah,0dh,'$'
    xyz ends

    end main

    Сегмент стека не создавал, т.к. он здесь не нужен. Сегмент данных также отсутствует, т.к. данные поместил в сегмент кода.
     
  2. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Alexey_krasikov
    убил

    На масме ты пишет под дос, и как следствие выполняется в эмуле, на си пишешь в натив, и как следствие быстрей.
    Одним словом у тебя каша в голове.
     
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    бугогашенька...
     
  4. Alexey_krasikov

    Alexey_krasikov New Member

    Публикаций:
    0
    Регистрация:
    3 мар 2011
    Сообщения:
    38
    что есть натив?
     
  5. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    парень забудь про in,out. ты теперь работаеш в защищеном режиме. Вообщем используй winapi
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    printf - функция, реализованная в crt... она преобразует параметры должным образом и вызывает WinAPI-функции из одной из библиотек (какие-то из kernel32.dll, какие-то из user32.dll), функции этих библиотек в свою очередь либо вызывают функции из ntdll.dll, либо "спускаются в ядро самостоятельно"... вам же не нужно программировать сисколлами, вам нужно программировать с использованием WinAPI-функций... вперед в MSDN... и самое главное: int 21h не нужно использовать)))
     
  7. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Native API то есть Win32 API в данном случае.
     
  8. Alexey_krasikov

    Alexey_krasikov New Member

    Публикаций:
    0
    Регистрация:
    3 мар 2011
    Сообщения:
    38
    кароче, на СИ я использовал в примере API, а на масме я использовал прерывания биос.
     
  9. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Ух! Три поста четко за три минуты!
     
  10. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    да, да еще из под WM по видимому.
     
  11. Alexey_krasikov

    Alexey_krasikov New Member

    Публикаций:
    0
    Регистрация:
    3 мар 2011
    Сообщения:
    38
    Тогда еще вопросик. Где скачать эти долбаные библиотеки, чтобы писать на масме под винду?
     
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    VM)))

    там же где и компилятор...
     
  13. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Rel
    ))) тада.
     
  14. Alexey_krasikov

    Alexey_krasikov New Member

    Публикаций:
    0
    Регистрация:
    3 мар 2011
    Сообщения:
    38
    Та нету тама.. ((
     
  15. Alexey_krasikov

    Alexey_krasikov New Member

    Публикаций:
    0
    Регистрация:
    3 мар 2011
    Сообщения:
    38
    Проблема в том, что если я использую в коде какие-то API-функции, то компилятор материться, что не может найти эти библиотеки. И скачать их как-то проблемно.
     
  16. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    в чем ваша проблема? такое впечатление, что вы из прошлого к нам прибыли... из времени, когда только Windows 3.11 получала свое распространение... какой компилятор?
     
  17. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    ???
    http://www.masm32.com/masmdl.htm - скачай
    установи и посмотри внимательно.
     
  18. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    да... masm32\lib... более того, установщик сам генерирует эти либ-файлы при установке, чтобы соответствовать вашей ос... если она канеш не младше Windows 2000...
     
  19. Alexey_krasikov

    Alexey_krasikov New Member

    Публикаций:
    0
    Регистрация:
    3 мар 2011
    Сообщения:
    38
    За ссылочку спасибо
     
  20. Alexey_krasikov

    Alexey_krasikov New Member

    Публикаций:
    0
    Регистрация:
    3 мар 2011
    Сообщения:
    38
    В моем компиле в этой папке ничего нет. и при установке ничего туда не закинулось. а по поводу прошлого... Почти так и есть.. ))