Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
8 views57 pages

Chapt 15

assembly

Uploaded by

Rasha Orban
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views57 pages

Chapt 15

assembly

Uploaded by

Rasha Orban
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 57

Assembly Language for x86 Processors

7th Edition
Kip R. Irvine

Chapter 15: Disk Fundamentals

Slide show prepared by the author


Revision date: 1/15/2014

(c) Pearson Education, 2014. All rights reserved. You may modify and copy this slide show for your personal use, or for
use in the classroom, as long as this copyright statement, the author's name, and the title are not changed.
Chapter Overview

• Disk Storage Systems


• File Systems
• Disk Directory
• Reading and Writing Disk Sectors (7305h)
• System-Level File Functions

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 2


Disk Storage Systems

• Tracks, Cylinders, and Sectors


• Disk Partitions (Volumes)

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 3


Tracks and Sectors
• Physical disk geometry - a way of describing the
disk’s structure to make it readable by the
system BIOS
• Track - concentric circle containing data
• Sector - part of a track

sector
track

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 4


Cylinders and Seeking

• Cylinder - all tracks readable from one head position


• Seek - move read/write heads between tracks

rotating spindle head 0 head 1

platter

movement

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 5


Disk Formatting
• Physical formatting
• aka low-level formatting
• Usually done at the factory.
• Must be done before logical formatting
• Defines the tracks, sectors, and cylinders
• Logical formatting
• Permits disk to be accessed using sequentially
numbered logical sectors
• Installs a file system (ex: NTFS)
• May install an operating system

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 6


Fragmentation

• A fragmented file is one whose sectors are no longer


located in contiguous areas of the disk.
• causes read/write heads to skip
• slower file access
• possible read/write errors

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 7


Translation

• Translation - conversion of physical disk geometry to


a sequence of logical sector numbers
• Performed by a hard disk controller (firmware)
• Logical sector numbers are numbered sequentially,
have no direct mapping to hardware

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 8


Disk Partitions
• Logical units that divide a physical hard disk
• Also called volumes
• Primary partition
• Up to four permitted
• Each may boot a different OS

• Extended partition
• Maximum of one permitted
• May be divided into multiple logical partitions, each
with a different drive letter
• Primary and Extended
• Up to three primary and one extended

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 9


Logical Partitions

• Created from an extended partition


• No limit on the number
• Each has a separate drive letter
• Usually contain data
• Can be bootable (ex: Linux)

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 10


Disk Partition Table
• Located in the disk's Master Boot Record (MBR),
following a block of executable code
• Four entries, one for each possible partition
• Each entry contains the following fields:
• state (non-active, bootable)
• type of partition (BigDOS, Extended, . . .)
• beginning head, cylinder, & sector numbers
• ending head, cylinder, & sector numbers
• offset of partition from MBR
• number of sectors in the partition

See also: www.datarescue.com/laboratory/partition.htm

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 11


Cascading Partition Tables

Primary partition
Drive C Boot, BigDOS
NA, Extended NA, BigDOS Drive D
links to
NA, BigDOS Drive E

Logical partitions (D, E)

Boot = bootable (system)


NA = non active
BigDOS = over 32 MB

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 12


Dual-Boot Example

• System 98 and Win2000-A are bootable partitions


• One is called the system partition when active

• DATA_1 and BACKUP are logical partitions


• Their data can be shared by both operating systems

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 13


Master Boot Record (MBR)

• The MBR contains the following elements:


• Disk partititon table
• A program that jumps to the boot sector of the system
partition

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 14


What's Next

• Disk Storage Systems


• File Systems
• Disk Directory
• Reading and Writing Disk Sectors (7305h)
• System-Level File Functions

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 15


File Systems

• Directory, File, Cluster Relationships


• Clusters
• FAT12
• FAT16
• FAT32
• NTFS
• Primary Disk Areas

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 16


File System

• This is what it does for you:


