И это снова он,красавчик ,непревзойдённый Xtreme!!!Встречайте его снова... А если серьёзно,не надо было закрывать мою прошлую тему.Со многими LamerOffскими вопросами я разобрался сам Но у меня к вам снова вопросы(и опять ) ,только на этот раз,ПОЖАЛУЙСТА,отвечайте конкретно! 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 файл надо создать и как вообще он создаётся?
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 в список в меню "Создать" и т.п.
На счёт 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)поподробнее!
Хм.. Что значит "пишем"? В коде? Так без разницы, где оно будет, лишь бы не на пути исполнения (хотя и там может быть, но нужно будет его обходить через jmp или call). Правда, без разницы, если нет сегментов. 5 - перечитай ещё раз.
можешь написать Код (Text): CSEG segment org 100h begin: mov ah,9 mov dx,offset Message int 21h jmp cont Message db 'Hello, world!$' ;после выхода(int 20h) cont: int 20h CSEG ends end begin
Насчет рожицы. После Start вставь Код (Text): mov ax,0003h int 10h не знаешь, что это - читай мануалы.
Могу добавить по поводу юникода (точнее Джеффри Рихтер может), если определение идет под Windows (причем линейки NT, т.к. поддержка Юникода в Win98 весьма сомнительна). Вот нагло выдраный отрывок из книги Джеффри Рихтера "Windows для профессионалов - создание эффективных Win32-приложений с учетом специфики 64-разрядной ОС": "DWORD IsTextUnicode(CONST PVOID pvBuffer, int cb, PINT pResult); Проблема с текстовыми файлами в том, что не существует четких и строгих пра- вил относительно их содержимого. Это крайне затрудняет определение того, содер- жит файл символы в ANSI или в Unicode. Поэтому IsTextUnicode применяет набор ста- тистических и детерминистских методов для того, чтобы сделать взвешенное пред- положение о содержимом буфера. Поскольку тут больше алхимии, чем точной науки, нет гарантий, что Вы не получите неверные результаты от IsTextUnicode."
l_inc Ага, была как-то байка про баги в виндовом блокноте. Корень её вёл именно к IsTextUnicode, из-за неверного её аргумента неправильно детектировался текст.
Xtreme Читай мануалы. Больше ничего не поможет. В моей темке есть еще ссылки на FAQ там и поймешь как и что. А на счет COM и EXE то ни как. Надо писать именно програмы ориентированные на расширение. Хотя могу и ошибаться, но понял я именно так.