|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 7, 2004 12:28:54 Привет, всем! Я тут решил начать учить Ассемблер. Решил учить по рассылке Калашникова. В 8 выпуске он дал прогу для разбора, я ее почти всю разобрал, но вот только не могу понять что там делает эта строчка: mov cx,0FF00h Пацаны, помогите разобраться. Листнг проги: CSEG segment assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG org 100h ; Открываем файл для чтения. Begin: mov ax,3D00h mov dx,offset File_name int 21h jc Error_file ; Если файл не найден, выводим сообщение об ошибки и выходим из проги. mov Handle,ax ; В переменую Handle заносим номер файла. mov bx,ax ; А теперь заносим номер файла в bx. Это нужно для закрытия файла. mov ah,3Fh ; Закрываем файл. ; А вот это мне не понятно. Объясните что помещается в cx, тоесть что значит 0FF00h. Остальное мне ; все понятно. mov cx,0FF00h ; А что это за 0FF00h я не знаю:( Предполагаю что это вроде как размер буфера в ; который будет помещаться текст. Но я не уверен, поэтому спрашиваю у вас. mov dx,offset Buffer int 21h ; А тут мы закрываем файл, и сообщаем что все прошло отлично. mov ah,3Eh mov bx,Handle int 21h mov dx,offset Mess_ok ; Выводим сообщение и закрываем прогу. Out_prog: mov ah,9 int 21h int 20h ; Когда файл не найден, сообщаем об этом и выходим из проги. Error_file: mov dx,offset Mess_error jmp Out_prog Handle dw 0 Mess_ok db 'Файл загружен в память! Смотрите в отладчике!$' Mess_error db 'Не удалось открыть (найти) файл ' File_name db 'c:\msdos.sys',0,'!$' Buffer equ $ CSEG ends end Begin |
|
|
Дата: Июн 7, 2004 12:58:15 > mov ah,3Fh ; Закрываем файл. читаем из файла > ; А вот это мне не понятно. Объясните что помещается в cx, тоесть что значит 0FF00h. размер буфера в байтах сколько читать совет - чтобы постичь смысл всех значений, передаваемых в регистрах разным int'ам, надо скачать Interrupt List от Ralf Brown, который легко найти в поисковиках (урл, увы не помню, т.к. сам обновлял его давно), - там все это подробно расписано |
|
|
Дата: Июн 7, 2004 15:03:36 >mov ah,3Fh ; Закрываем файл. >; А вот это мне не понятно. Объясните что помещается в cx, тоесть что значит >0FF00h. Остальное мне ; все понятно. >mov cx,0FF00h ; А что это за 0FF00h я не знаю:( Предполагаю что это вроде как >размер буфера в ; который будет помещаться текст. Но я не уверен, поэтому >спрашиваю у вас. >mov dx,offset Buffer >int 21h Вопервых в ah закидывается 3fh, а это чтение через дискриптор! bx- descryptor,ds:dx - буфер для чтение. cx- скоко надо со считать! Скачай себе Робера Джордейна и погляди своими глазами, а лучше попробуй прочитать какой нить файл Для закрытья надо 3eh использовать! И перед открытием лучше файл сначало лучше поискать Джордейн рекомендует! |
|
|
Дата: Июн 7, 2004 15:12:30 > И перед открытием лучше файл сначало лучше поискать > Джордейн рекомендует! ну и зачем его искать? время ЦП девать некуда? если файла нет, то функция открытия вернет ошибку. может файл есть, но заблокирован или у нас нет прав на его открытие? все равно как ни крути, мы будем либо просто констатировать факт невозможности открытия файла, либо сподобимся на анализ ошибки. поиск - лишняя операция. |
|
|
Дата: Июн 7, 2004 19:06:06 >ну и зачем его искать? время ЦП девать некуда? Дык там знешь скоко интересного?! Даже про файловую систему доступно написано, я теперь хоть представление имею! |
|
|
Дата: Июн 7, 2004 19:33:06 да, в целом Джоржейн - вещь, пишет доступно, правда устарел не на один ледниковый период. а о файловой системе лучше почитать Хелен Кастер "WIN NT & NTFS" - ну не вечно же на фате сидеть ;) |
|
|
Дата: Июн 7, 2004 20:53:54 WIN NT & NTFS По рашен? |
|
|
Дата: Июн 7, 2004 21:14:29 есть и на рашен, полное назваение "Основы Windows NT и NTFS", настоятельно рекомендую, хотя читать эту книгу можно только с руссиновичем и айсом. например, написано, что NTFS поддерживает несколько потоков в рамках одного файла. например, "проводник" позволяет в этих потоках хранить комментарии к файлу, но весь фокус, что функции работы с потоками (NtQueryEaFile и компания) недокументированы ;) на wasm'e есть дока "The Undocumented Functions" - это просто находка кодокопателей, рекомендую скачать, пригодится, ибо win32 API очень много просто не умеет ;( |
|
|
Дата: Июн 7, 2004 22:48:29 kaspersky Спасибо, не ... даже Рэхмет! |
|
|
Дата: Июн 7, 2004 23:00:48 > Рэхмет что такое рэхмет? |
|
|
Дата: Июн 8, 2004 04:36:20 kaspersky что такое рэхмет? Спасибо. На google чаще встречается рахмат. |
|
|
Дата: Июн 8, 2004 11:06:18 q_q Мое правильней, я среди татар живу правда там э немного подругому говорится |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.052 |