Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2010, 16:15   #1
fastmen
Новичок
Джуниор
 
Регистрация: 26.02.2009
Сообщений: 2
По умолчанию Ассемблем(Серийный номер тома) для MS-DOS

Люди помогите а то мозг вообще не работает, надо на ассемблере написать резидентную прогу для MS-DOS которая считывала бы серийный номер тома. Друг дал, но тут она считывает метку тома

Цитата:
ASSUME CS:KNSEG, DS:KNSEG, SS:KNSEG, ES:KNSEG
KNSEG segment
org 100h
Begin:
jmp INIT
Obrabotchik:
push ds
push cs
pop ds
mov FN, ah
mov al, ah
xor ah, ah
shl ax, 1
mov di, offset Addr_Table
add di, ax
call di
pop ds
iret
Func proc
xor ax, ax ;Обнуление регистра ax
mov ch, 0 ;номер дорожки
mov cl, 1 ;номер сектора
mov dh, 0 ;номер головки
mov dl, 0 ;номер устройства
push es ;сохранение регистра ES в стеке
mov ax, cs ;Настройка регистра ES на сегмент кода
mov es, ax
mov bx, offset BootSect ;Буфер для чтения сектора
mov ah, 2 ;Номер функции
mov al, 1 ;число секторов для чтения
int 13h ;Прерывание BIOS для чтения с диска
cmp ah, 0
jz Ok
jmp near ptr Goto_Ret
Ok:
mov OldSI, si ;Сохранение переданного указателя
mov si, offset BootSect ;Настройка регистра SI на начало буфера
pop es ;Восстановление из стека в регистр ES
add si, 43 ;Установка смещения
mov di, offset LabelOfDisk ;Настройка регистра DI на переменную
mov cx, 11
NextSymb: ;Перевод
mov al, [si] ;метки диска
mov [di], al ;из буфера
inc di
inc si
loop NextSymb ;в переменную
mov cx, 11
mov si, OldSI ;восстановление переданного в прерывание параметра в регистр SI
mov di, offset LabelOfDisk ;Настройка регистра DI на переменную
NextSymbol: ;Перенос
mov al, [di] ;метки диска
mov es:[si], al
inc di ;в сегмент
inc si ;программы, вызвавшей прерывание
loop NextSymbol
Goto_Ret:
ret
Func endp
Zaglushka proc
mov ah, 0EEh
ret
Zaglushka endp
OldSI dw 0 ;Переданный указатель, в котором находится адрес, по которому нужно записать метку диска
LabelOfDisk db 11 dup (0) ;Метка диска
Addr_Table dw 256 dup (0) ;Таблица адресов
FN db 0
BootSect db 512 dup (0) ;Буфер для чтения загрузочного сектора
INIT:
mov di, offset Addr_Table
mov si, offset Zaglushka
mov cx, 256
Label2:
mov [di], si
add di, 2
loop Label2
mov di, offset Addr_Table
add di, 66h
mov si, offset Func
mov [di], si
mov ah, 25h
mov al, 60h
lea dx, Obrabotchik
int 21h
lea dx, INIT
int 27h

KNSEG ends
end Begin
Вопрос: Что мне тут изменить что бы прога показывала серийный номер тома?
Я пробовал менять тут некоторые вещи, но в дос после моих изменений вешался или выводил какие то ошибки))

Цитата:
FAT12 и FAT16

FAT12 и FAT16 имеют одинаковый формат заголовка.
Смещение Название Размер Описание
36 BS_DrvNum 1 Номер диска
37 BS_NtRsvd 1 Зарезервировано для Windows NT
38 BS_BootSig 1 Расширенная сигнатура (если 29h, то следующие поля актуальны)
39 BS_VolID 4 Серийный номер тома
43 BS_VolLab 11 Метка тома
54 BS_FilSysSize 8 Тип файловой системы (12- или 16-разрядная)
А вот второй файл который был с прогой

Цитата:
assume CS:CSEG, DS:CSEG, SS:CSEG, ES:CSEG
CSEG segment
org 100h
Begin:
mov ah, 33h
mov si, offset File
int 60h
mov ah, 9
mov dx, offset File
int 21h
mov ax, 4C00h
int 21h

File db 11 dup (0), 24h
CSEG ends
end Begin

Последний раз редактировалось fastmen; 30.05.2010 в 16:18.
fastmen вне форума Ответить с цитированием
Старый 11.06.2010, 18:27   #2
fastmen
Новичок
Джуниор
 
Регистрация: 26.02.2009
Сообщений: 2
По умолчанию

Люди помогите, как считать номер тома диска, надо на ассемблера написать прогу для MS-DOS!!!!!!!!!!!
ПОМОГИТЕ!!!!!!!!!!!!!!
fastmen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Серийный номер HDD Mikola-TEAM Win Api 1 25.05.2010 19:38
J2me как скачать и получить серийный номер для Эмулятора Nokia?? Tik-Tik Общие вопросы по Java, Java SE, Kotlin 0 26.08.2009 20:00
Серийный номер жесткого диска Dj_smart Паскаль, Turbo Pascal, PascalABC.NET 0 04.01.2009 21:19
Защита программы - серийный номер Roof Свободное общение 13 23.11.2008 14:40