
Новичок
Профиль
Группа: Участник
Сообщений: 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
|
Нужно немного переработать его. Помогите пожалуйста.
|