• Keeps track of allocated and free space
• Maintains directories and filenames
• Tracks the sector location of each file and directory

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 17


Directory, File, Cluster, Sector Relationships

File System

lists a

Filename stored in Directory

maps to

Cluster chain stored in File Allocation Table

maps to

Logical sectors map to Physical sectors

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 18


Cluster (1 of 2)
• Smallest unit of space used by a file
• Consists of one or more adjacent sectors
• Size depends on both the type of file system in use
and the disk partition size
• A file is a linked sequence of clusters. Example:

sector

1 2 3 4 5 6 7 8

Cluster 1 Cluster 2

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 19


Cluster (2 of 2)

• A file always uses at least one cluster


• A high percentage of space may be wasted
• Example: 8,200-byte file requires three 4K clusters:

File size: 8,200 bytes

8 bytes used,
4,096 used 4,096 used 4,088 empty

Cluster 1 Cluster 2 Cluster 3

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 20


FAT12

• Designed for diskettes


• Each FAT entry is 12 bits
• Very little fault tolerance
• two copies of the FAT (cluster table)
• Optimal storage for small files
• 512-byte clusters

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 21


FAT16

• MS-DOS format for hard disks


• 16-bit FAT entries
• Large cluster size when disk > 1 GB
• inneficient for small files
• Max 2 GB size under MS-DOS
• Little or no recovery from read/write errors

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 22


FAT32

• Supports long filenames


• Supported by all version of MS-Windows
from Windows 95 onward
• (except Windows NT)
• 32-bit FAT entries
• 32 GB maximum volume size
• Improved recovery from read/write errors

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 23


NTFS
• Supported by Windows NT, 2000, and XP
• Handles large volumes
• can span multiple hard drives
• Efficient cluster size (4K) on large volumes
• Unicode filenames
• Permissions on files & folders
• Share folders across network
• Built-in compression and encryption
• Track changes in a change journal
• Disk quotas for individuals or groups
• Robust error recovery
• Disk mirroring

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 24


Primary Disk Areas

• A disk or volume is divided into predefined areas


and assigned specific logical sectors.
• Example: 1.44 MB diskette
• Boot record (sector 0)
• File allocation table (sectors 1 – 18)
• Root directory (sectors 19 – 32)
• Data area (sectors 33 – 2,879)

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 25


Your turn . . .

1. A 1.44 MB diskette has 512 bytes per cluster.


Suppose a certain file begins in cluster number 5.
Which logical disk sector contains the beginning of
the file? (Hint: see page 503).

2. Suppose a certain hard drive has 4 KB per cluster,


and we know that the data area begins in sector 100.
If a particular file begins in cluster 10, which logical
sectors are used by the cluster?

(answers on next panel . . .)

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 26


Answers

1. The data area begins in Sector 33. Each cluster = 1


sector, so the file begins in sector 33 + 5 = sector 38.

2. The hard drive has 8 sectors per cluster. The starting


cluster number of the file is 100 + (8 * 10) = 180.
Therefore, sectors 180 – 187 are used by the file's
first cluster.

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 27


