И снова Консоль(с руками всё в порядке)

Тема в разделе "WASM.BEGINNERS", создана пользователем Xtreme, 22 окт 2006.

  1. Xtreme

    Xtreme New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2006
    Сообщения:
    2
    И это снова он,красавчик ,непревзойдённый Xtreme!!!Встречайте его снова...
    А если серьёзно,не надо было закрывать мою прошлую тему.Со многими LamerOffскими
    вопросами я разобрался сам :dntknw:
    Но у меня к вам снова вопросы(и опять :dntknw: ) ,только на этот раз,ПОЖАЛУЙСТА,отвечайте
    конкретно!

    1)Зачем сообщение для вывода мы не пишем перед прерыванием int 20h(всё-таки ВЫХОД)?

    2)Почему CSEG ends пишется не после end Start(CSEG segment до Start:)?

    3)Не работает,вернее работает,но не так,как нужно(один чёрный экран!), прога,которая выводит в верхний левый угол экрана веселую рожицу на синем фоне:

    CSEG segment
    org 100h

    Start:
    mov ax,0B800h
    mov es,ax
    mov di,0

    mov ah,31
    mov al,1
    mov es:[di],ax

    mov ah,10h
    int 16h

    int 20h

    CSEG ends
    end Start

    Пользуюсь я MASM'ом 6.12!

    4)А как из .com файла сделать .exe(в MASM 6.12) ,потому что OllyDbg компилятор у меня не обнаруживает .com!

    5)Пользуюсь также MASM 5.1 Для ассемблирования набираю masm.exe имя_файлa.asm, но выдаётся вот эта фигня:
    Object filename [Название.obj]:
    Source listing [NUL.LST]:
    Cross-reference [NUL.CRF]:

    Что не пишу(а я не знаю ,что писать!!!),появляется:

    error A2062:Missing or unreachable CS
    47152 + 446396 Bytes symbol space free

    Ну что надо написать?
    Как линковать(в MASM 5.1) тоже не расскажете?
    Таких проблем в MASM 6.12 не возникает.

    6)Как узнать,есть ли в файле,объём которого я хочу узнать,символы Unicode?

    7)My_string db 'Строка!$'

    Здесь db-регистр?

    8)Что это за ошибка-fatal error LNK1190: invalid fixup found, type 0*00001(на MASM32)?

    9)В ASCII таблице 256 символов(от 0 до 255) и каждому символу выделяется по 1 байту(от 0 до 255 значений).Вышло случайно,что значение в скобках ОДНО И ТОЖЕ?

    10)Какоe IDE использовать,и простите за LamerOffский вопрос:
    Какой .bat файл надо создать и как вообще он создаётся?
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Xtreme
    1. Можешь написать.
    2. ends завершает сегмент, но не код программы. Последний завершает директива end. А Start - это просто метка, обозначающая точку входа (начало программы, но не начало кода).
    3. Не силён в дос.
    4. Разберись с форматами файлов. COM - это просто бинарный файл, загружаемый в DOS. exe бывают разными. Это и MZ для DOS, и NE (LE?) для Win16, и PE(+) для Win32(64). Ты пишешь 16разрядные проги под дос, отладчик OllyDbg работает только с Win32. По поводу отладчиков под дос поищи по форуму.
    5. Как ассемблировать - в FAQ.

    6. Это вопрос, связанный с детектом кодировки файла. Вообще, юникод-файлы начинаются с BOM-сигнатуры, но не обязательно.

    7. Читаем матчасть. db - директива объявления данных, размером в 1 байт.
    8. Поиск по форуму.
    9. Не понятен вопрос.
    10. В FAQ.
    Если пользуешься файловым менеджером, то обычно Shift+F4 выдаст прилашение к вводу имени файла для открытия, если такой существует, или создания. Иначе куча способов - от создания bat в txt и переименования, или включения bat в список в меню "Создать" и т.п.
     
  3. Xtreme

    Xtreme New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2006
    Сообщения:
    2
    На счёт 1)ну,например:

    CSEG segment
    org 100h

    begin:

    mov ah,9
    mov dx,offset Message
    int 21h
    int 20h
    Message db 'Hello, world!$' ;после выхода(int 20h)
    CSEG ends
    end begin

    5)FAQ не помог!

    6)поподробнее!
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Хм.. Что значит "пишем"? В коде? Так без разницы, где оно будет, лишь бы не на пути исполнения (хотя и там может быть, но нужно будет его обходить через jmp или call). Правда, без разницы, если нет сегментов.

    5 - перечитай ещё раз.
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    можешь написать
    Код (Text):
    1. CSEG segment
    2. org 100h
    3.  
    4. begin:
    5.  
    6.   mov ah,9
    7.   mov dx,offset Message
    8.   int 21h
    9.   jmp cont
    10. Message db 'Hello, world!$'   ;после выхода(int 20h)
    11. cont:
    12.   int 20h
    13. CSEG ends
    14. end begin
     
  6. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Насчет рожицы. После Start вставь
    Код (Text):
    1. mov ax,0003h
    2. int 10h
    не знаешь, что это - читай мануалы.
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    LE - это вроде как Linear Executable, формат драйверов такой был.
     
  8. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Могу добавить по поводу юникода (точнее Джеффри Рихтер может), если определение идет под Windows (причем линейки NT, т.к. поддержка Юникода в Win98 весьма сомнительна). Вот нагло выдраный отрывок из книги Джеффри Рихтера "Windows для профессионалов - создание эффективных Win32-приложений с учетом специфики 64-разрядной ОС":
    "DWORD IsTextUnicode(CONST PVOID pvBuffer, int cb, PINT pResult);
    Проблема с текстовыми файлами в том, что не существует четких и строгих пра-
    вил относительно их содержимого. Это крайне затрудняет определение того, содер-
    жит файл символы в ANSI или в Unicode. Поэтому IsTextUnicode применяет набор ста-
    тистических и детерминистских методов для того, чтобы сделать взвешенное пред-
    положение о содержимом буфера. Поскольку тут больше алхимии, чем точной науки,
    нет гарантий, что Вы не получите неверные результаты от IsTextUnicode."
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    l_inc
    Ага, была как-то байка про баги в виндовом блокноте. Корень её вёл именно к IsTextUnicode, из-за неверного её аргумента неправильно детектировался текст.
     
  10. Tago

    Tago Павел

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    4
    Адрес:
    Миснк
    Xtreme
    Читай мануалы. Больше ничего не поможет. В моей темке есть еще ссылки на FAQ там и поймешь как и что. А на счет COM и EXE то ни как. Надо писать именно програмы ориентированные на расширение. Хотя могу и ошибаться, но понял я именно так.