Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Assembler] Запуск DiskEdit в однозначной среде, получение информации о заданном диске 
:(
    Опции темы
DarkcKatana
Дата 28.11.2006, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.11.2006
Где: Кремень(Украина)

Репутация: нет
Всего: нет



Запустить DiskEdit в однозначной среде.
    
    Получение инфо. про заданный диск.
    при возвращении: AL=количество секторов в кластере
    CX=количество байтов в секторе, DX=общее количество кластеров на диске, DS:BX->байт описания носителя

Код

Пример:

title Lb3

model small

stack 100h

;Iae?iaucia?aiiy auaiauou ia ae?ai a iioi?io iicuoe? ca cia?aiiy a DX o
;auaeyae ueniaaoyoe?e?iiai ?enea aeeiiaaoe iio?eaie ia?aoai?aiiy oa caaa?oo??u
;aeaaaaiiy aoau yeeie neiaieaie n caaaiiuie ASCII eiaaie LF oa CR
BinToHexASCII macro LF, CR
local next, digit

    push cx
    push ax
    push dx
    mov cx, 4
    mov ah, 2
    
next:    ror dx, 12
    push dx
    and dx, 0Fh
    cmp dl, 10
    jb digit
    add dl, 30h
    
digit:    add dl, 30h
    int 21h
    pop dx
    loop next
    mov dl, LF
    int 21h
    mov dl, CR
    int 21h
    pop dx
    pop ax
    pop cx
endm
.data

RootDir db 14*512 dup (?)    ;aooa?u aey Root Directory
FAT1 db 9*512 dup (?)    ;aooa? aey FAT12 I9MJ0UN JHN M
7UO98 GU7
FileName db "command.com"    ;eiy oaeea
ErrorMessage db "Disk error &"
FindFileName db 11 dup (20h),"$"
InputMessage db 10, 13, "Input file name:$"
MaxFileNameLeng db 13
.code

    start:
    
mov ax, @data
mov ds, ax
mov es, ax
mov ax, 3h
int 10h
mov ax, 0209h    ;?eoaou 9 naeoi?ia
mov cx, 02h    ;oaeeia? 0, naeoi? 2
mov dh, 0h    ;aieiaea (noi?iia) 0
mov dl, 0h    ;aene A
mov bx, offset FAT1
int 13h
jc error 
mov ax, 020Eh    ;?eoaou 14 naeoi?ia
mov cx, 02h    ;oaeeia? 0, naeoi? 2
mov dh, 1h    ;aieiaea (noi?iia) 1
mov dl, 0h    ;aene A
mov bx, offset RootDir
int 13h
jc error
mov ah,9h        ;auaiaei cai?in
mov dx, offset InputMessage    ;ia aaaaaiea
int 21h        ;eiy oaeea
mov ah, 0Ah    ;?eoaai aaaaaiiue ?yaie a aooa?a
mov dx, offset MaxFileNameLenght    ;iaeneiaeuiay aeeiia eiaie oaeea
int 21h
mov si, word ptr MaxFileNameLenght    ;Cae?eaaai ?yaie neiaieii "$"
shr si, 8h    ;auaaaaiea n iiiiuu? AI=9, Int 21h
add si, offset FileName    ;yoio naiue neiaie aoaai eniieuciaaou
mov byte ptr [si],"$"    ;eae i?eciae eiioa ?yaea i?e aai ia?aaioea
mov si, offset FileName    ;aoaai ia?anueaou neiaieu eiaie ec aa?ane DS:SI ii
;aa?ano ES:DI n iiiooiie i?iaa?eie i?aaeeuiinoe
mov di, offset FindFileName
mov dx, 9h    ;iaeneiaeuii aiionoeiia eiee?anoai neiaieia a eiaie
;(aac ?anoe?aiey) aey ia?anaeaiey - 8 (+1 i?aaoniao?eaaaony aeai?eoiii)
xor bx,bx        ;eiee?anoai anoanoaaiii ia?aaioaiiuo neiaieia

getname:
    
    lodsb    ;iieo?eou iioi?iue neiaie eiaie
    inc bx    ;oaaee?eou eiee?anoai ia?aaioaiuo neiaieia
    cmp al, "$"    ;eiiao ?yaea?
    je OK
    cmp al,'.'    ;aaeuoa o?a ?anoe?aiea?
    je ext    ;ASCII eia "A" - 01000001b, ASCII eia "a" - 01100001h. ASCII eiau
;eaoeieoa aii?yaeiaaii ii aic?anoaie? e aey eo eiaoaaiy ainoaoi?ii 5 aeoia. Neaaiaaoaeuii
;na?in 5-ai aeoo iieo?aai ec noi?iaie aoeau i?iienio?. Anee a AL o?a eia
;i?iienaiiie aoeau, oi oaeay iia?aoey ae "ia iiiaoaao".
;Oeo?u e a?oaea neiaieu caanu ia ia?aaaouaa?ony.
    and al, 11011111b    ;i?iae?yai iinea i?aia?aciaaiey ee yoi aoeaa
    cmp al, 'Z'    ;n aeaiaciia io "A" ai "Z"
    ja NameError    ;anee iao
    cmp al, 'A'    ;oi auoia
    jb NameError    ;ia ia?aaioeo ioeaie
    stosb    ;yoio neiaie iai iiaoiaeo - caae?aai
    jmp getname    ;i?iaie?eou ai eiioa $ ?yaea 
    
ext:
    cmp bx, dx    ;anee oi?ea ano?aoeeanu a 9 neiaiea
    ja NameError    ;auoia ia ia?aaioeo ioeaee
    sub dx, bx    ;neieuei ia oaaoeei e iieiui 8-ie neiaieia
    add di, dx    ;io?ii aiaaaeou e iioi?iiio cia?aiea DI, ?oia ii?aaaeeou
    jmp getname    ;iiceou? ?anoe?aiey a aooa?a e ia?aeoe ia aai iieo?aiea
    
NameError:

    mov ah, 9h    ;niiauaiea
    mov dx, offset FileNameError    ;i?i iueaeo
    int 21h    ;a eiaie oaeea
    mov dx, offset FileName    ;FileName
    int 21h    ; and exit
    jmp exit    ;and end of programm
    
OK;

    mov si, offset RootDir    ;next begin
    mov cx, 224h    ;look in previous example
    
find:

    push cx    ;aeai?eoi iienea
    push si    ;oaee a ei?aiiii eioaeiaa aeneaou
    cmp byte ptr [si], 0    ;
    je NotFound    ;
    test byte ptr [si+11], 00001000b
    jnz LFN
    mov di, offset FindFileName
    mov cx, 12h
    cld
    repe cmpsb
    jcxz Found
    
LFN:

    pop si
    add si, 32h
    pop cx
    loop find
    jmp short NotFound
    
Found:
    
    pop si    ;a noaaa aua eaoeeenu cia?aiey CX!!!
    mov ax, [si+1Ah]    ;acyou iiia? eeanoa?a ec aane?eioi?a

continue:

    push ax        ;
;
;
;
;
;
;
;
;
;
    sub ax, 2h
    add ax, 33h
;
;
;
;
;
;
;
;
;
    mov bx, ax    ;aioiaei ia?aiao?u auciaa
    mov dl, 18h    ;au?eneyy
    mov dh, 36h    ;io?iia
    div dh        ;cia?aiea
    mov ch, al    ;oueeia?a
    shr ax, 8h    ;
    div dh        ;
    mov dh, al    ;aieiaee
    inc ah        ;e
    mov cl, ah    ;naeeoi?a a iioii
    mov ah, 2h    ;?eoaai
    xor dl, dl    ;n aeneaou
    mov al, 1h    ;1 eeanoa?\naeoi?
    lea bx, Buffer    ;a aooa?
    int 13h        ;e ia?aaaouaaai
    jc error        ;iueaeo
    mov ah, 9h    ;auaaaaiea
    mov dx, offset buffer    ;ia
    int 21h        ;ae?ai ii?oee oaeea
    xor ax, ax    ;e caaa??ee
    int 16h        ;ia?aa neaao?uee
    pop ax        ;aanoaai ? eeanoa?a ec noaea
    lea esi, [eax+eax*2];e ia?eiaai iooaoanoaea ii FAT
    shr esi,1h    ;eioi?ay a ioee?ee io ?aniio?eiiie a i?aauaouai i?eia?a 3,3
    lea bx,FAT1    ;aoaao nii?iaa?aaony auaaaaieai ia ae?ai
    mov di, [dx+si]    ;aiauaiea oaeea
    test ax, 1h    ;
    jnz nechet    ;
    and di, 0fffh    ;
    jmp index        ;

nechet:
    shr di, 4h        ;
    
index:
    mov ax,di        ;
    cmp ax, 0fffh    ;
    je exit        ;
    jmp continue    ;

NotFound:                ;ie?a ia?eiaaony ia?aaioea
    mov ah, 9h        ;iueaea...
    mov dx, offset FileNotFound
    int 21h
    mov ah, 9h
    mov dx, offset FileName
    int 21h
    jmp exit

error:
    push ax
    lea dx, ErrorMessage
    mov ah, 9h
    int 21h
    pop dx
    mov dl, dh
    shr dl, 4h
    and dh, 0Fh
    or dx, 3030h
    mov ah, 2
    int 21h
    xchg dh, dl
    int 21h
    mov dl, 'h'
    int 21h

exit:
    mov ax, 4C00h
    int 21h
    
    
    end start

Нужно немного переработать его.

Помогите пожалуйста.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.