Boot Record (1 of 2)
• Fields in a typical MS-DOS boot record:
• Jump to boot code (JMP instruction)
• Manufacturer name, version number
• Bytes per sector
• Sectors per cluster
• Number of reserved sectors (preceding FAT #1)
• Number of copies of FAT
• Maximum number of root directory entries
• Number of disk sectors for drives under 32 MB
• Media descriptor byte
• Size of FAT, in sectors
• Sectors per track

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 28


Boot Record (2 of 2)
(continued)
• Number of drive heads
• Number of hidden sectors
• Number of disk sectors for drives over 32 MB
• Drive number (modified by MS-DOS)
• Reserved
• Extended boot signature (always 29h)
• Volume ID number (binary)
• Volume label
• File-system type (ASCII)
• Start of boot program and data

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 29


What's Next

• Disk Storage Systems


• File Systems
• Disk Directory
• Reading and Writing Disk Sectors (7305h)
• System-Level File Functions

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 30


Keeping Track of Files

• MS-DOS Directory Structure


• Long Filenames in MS-Windows
• File Allocation Table

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 31


MS-DOS Directory Structure (1 of 2)

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 32


MS-DOS Directory Structure (2 of 2)

Time field equals 4DBDh (9:45:58), and the Date field


equals 247Ah (March 26, 1998). Attribute is normal:

Attribute
Filename Extension

4D 41 49 4E 20 20 20 20 - 43 50 50 20 00 22 E8 80 MAIN CPP ."..


A5 24 A5 24 00 00 BD 4D - 7A 24 20 00 EE 04 00 00 .$.$...Mz$ .....

File
Time Date Starting size
Cluster

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 33


Date and Time Fields
• Date stamp field:
15 0

year month day

• Time stamp field:


15 0

hours minutes seconds

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 34


Your turn . . .
• What time value is represented here?

0 1 1 1 0 0 0 0 0 1 0 1 0 1 0 0
hours minutes seconds

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 35


File Attribute Values
(reserved, 0)

(reserved, 0)

archive bit

subdirectory

volume label

system file

hidden file

read-only file

What type of file has attribute 00100111 . . . ?

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 36


Long Filenames in Windows

Filename: ABCDEFGHIJKLMNOPQRSTUV.TXT
first long
entry attribute (long
last long entry)
entry

01A0 42 4E 00 4F 00 50 00 51 00 52 00 0F 00 27 53 00 BN.O.P.Q.R...'S.
01B0 54 00 55 00 56 00 2E 00 54 00 00 00 58 00 54 00 T.U.V...T...X.T.

01C0 01 41 00 42 00 43 00 44 00 45 00 0F 00 27 46 00 .A.B.C.D.E...'F.
01D0 47 00 48 00 49 00 4A 00 4B 00 00 00 4C 00 4D 00 G.H.I.J.K...L.M.

01E0 41 42 43 44 45 46 7E 31 54 58 54 20 00 AF 78 62 ABCDEF~1TXT ..xb


01F0 2F 2B 30 2B 00 00 59 B9 30 2B 02 00 52 01 00 00 /+0+..Y.0+..R...

last file create


create date last modified time
access size
date
date
last modified first
time cluster

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 37


File Allocation Table (1 of 2)
• A map of all clusters on the disk, showing their
ownership by specific files
• Each entry corresponds to a cluster number
• Each cluster contains one or more sectors
• Each file is represented in the FAT as a linked list,
called a cluster chain.
• Three types of FAT's, named after the length of each
FAT entry:
• FAT-12
• FAT-16
• FAT-32

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 38


File Allocation Table (2 of 2)
• Each entry contains an n-bit integer that identifies the
next entry. (n=12,16, or 32)
• Two cluster chains are shown in the following
diagram, one for File1, and another for File2:

File1: starting cluster number = 1, size = 7 clusters

2 3 4 8 9 10 eof

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

File2: starting cluster number = 5, size = 5 clusters

6 7 11 12 eof

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 39


What's Next

• Disk Storage Systems


• File Systems
• Disk Directory
• Reading and Writing Disk Sectors (7305h)
• System-Level File Functions

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 40


Reading and Writing Disk Sectors (7305h)

• INT 21h, Function 7305h (absolute disk read and


write)
• Reads and writes logical disk sectors
• Runs only in 16-bit Real-address mode
• Does not work under Windows 2000, XP, Vista,
Windows 7
• Tight security!

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 41


DISKIO Structure
• Used by Function 7305h:

DISKIO STRUCT
startSector DWORD 0 ; starting sector number
numSectors WORD 1 ; number of sectors
bufferOfs WORD buffer ; buffer offset
bufferSeg WORD @DATA ; buffer segment
DISKIO ENDS

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 42


Example

Example: Read one or more sectors from drive C:

.data
buffer BYTE 512 DUP(?)
diskStruct DISKIO <>
.code
mov ax,7305h ; absolute Read/Write
mov cx,0FFFFh ; always this value
mov dl,3 ; drive C
mov bx,OFFSET diskStruct
mov si,0 ; read sector
int 21h

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 43


Sector Display Program
Pseudocode:
Ask for starting sector number and drive number
do while (keystroke <> ESC)
Display heading
Read one sector
If MS-DOS error then exit
Display one sector
Wait for keystroke
Increment sector number
end do

View the source code

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 44


What's Next

• Disk Storage Systems


• File Systems
• Disk Directory
• Reading and Writing Disk Sectors (7305h)
• System-Level File Functions

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 45


System-Level File Functions

• Common Disk-Related Functions


• Get Disk Free Space
• Create Subdirectory
• Remove Subdirecrory
• Set Current Directory
• Get Current Directory

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 46


Common Disk-Related Functions

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 47


ExtGetDskFreSpcStruc Structure (1 of 2)

Structure data returned by Fucntion 7303h:

• StructSize: A return value that represents the size of


the ExtGetDskFreSpcStruc structure, in bytes.
• Level: Always 0.
• SectorsPerCluster: The number of sectors inside
each cluster.
• BytesPerSector: The number of bytes in each sector.
• AvailableClusters: The number of available clusters.
• TotalClusters: The total number of clusters in the
volume.

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 48


ExtGetDskFreSpcStruc (2 of 2)
• AvailablePhysSectors: The number of physical sectors available
in the volume, without adjustment for compression.
• TotalPhysSectors: The total number of physical sectors in the
volume, without adjustment for compression.
• AvailableAllocationUnits: The number of available allocation
units in the volume, without adjustment for compression.
• TotalAllocationUnits: The total number of allocation units in the
volume, without adjustment for compression.
• Rsvd: Reserved member.

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 49


Function 7303h – Get Disk Free Space

• AX = 7303h
• ES:DI points to a ExtGetDskFreSpcStruc
• CX = size of the ExtGetDskFreSpcStruc variable
• DS:DX points to a null-terminated string containing
the drive name

View the DiskSpc.asm program

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 50


Create Subdirectory

.data
pathname BYTE "\ASM",0

.code
mov ah,39h ; create subdirectory
mov dx,OFFSET pathname
int 21h
jc DisplayError
.
.
DisplayError:

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 51


Remove Subdirecrory

.data
pathname BYTE 'C:\ASM',0

.code
mov ah,3Ah ; remove subdirectory
mov dx,OFFSET pathname
int 21h
jc DisplayError
.
.
DisplayError:

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 52


Set Current Directory

.data
pathname BYTE "C:\ASM\PROGS",0

.code
mov ah,3Bh ; set current directory
mov dx,OFFSET pathname
int 21h
jc DisplayError
.
.
DisplayError:

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 53


Get Current Directory

.data
pathname BYTE 64 dup(0) ; path stored here by MS-DOS

.code
mov ah,47h ; get current directory path
mov dl,0 ; on default drive
mov si,OFFSET pathname
int 21h
jc DisplayError
.
.
DisplayError:

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 54


Your turn . . .

• Write a program that creates a hidden, read-only


directory named __secret. Create a hidden file inside
the new directory named $$temp. Try to remove the
directory by calling Function 3Ah. Display the error
code returned by MS-DOS.

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 55


Summary
• Disk controller: acts as a broker between the
hardware and the operating system
• Disk characteristics
• composed of tracks, cylinders, sectors
• average seek time, data transfer rate
• Formatting & logical characteristics
• master boot record, contains disk partition table
• clusters – logical storage units
• file allocation table – used by some systems
• directory – root directory, subdirectories

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 56


The End

Irvine, Kip R. Assembly Language for x86 Processors 7/e, 2014. 57

You might also like