· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Вопрос насчет АСМА

Посл.отвђт Сообщен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