Скачиваний:
10
Добавлен:
16.05.2015
Размер:
310.12 Кб
Скачать

Dump.Asm

Является главным модулем программы к которой подключены модули меню программы (Menu.asm) и титульного листа (Title.asm).

Содержит процедуры:

1. Запроса информации у пользователя о расположение сектора на дискете который необходимо дампировать.( название дисковода, номер цилиндра, головки и сектора) и проверяет корректность выполнения программы.

GetDupmParam proc

pusha

mov ax, 0003h

int 10h

;отображаем строку

mov ax, offset sInputFile

call ShowString

;запрашиваем строку

mov ax, offset bufFile

call InputString

;дописываем 0 в конец файла

xor bx, bx

mov bl, bufFile[1]

mov bufFile[bx + 2], 00h

mov ax, offset sInputDisk

call ShowString

mov ax, offset bufDisk

call InputString

;переводим букву на номер диска

mov al, byte ptr bufDisk[2]

cmp al, 'A'

jb @@jExit_ErrDisk

cmp al, 'B'

ja @@jExit_ErrDisk

sub al, 'A'

mov Disk, al

mov ax, offset sInputCylinder

call ShowString

mov ax, offset bufCylinder

call InputString

mov ax, word ptr bufCylinder[2]

call CharToHex

mov Cylinder, al

mov ax, offset sInputHead

call ShowString

mov ax, offset bufHead

call InputString

mov ax, word ptr bufHead[2]

call CharToHex

mov Head, al

mov ax, offset sInputSector

call ShowString

mov ax, offset bufSector

call InputString

mov ax, word ptr bufSector[2]

call CharToHex

mov Sector, al

call DumpToFile

mov ax, offset sDumpComplete

call ShowString

jmp @@jExit

@@jExit_ErrDisk:

mov ax, offset sErrorDisk

call ShowString

@@jExit:

mov ah, 00h

int 16h

popa

ret

GetDupmParam endp

2. Организующую запись в файл дампированный сектор в виде таблицы содержащей смешение в секторе, байтов информации в Hexформате и соответствующие им символы в форматеASCII

proc DumpToFile

pusha

mov ax, offset bufSectorData

call ReadSector

jc @@jExit_ReadError

mov ax, offset bufFile[2]

call CreateFile

jc @@jExit_FileError

mov ax, offset bufSectorData

mov cx, 512

call Dump

call CloseFile

jmp @@jExit

@@jExit_ReadError:

mov ax, offset sReadSectorErr

call ShowString

jmp @@jExit

@@jExit_FileError:

mov ax, offset sFileErr

call ShowString

jmp @@jExit

@@jExit:

popa

ret

endp

3. Производящую непосредственно дамп сектора дискеты , преобразует адрес в текстовый вид и сохроняет в буфер, записывает байта в ASCII и в Hex, а также производит проверку на неотображаемые символы и в формате ASCII заменяет пробелами.

proc Dump

pusha

mov si, ax

mov di, offset DumpBuffer

xor dx, dx

mov ax, offset FileHeader1

call WriteString

mov ax, offset FileHeader2

call WriteString

mov ax, offset FileHeader3

call WriteString

jNextParag:

xor di, di

;преобразуем адрес в текстовый вид и сохроняем в буфер

mov al, dh

call HexToChar

mov word ptr DumpBuffer[3], ax

mov al, dl

call HexToChar

mov word ptr DumpBuffer[5], ax

jNextByte:

;запись байта в ASCII

mov al, [si]

mov ah, ' '

cmp al, 09h

je jBadOutChar

cmp al, 0Ah

je jBadOutChar

cmp al, 0Dh

je jBadOutChar

mov ah, al

jBadOutChar:

mov DumpBuffer[di + 60], ah

; запись байта в Hex

call HexToChar

mov bp, di

shl bp, 1 ;битовый сдвиг (*2)

add bp, di

mov word ptr DumpBuffer[bp + 10], ax

inc si

inc di

inc dx

cmp di, 10h

jb jNextByte

mov ax, offset DumpBuffer

call WriteString

cmp dx, cx

jb jNextParag

mov ax, offset FileHeader4

call WriteString

jExit:

popa

ret

endp

4. А также содержит процедуры перевода строки в 16-фомат(proc CharToHex) и обратно(proc HexToChar). Открытие или создание(proc CreateFile) и закрытия файла(proc CloseFile). Ввод строки(proc InputString), отображение строки(proc ShowString) и запись строки в файл(proc WriteString)

Соседние файлы в папке Курсовая работа - Дамп произвольного сектора магнитного носителя( в формате Hex-ASCII ) в файл