web siteweb site examplesexamples 1 mode of operation protected mode 4 gb 32-bit address windows,...
Post on 20-Dec-2015
223 views
TRANSCRIPT
1Web site Examples
Mode of Operation
Protected mode 4 GB 32-bit address Windows, Linux
Real-address mode 1 MB space 20-bit address MS-DOS
2Web site Examples
Real-Address mode
1 MB RAM maximum addressable Application programs can access any area of
memory Single tasking Supported by MS-DOS operating system
3Web site Examples
Segmented MemorySegmented memory addressing: absolute (linear) address is a
combination of a 16-bit segment value added to a 16-bit offset
4Web site Examples
Calculating Linear Addresses
Given a segment address, multiply it by 16 (add a hexadecimal zero), and add it to the offset
Example: convert 08F1:0100 to a linear address
Adjusted Segment value: 0 8 F 1 0
Add the offset: 0 1 0 0
Linear address: 0 9 0 1 0
5Web site Examples
Protected Mode
4 GB addressable RAM (00000000 to FFFFFFFFh)
Each program assigned a memory partition which is protected from other programs
Designed for multitasking Supported by Linux & MS-Windows
6Web site Examples
Flat Model All segments are mapped to the entire 32-bit physical address
space of the compter.. Each segment is defined by a segment descriptor, a 64-bit value stored in a table known as the global descriptor table (GDT).
7Web site Examples
Multi-Segment Model Each program has a local descriptor table (LDT)
holds descriptor for each segment used by the program
32-Bit Windows Programming
9Web site Examples
Standard Console Handles
STD_INPUT_HANDLE standard input
STD_OUTPUT_HANDLE standard output
STD_ERROR_HANDLE standard error output
A handle is an unsigned 32-bit integer. The following MS-Windows constants are predefined:
10Web site Examples
GetStdHandle
GetStdHandle returns a handle to a console stream Specify the type of handle (see previous slide) The handle is returned in EAX Prototype:
GetStdHandle PROTO,
nStdHandle:DWORD ; handle type
11Web site Examples
ReadConsole The ReadConsole function provides a convenient
way to read text input and put it in a buffer. Prototype:
ReadConsole PROTO,
handle:DWORD, ; input handle
pBuffer:PTR BYTE, ; pointer to buffer
maxBytes:DWORD, ; number of chars to read
pBytesRead:PTR DWORD, ; ptr to num bytes read
notUsed:DWORD ; (not used)
12Web site Examples
ReadConsole Example
13Web site Examples
ReadConsole Example
14Web site Examples
ReadConsole Example
15Web site Examples
ReadConsole Example
16Web site Examples
WriteConsole The WriteConsole function writes a string to
the screen, using the console output handle. Prototype:
WriteConsole PROTO,
handle:DWORD, ; output handle
pBuffer:PTR BYTE, ; pointer to buffer
bufsize:DWORD, ; size of buffer
pCount:PTR DWORD, ; output count
lpReserved:DWORD ; (not used)
17Web site Examples
WriteConsole Example
18Web site Examples
WriteConsole Example
19Web site Examples
WriteConsole Example
20Web site Examples
CreateFile CreateFile either creates a new file or opens an
existing file. If successful, it returns a handle to the open file; otherwise, it returns a special constant named INVALID_HANDLE_VALUE.
Prototype:
CreateFile PROTO,
pFilename:PTR BYTE, ; ptr to filename
desiredAccess:DWORD, ; access mode
shareMode:DWORD, ; share mode
lpSecurity:DWORD, ; ptr to security attribs
creationDisposition:DWORD, ; file creation options
flagsAndAttributes:DWORD, ; file attributes
htemplate:DWORD ; handle to template file
21Web site Examples
CreateFile Example
INVOKE CreateFile,ADDR filename, ; ptr to filenameGENERIC_READ, ; access modeDO_NOT_SHARE, ; share modeNULL, ; ptr to security attributesOPEN_EXISTING, ; file creation optionsFILE_ATTRIBUTE_NORMAL, ; file attributes0 ; handle to template file
Opens an existing file for reading:
22Web site Examples
CreateFile Example
INVOKE CreateFile,ADDR filename,GENERIC_WRITE, ; access modeDO_NOT_SHARE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
Opens an existing file for writing:
23Web site Examples
CreateFile Example
INVOKE CreateFile,ADDR filename,GENERIC_WRITE,DO_NOT_SHARE,NULL,CREATE_ALWAYS, ; overwrite existing fileFILE_ATTRIBUTE_NORMAL,0
Creates a new file with normal attributes, erasing any existing file by the same name:
24Web site Examples
ReadFile
ReadFile reads text from an input file Prototype:
ReadFile PROTO,
handle:DWORD, ; handle to file
pBuffer:PTR BYTE, ; ptr to buffer
nBufsize:DWORD, ; num bytes to read
pBytesRead:PTR DWORD, ; bytes actually read
pOverlapped:PTR DWORD ; ptr to asynch info
25Web site Examples
ReadFile Example
26Web site Examples
ReadFile Example
27Web site Examples
ReadFile Example
28Web site Examples
WriteFile WriteFile writes data to a file, using an output
handle. The handle can be the screen buffer handle, or it can be one assigned to a text file.
Prototype:WriteFile PROTO,
fileHandle:DWORD, ; output handle
pBuffer:PTR BYTE, ; pointer to buffer
nBufsize:DWORD, ; size of buffer
pBytesWritten:PTR DWORD, ; num bytes written
pOverlapped:PTR DWORD ; ptr to asynch info
29Web site Examples
WriteFile Example
30Web site Examples
WriteFile Example
31Web site Examples
WriteFile Example
16-Bit MS-DOS Programming
33Web site Examples
Interrupt
Do something else, and get interrupted when I/O events happen.
May be triggered by hardware or software.
34Web site Examples
INT I/O Example
35Web site Examples
INT I/O Example
36Web site Examples
Interrupt Vector Processing
37Web site Examples
Interrupt Vector Processing
38Web site Examples
Common Interrupts
INT 10h Video Services INT 16h Keyboard Services INT 17h Printer Services INT 1Ah Time of Day INT 1Ch User Timer Interrupt INT 21h MS-DOS Services