SlideShare a Scribd company logo
1 of 47
Assembly Language for Intel-Based
Computers, 4th Edition
Chapter 13: 16-Bit MS-DOS
Programming
(c) Pearson Education, 2002. 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 corrections (Web) Assembly language sources (Web)
Slide show prepared by Kip R. Irvine
Revision date: 08/04/02
Kip R. Irvine
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 2
Chapter Overview
• MS-DOS and the IBM-PC
• MS-DOS Function Calls (INT 21h)
• Standard MS-DOS File I/O Services
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 3
MS-DOS and the IBM-PC
• Real-Address Mode
• MS-DOS Memory Organization
• MS-DOS Memory Map
• Redirecting Input-Output
• Software Interrupts
• INT Instruction
• Interrupt Vectoring Process
• Common Interrupts
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 4
Real-Address Mode
• Real-address mode (16-bit mode) programs have
the following characteristics:
• Max 1 megabyte addressable RAM
• Single tasking
• No memory boundary protection
• Offsets are 16 bits
• IBM PC-DOS: first Real-address OS for IBM-PC
• Derived by Microsoft from Gary Kildall's Digital
Research CP/M
• Later renamed to MS-DOS, owned by Microsoft
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 5
MS-DOS Memory Organization
• Interrupt Vector Table
• BIOS & DOS data
• Software BIOS
• MS-DOS kernel
• Resident command processor
• Transient programs
• Video graphics & text
• Reserved (device controllers)
• ROM BIOS
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 6
MS-DOS Memory Map
ROM BIOS
Reserved
Video Text & Graphics
Video Graphics
Resident Command Processor
DOS Kernel, Device Drivers
Software BIOS
BIOS & DOS Data
Interrupt Vector Table
FFFFF
00400
A0000
B8000
C0000
F0000
00000
Address
640K RAM
Transient Program Area
(available for application programs)
Transient Command Processor
VRAM
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 7
Redirecting Input-Output (1 of 2)
• Input-output devices and files are interchangeable
• Three primary types of I/O:
• Standard input (console, keyboard)
• Standard output (console, display)
• Standard error (console, display)
• Symbols borrowed from Unix:
• < symbol: get input from
• > symbol: send output to
• | symbol: pipe output from one process to another
• Predefined device names:
• PRN, CON, LPT1, LPT2, NUL, COM1, COM2
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 8
Redirecting Input-Output (2 of 2)
• Standard input, standard output can both be redirected
• Standard error cannot be redirected
• Suppose we have created a program named
myprog.exe that reads from standard input and writes
to standard output. Following are MS-DOS commands
that demonstrate various types of redirection:
myprog < infile.txt
myprog > outfile.txt
myprog < infile.txt > outfile.txt
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 9
INT Instruction
• The INT instruction executes a software interrupt.
• The code that handles the interrupt is called an
interrupt handler.
• Syntax: INT number
(number = 0..FFh)
The Interrupt Vector Table (IVT) holds a 32-bit segment-
offset address for each possible interrupt handler.
Interrupt Service Routine (ISR) is another name for interrupt
handler.
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 10
Interrupt Vectoring Process
mov...
int 10h
add...
F000:F065
3069 F000:AB62
F000:F065
F066
F067
F068
.
.
sti
cld
push es
.
.
IRET
1 2
3
Calling program
(entry for INT 10)
Interrupt Vector Table
Interrupt Handler
4
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 11
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
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 12
MS-DOS Function Calls (INT 21h)
• ASCII Control Characters
• Selected Output Functions
• Selected Input Functions
• Example: String Encryption
• Date/Time Functions
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 13
INT 4Ch: Terminate Process
• Ends the current process (program), returns an
optional 8-bit return code to the calling process.
• A return code of 0 usually indicates successful
completion.
mov ah,4Ch ; terminate process
mov al,0 ; return code
int 21h
; Same as:
.EXIT 0
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 14
Selected Output Functions
• ASCII control characters
• 02h, 06h - Write character to standard output
• 05h - Write character to default printer
• 09h - Write string to standard output
• 40h - Write string to file or device
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 15
ASCII Control Characters
• 08h - Backspace (moves one column to the left)
• 09h - Horizontal tab (skips forward n columns)
• 0Ah - Line feed (moves to next output line)
• 0Ch - Form feed (moves to next printer page)
• 0Dh - Carriage return (moves to leftmost output
column)
• 1Bh - Escape character
Many INT 21h functions act upon the following
control characters:
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 16
INT 21h Functions 02h and 06h:
Write Character to Standard Output
Write the letter 'A' to standard output:
mov ah,02h
mov dl,’A’
int 21h
Write a backspace to standard output:
mov ah,06h
mov dl,08h
int 21h
or: mov ah,2
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 17
INT 21h Function 05h:
Write Character to Default Printer
Write the letter 'A':
mov ah,05h
mov dl,65
int 21h
Write a horizontal tab:
mov ah,05h
mov dl,09h
int 21h
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 18
INT 21h Function 09h:
Write String to Standard Output
.data
string BYTE "This is a string$"
.code
mov ah,9
mov dx,OFFSET string
int 21h
• The string must be terminated by a '$' character.
• DS must point to the string's segment, and DX
must contain the string's offset:
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 19
INT 21h Function 40h:
Write String to File or Device
.data
message "Writing a string to the console"
bytesWritten WORD ?
.code
mov ah,40h
mov bx,1
mov cx,LENGTHOF message
mov dx,OFFSET message
int 21h
mov bytesWritten,ax
Input: BX = file or device handle (console = 1), CX =
number of bytes to write, DS:DX = address of array
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 20
Selected Input Functions
• 01h, 06h - Read character from standard input
• 0Ah - Read array of buffered characters from
standard input
• 0Bh - Get status of the standard input buffer
• 3Fh - Read from file or device
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 21
INT 21h Function 01h:
Read single character from standard input
.data
char BYTE ?
.code
mov ah,01h
int 21h
mov char,al
• Echoes the input character
• Waits for input if the buffer is empty
• Checks for Ctrl-Break (^C)
• Acts on control codes such as horizontal Tab
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 22
INT 21h Function 06h:
Read character from standard input without waiting
.data
char BYTE ?
.code
L1: mov ah,06h ; keyboard input
mov dl,0FFh ; don't wait for input
int 21h
jz L1 ; no character? repeat loop
mov char,al ; character pressed: save it
call DumpRegs ; display registers
• Does not echo the input character
• Does not wait for input (use the Zero flag to check for
an input character)
• Example: repeats loop until a character is pressed.
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 23
INT 21h Function 0Ah:
Read buffered array from standard input (1 of 2)
count = 80
KEYBOARD STRUCT
maxInput BYTE count ; max chars to input
inputCount BYTE ? ; actual input count
buffer BYTE count DUP(?) ; holds input chars
KEYBOARD ENDS
• Requires a predefined structure to be set up that
describes the maximum input size and holds the
input characters.
• Example:
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 24
INT 21h Function 0Ah (2 of 2)
.data
kybdData KEYBOARD <>
.code
mov ah,0Ah
mov dx,OFFSET kybdData
int 21h
Executing the interrupt:
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 25
INT 21h Function 0Bh:
Get status of standard input buffer
L1: mov ah,0Bh ; get buffer status
int 21h
cmp al,0 ; buffer empty?
je L1 ; yes: loop again
mov ah,1 ; no: input the key
int 21h
mov char,al ; and save it
• Can be interrupted by Ctrl-Break (^C)
• Example: loop until a key is pressed. Save the
key in a variable:
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 26
Example: String Encryption
XORVAL = 239 ; any value between 0-255
.code
main PROC
mov ax,@data
mov ds,ax
L1: mov ah,6 ; direct console input
mov dl,0FFh ; don't wait for character
int 21h ; AL = character
jz L2 ; quit if ZF = 1 (EOF)
xor al,XORVAL
mov ah,6 ; write to output
mov dl,al
int 21h
jmp L1 ; repeat the loop
L2: exit
Reads from standard input, encrypts each byte, writes to
standard output.
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 27
INT 21h Function 3Fh:
Read from file or device
.data
inputBuffer BYTE 127 dup(0)
bytesRead WORD ?
.code
mov ah,3Fh
mov bx,0 ; keyboard handle
mov cx,127 ; max bytes to read
mov dx,OFFSET inputBuffer ; target location
int 21h
mov bytesRead,ax ; save character count
• Reads a block of bytes.
• Can be interrupted by Ctrl-Break (^C)
• Example: Read string from keyboard:
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 28
Date/Time Functions
• 2Ah - Get system date
• 2Bh - Set system date *
• 2Ch - Get system time
• 2Dh - Set system time *
* may be restricted by your user profile if running a console
window under Windows NT, 2000, and XP.
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 29
INT 21h Function 2Ah:
Get system date
mov ah,2Ah
int 21h
mov year,cx
mov month,dh
mov day,dl
mov dayOfWeek,al
• Returns year in CX, month in DH, day in DL, and
day of week in AL
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 30
INT 21h Function 2Bh:
Set system date
mov ah,2Bh
mov cx,year
mov dh,month
mov dl,day
int 21h
cmp al,0
jne failed
• Sets the system date. AL = 0 if the function was
not successful in modifying the date.
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 31
INT 21h Function 2Ch:
Get system time
mov ah,2Ch
int 21h
mov hours,ch
mov minutes,cl
mov seconds,dh
• Returns hours (0-23) in CH, minutes (0-59) in
CL, and seconds (0-59) in DH, and hundredths
(0-99) in DL.
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 32
INT 21h Function 2Dh:
Set system time
mov ah,2Dh
mov ch,hours
mov cl,minutes
mov dh,seconds
int 21h
cmp al,0
jne failed
• Sets the system date. AL = 0 if the function was
not successful in modifying the time.
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 33
Example: Displaying the Date and Time
• Displays the system date and time, using INT 21h
Functions 2Ah and 2Ch.
• Demonstrates simple date formatting
• View the source code
• Sample output:
Date: 12-8-2001, Time: 23:01:23
ToDo: write a procedure named ShowDate that displays any date
in mm-dd-yyyy format.
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 34
Standard MS-DOS File I/O Services
• 716Ch - Create or open file
• 3Eh - Close file handle
• 42h - Move file pointer
• 5706h - Get file creation date and time
• Selected Irvine16 Library Procedures
• Example: Read and Copy a Text File
• Reading the MS-DOS Command Tail
• Example: Creating a Binary File
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 35
INT 21h Function 716Ch:
Create or open file
• AX = 716Ch
• BX = access mode (0 = read, 1 = write, 2 = read/write)
• CX = attributes (0 = normal, 1 = read only, 2 = hidden,
3 = system, 8 = volume ID, 20h = archive)
• DX = action (1 = open, 2 = truncate, 10h = create)
• DS:SI = segment/offset of filename
• DI = alias hint (optional)
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 36
Example: Create a New File
mov ax,716Ch ; extended open/create
mov bx,2 ; read-write
mov cx,0 ; normal attribute
mov dx,10h + 02h ; action: create + truncate
mov si,OFFSET Filename
int 21h
jc failed
mov handle,ax ; file handle
mov actionTaken,cx ; action taken to open file
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 37
Example: Open an Existing File
mov ax,716Ch ; extended open/create
mov bx,0 ; read-only
mov cx,0 ; normal attribute
mov dx,1 ; open existing file
mov si,OFFSET Filename
int 21h
jc failed
mov handle,ax ; file handle
mov actionTaken,cx ; action taken to open file
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 38
INT 21h Function 3Eh:
Close file handle
.data
filehandle WORD ?
.code
mov ah,3Eh
mov bx,filehandle
int 21h
jc failed
• Use the same file handle that was returned by
INT 21h when the file was opened.
• Example:
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 39
INT 21h Function 42h:
Move file pointer
mov ah,42h
mov al,0 ; offset from beginning
mov bx,handle
mov cx,offsetHi
mov dx,offsetLo
int 21h
AL indicates how the pointer's offset is calculated:
0: Offset from the beginning of the file
1: Offset from the current pointer location
2: Offset from the end of the file
Permits random access to a file (text or binary).
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 40
INT 21h Function 5706h:
Get file creation date and time
mov ax,5706h
mov bx,handle ; handle of open file
int 21h
jc error
mov date,dx
mov time,cx
mov milliseconds,si
• Obtains the date and time when a file was created
(not necessarily the same date and time when the
file was last modified or accessed.)
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 41
Selected Irvine16 Library Procedures
• 16-Bit ReadString procedure
• 16-Bit WriteString procedure
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 42
16-Bit ReadString Procedure
ReadString PROC
push cx ; save registers
push si
push cx ; save character count
mov si,dx ; point to input buffer
L1: mov ah,1 ; function: keyboard input
int 21h ; returns character in AL
cmp al,0Dh ; end of line?
je L2 ; yes: exit
mov [si],al ; no: store the character
inc si ; increment buffer pointer
loop L1 ; loop until CX=0
L2: mov BYTE PTR [si],0 ; insert null byte
pop ax ; original digit count
sub ax,cx ; AX = size of input string
pop si ; restore registers
pop cx
ret
ReadString ENDP ; returns AX = size of string
Receives: DX points to an input buffer and CX indicates the
maximum number of characters the user can input.
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 43
16-Bit WriteString Procedure
WriteString PROC
pusha
INVOKE Str_length,dx ; AX = string length
mov cx,ax ; CX = number of bytes
mov ah,40h ; write to file or device
mov bx,1 ; standard output handle
int 21h ; call MS-DOS
popa
ret
WriteString ENDP
Receives: DX contains the offset of a null-terminated string.
(May be different from the version printed on page 482.)
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 44
Example: Read and Copy a Text File
• The Readfile.asm program demonstrates several INT
21h functions:
• Function 716Ch: Create new file or open existing file
• Function 3Fh: Read from file or device
• Function 40h: Write to file or device
• Function 3Eh: Close file handle
View the source code
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 45
Reading the MS-DOS Command Tail
• When a program runs, any additional text on its
command line is automatically stored in the 128-byte
MS-DOS command tail area, at offset 80h in the
program segment prefix (PSP).
• Example: run a program named attr.exe and pass
it "FILE1.DOC" as the command tail:
0A 20 46 49 4C 45 31 2E 44 43
4F 0D
80 81 82 83 84 85 86 87 88 89 8A 8B
Offset:
Contents:
F I L E 1 . D O C
View the Get_CommandTail library procedure source code.
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 46
Example: Creating a Binary File
• A binary file contains fields that are are generally not
recognizable when displayed on the screen.
• Advantage: Reduces I/O processing time
• Example: translating a 5-digit ASCII integer to binary
causes approximately 100 instructions to execute.
• Disadvantage: may require more disk space
• Example: array of 4 doublewords:
• "795 43 1234 2" - requires 13 bytes in ASCII
• requires 16 bytes in binary
Web site Examples
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 47
The End

More Related Content

Similar to MS-DOS 16-Bit Programming Chapter

Chapter 1SyllabusCatalog Description Computer structu
Chapter 1SyllabusCatalog Description Computer structuChapter 1SyllabusCatalog Description Computer structu
Chapter 1SyllabusCatalog Description Computer structuEstelaJeffery653
 
Part III: Assembly Language
Part III: Assembly LanguagePart III: Assembly Language
Part III: Assembly LanguageAhmed M. Abed
 
Porting To Symbian
Porting To SymbianPorting To Symbian
Porting To SymbianMark Wilcox
 
PIL - A Platform Independent Language
PIL - A Platform Independent LanguagePIL - A Platform Independent Language
PIL - A Platform Independent Languagezefhemel
 
Microprocessor system - summarize
Microprocessor system - summarizeMicroprocessor system - summarize
Microprocessor system - summarizeHisham Mat Hussin
 
C101 – Intro to Programming with C
C101 – Intro to Programming with CC101 – Intro to Programming with C
C101 – Intro to Programming with Cgpsoft_sk
 
Structure-Compiler-phases information about basics of compiler. Pdfpdf
Structure-Compiler-phases information  about basics of compiler. PdfpdfStructure-Compiler-phases information  about basics of compiler. Pdfpdf
Structure-Compiler-phases information about basics of compiler. Pdfpdfovidlivi91
 
Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...Bilal Amjad
 
isa architecture
isa architectureisa architecture
isa architectureAJAL A J
 
Revelation pyconuk2016
Revelation pyconuk2016Revelation pyconuk2016
Revelation pyconuk2016Sarah Mount
 
Vintage Computing Festival Midwest 18 2023-09-09 What's In A Terminal.pdf
Vintage Computing Festival Midwest 18 2023-09-09 What's In A Terminal.pdfVintage Computing Festival Midwest 18 2023-09-09 What's In A Terminal.pdf
Vintage Computing Festival Midwest 18 2023-09-09 What's In A Terminal.pdfRichard Thomson
 
Introduction to Computers, Programs, and Java
Introduction to Computers, Programs, and JavaIntroduction to Computers, Programs, and Java
Introduction to Computers, Programs, and Javanaimanighat
 
0-Slot14-15-16-Libraries.pdf
0-Slot14-15-16-Libraries.pdf0-Slot14-15-16-Libraries.pdf
0-Slot14-15-16-Libraries.pdfssusere19c741
 
C from hello world to 010101
C from hello world to 010101C from hello world to 010101
C from hello world to 010101Bellaj Badr
 

Similar to MS-DOS 16-Bit Programming Chapter (20)

Chapter 1SyllabusCatalog Description Computer structu
Chapter 1SyllabusCatalog Description Computer structuChapter 1SyllabusCatalog Description Computer structu
Chapter 1SyllabusCatalog Description Computer structu
 
Chapt 01
Chapt 01Chapt 01
Chapt 01
 
Part III: Assembly Language
Part III: Assembly LanguagePart III: Assembly Language
Part III: Assembly Language
 
ISA.pptx
ISA.pptxISA.pptx
ISA.pptx
 
Chap 02[1]
Chap 02[1]Chap 02[1]
Chap 02[1]
 
Porting To Symbian
Porting To SymbianPorting To Symbian
Porting To Symbian
 
PIL - A Platform Independent Language
PIL - A Platform Independent LanguagePIL - A Platform Independent Language
PIL - A Platform Independent Language
 
Microprocessor system - summarize
Microprocessor system - summarizeMicroprocessor system - summarize
Microprocessor system - summarize
 
Files 3-handouts lecture-12
Files 3-handouts lecture-12Files 3-handouts lecture-12
Files 3-handouts lecture-12
 
C101 – Intro to Programming with C
C101 – Intro to Programming with CC101 – Intro to Programming with C
C101 – Intro to Programming with C
 
Structure-Compiler-phases information about basics of compiler. Pdfpdf
Structure-Compiler-phases information  about basics of compiler. PdfpdfStructure-Compiler-phases information  about basics of compiler. Pdfpdf
Structure-Compiler-phases information about basics of compiler. Pdfpdf
 
Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...
Assembly Language Programming By Ytha Yu, Charles Marut Chap 4 (Introduction ...
 
isa architecture
isa architectureisa architecture
isa architecture
 
Revelation pyconuk2016
Revelation pyconuk2016Revelation pyconuk2016
Revelation pyconuk2016
 
Vintage Computing Festival Midwest 18 2023-09-09 What's In A Terminal.pdf
Vintage Computing Festival Midwest 18 2023-09-09 What's In A Terminal.pdfVintage Computing Festival Midwest 18 2023-09-09 What's In A Terminal.pdf
Vintage Computing Festival Midwest 18 2023-09-09 What's In A Terminal.pdf
 
Patt patelch04
Patt patelch04Patt patelch04
Patt patelch04
 
Introduction to Computers, Programs, and Java
Introduction to Computers, Programs, and JavaIntroduction to Computers, Programs, and Java
Introduction to Computers, Programs, and Java
 
0-Slot14-15-16-Libraries.pdf
0-Slot14-15-16-Libraries.pdf0-Slot14-15-16-Libraries.pdf
0-Slot14-15-16-Libraries.pdf
 
C from hello world to 010101
C from hello world to 010101C from hello world to 010101
C from hello world to 010101
 
Lecture1 introduction compilers
Lecture1 introduction compilersLecture1 introduction compilers
Lecture1 introduction compilers
 

Recently uploaded

Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxpurnimasatapathy1234
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 
Introduction to Microprocesso programming and interfacing.pptx
Introduction to Microprocesso programming and interfacing.pptxIntroduction to Microprocesso programming and interfacing.pptx
Introduction to Microprocesso programming and interfacing.pptxvipinkmenon1
 
Heart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxHeart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxPoojaBan
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionDr.Costas Sachpazis
 
HARMONY IN THE HUMAN BEING - Unit-II UHV-2
HARMONY IN THE HUMAN BEING - Unit-II UHV-2HARMONY IN THE HUMAN BEING - Unit-II UHV-2
HARMONY IN THE HUMAN BEING - Unit-II UHV-2RajaP95
 
microprocessor 8085 and its interfacing
microprocessor 8085  and its interfacingmicroprocessor 8085  and its interfacing
microprocessor 8085 and its interfacingjaychoudhary37
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130Suhani Kapoor
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...VICTOR MAESTRE RAMIREZ
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130Suhani Kapoor
 
Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.eptoze12
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidNikhilNagaraju
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxbritheesh05
 
Internship report on mechanical engineering
Internship report on mechanical engineeringInternship report on mechanical engineering
Internship report on mechanical engineeringmalavadedarshan25
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 

Recently uploaded (20)

Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptx
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
 
Introduction to Microprocesso programming and interfacing.pptx
Introduction to Microprocesso programming and interfacing.pptxIntroduction to Microprocesso programming and interfacing.pptx
Introduction to Microprocesso programming and interfacing.pptx
 
Heart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxHeart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptx
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
 
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
 
HARMONY IN THE HUMAN BEING - Unit-II UHV-2
HARMONY IN THE HUMAN BEING - Unit-II UHV-2HARMONY IN THE HUMAN BEING - Unit-II UHV-2
HARMONY IN THE HUMAN BEING - Unit-II UHV-2
 
microprocessor 8085 and its interfacing
microprocessor 8085  and its interfacingmicroprocessor 8085  and its interfacing
microprocessor 8085 and its interfacing
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
 
Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.
 
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfid
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptx
 
Internship report on mechanical engineering
Internship report on mechanical engineeringInternship report on mechanical engineering
Internship report on mechanical engineering
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 

MS-DOS 16-Bit Programming Chapter

  • 1. Assembly Language for Intel-Based Computers, 4th Edition Chapter 13: 16-Bit MS-DOS Programming (c) Pearson Education, 2002. 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 corrections (Web) Assembly language sources (Web) Slide show prepared by Kip R. Irvine Revision date: 08/04/02 Kip R. Irvine
  • 2. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 2 Chapter Overview • MS-DOS and the IBM-PC • MS-DOS Function Calls (INT 21h) • Standard MS-DOS File I/O Services
  • 3. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 3 MS-DOS and the IBM-PC • Real-Address Mode • MS-DOS Memory Organization • MS-DOS Memory Map • Redirecting Input-Output • Software Interrupts • INT Instruction • Interrupt Vectoring Process • Common Interrupts
  • 4. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 4 Real-Address Mode • Real-address mode (16-bit mode) programs have the following characteristics: • Max 1 megabyte addressable RAM • Single tasking • No memory boundary protection • Offsets are 16 bits • IBM PC-DOS: first Real-address OS for IBM-PC • Derived by Microsoft from Gary Kildall's Digital Research CP/M • Later renamed to MS-DOS, owned by Microsoft
  • 5. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 5 MS-DOS Memory Organization • Interrupt Vector Table • BIOS & DOS data • Software BIOS • MS-DOS kernel • Resident command processor • Transient programs • Video graphics & text • Reserved (device controllers) • ROM BIOS
  • 6. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 6 MS-DOS Memory Map ROM BIOS Reserved Video Text & Graphics Video Graphics Resident Command Processor DOS Kernel, Device Drivers Software BIOS BIOS & DOS Data Interrupt Vector Table FFFFF 00400 A0000 B8000 C0000 F0000 00000 Address 640K RAM Transient Program Area (available for application programs) Transient Command Processor VRAM
  • 7. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 7 Redirecting Input-Output (1 of 2) • Input-output devices and files are interchangeable • Three primary types of I/O: • Standard input (console, keyboard) • Standard output (console, display) • Standard error (console, display) • Symbols borrowed from Unix: • < symbol: get input from • > symbol: send output to • | symbol: pipe output from one process to another • Predefined device names: • PRN, CON, LPT1, LPT2, NUL, COM1, COM2
  • 8. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 8 Redirecting Input-Output (2 of 2) • Standard input, standard output can both be redirected • Standard error cannot be redirected • Suppose we have created a program named myprog.exe that reads from standard input and writes to standard output. Following are MS-DOS commands that demonstrate various types of redirection: myprog < infile.txt myprog > outfile.txt myprog < infile.txt > outfile.txt
  • 9. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 9 INT Instruction • The INT instruction executes a software interrupt. • The code that handles the interrupt is called an interrupt handler. • Syntax: INT number (number = 0..FFh) The Interrupt Vector Table (IVT) holds a 32-bit segment- offset address for each possible interrupt handler. Interrupt Service Routine (ISR) is another name for interrupt handler.
  • 10. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 10 Interrupt Vectoring Process mov... int 10h add... F000:F065 3069 F000:AB62 F000:F065 F066 F067 F068 . . sti cld push es . . IRET 1 2 3 Calling program (entry for INT 10) Interrupt Vector Table Interrupt Handler 4
  • 11. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 11 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
  • 12. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 12 MS-DOS Function Calls (INT 21h) • ASCII Control Characters • Selected Output Functions • Selected Input Functions • Example: String Encryption • Date/Time Functions
  • 13. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 13 INT 4Ch: Terminate Process • Ends the current process (program), returns an optional 8-bit return code to the calling process. • A return code of 0 usually indicates successful completion. mov ah,4Ch ; terminate process mov al,0 ; return code int 21h ; Same as: .EXIT 0
  • 14. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 14 Selected Output Functions • ASCII control characters • 02h, 06h - Write character to standard output • 05h - Write character to default printer • 09h - Write string to standard output • 40h - Write string to file or device
  • 15. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 15 ASCII Control Characters • 08h - Backspace (moves one column to the left) • 09h - Horizontal tab (skips forward n columns) • 0Ah - Line feed (moves to next output line) • 0Ch - Form feed (moves to next printer page) • 0Dh - Carriage return (moves to leftmost output column) • 1Bh - Escape character Many INT 21h functions act upon the following control characters:
  • 16. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 16 INT 21h Functions 02h and 06h: Write Character to Standard Output Write the letter 'A' to standard output: mov ah,02h mov dl,’A’ int 21h Write a backspace to standard output: mov ah,06h mov dl,08h int 21h or: mov ah,2
  • 17. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 17 INT 21h Function 05h: Write Character to Default Printer Write the letter 'A': mov ah,05h mov dl,65 int 21h Write a horizontal tab: mov ah,05h mov dl,09h int 21h
  • 18. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 18 INT 21h Function 09h: Write String to Standard Output .data string BYTE "This is a string$" .code mov ah,9 mov dx,OFFSET string int 21h • The string must be terminated by a '$' character. • DS must point to the string's segment, and DX must contain the string's offset:
  • 19. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 19 INT 21h Function 40h: Write String to File or Device .data message "Writing a string to the console" bytesWritten WORD ? .code mov ah,40h mov bx,1 mov cx,LENGTHOF message mov dx,OFFSET message int 21h mov bytesWritten,ax Input: BX = file or device handle (console = 1), CX = number of bytes to write, DS:DX = address of array
  • 20. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 20 Selected Input Functions • 01h, 06h - Read character from standard input • 0Ah - Read array of buffered characters from standard input • 0Bh - Get status of the standard input buffer • 3Fh - Read from file or device
  • 21. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 21 INT 21h Function 01h: Read single character from standard input .data char BYTE ? .code mov ah,01h int 21h mov char,al • Echoes the input character • Waits for input if the buffer is empty • Checks for Ctrl-Break (^C) • Acts on control codes such as horizontal Tab
  • 22. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 22 INT 21h Function 06h: Read character from standard input without waiting .data char BYTE ? .code L1: mov ah,06h ; keyboard input mov dl,0FFh ; don't wait for input int 21h jz L1 ; no character? repeat loop mov char,al ; character pressed: save it call DumpRegs ; display registers • Does not echo the input character • Does not wait for input (use the Zero flag to check for an input character) • Example: repeats loop until a character is pressed.
  • 23. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 23 INT 21h Function 0Ah: Read buffered array from standard input (1 of 2) count = 80 KEYBOARD STRUCT maxInput BYTE count ; max chars to input inputCount BYTE ? ; actual input count buffer BYTE count DUP(?) ; holds input chars KEYBOARD ENDS • Requires a predefined structure to be set up that describes the maximum input size and holds the input characters. • Example:
  • 24. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 24 INT 21h Function 0Ah (2 of 2) .data kybdData KEYBOARD <> .code mov ah,0Ah mov dx,OFFSET kybdData int 21h Executing the interrupt:
  • 25. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 25 INT 21h Function 0Bh: Get status of standard input buffer L1: mov ah,0Bh ; get buffer status int 21h cmp al,0 ; buffer empty? je L1 ; yes: loop again mov ah,1 ; no: input the key int 21h mov char,al ; and save it • Can be interrupted by Ctrl-Break (^C) • Example: loop until a key is pressed. Save the key in a variable:
  • 26. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 26 Example: String Encryption XORVAL = 239 ; any value between 0-255 .code main PROC mov ax,@data mov ds,ax L1: mov ah,6 ; direct console input mov dl,0FFh ; don't wait for character int 21h ; AL = character jz L2 ; quit if ZF = 1 (EOF) xor al,XORVAL mov ah,6 ; write to output mov dl,al int 21h jmp L1 ; repeat the loop L2: exit Reads from standard input, encrypts each byte, writes to standard output.
  • 27. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 27 INT 21h Function 3Fh: Read from file or device .data inputBuffer BYTE 127 dup(0) bytesRead WORD ? .code mov ah,3Fh mov bx,0 ; keyboard handle mov cx,127 ; max bytes to read mov dx,OFFSET inputBuffer ; target location int 21h mov bytesRead,ax ; save character count • Reads a block of bytes. • Can be interrupted by Ctrl-Break (^C) • Example: Read string from keyboard:
  • 28. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 28 Date/Time Functions • 2Ah - Get system date • 2Bh - Set system date * • 2Ch - Get system time • 2Dh - Set system time * * may be restricted by your user profile if running a console window under Windows NT, 2000, and XP.
  • 29. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 29 INT 21h Function 2Ah: Get system date mov ah,2Ah int 21h mov year,cx mov month,dh mov day,dl mov dayOfWeek,al • Returns year in CX, month in DH, day in DL, and day of week in AL
  • 30. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 30 INT 21h Function 2Bh: Set system date mov ah,2Bh mov cx,year mov dh,month mov dl,day int 21h cmp al,0 jne failed • Sets the system date. AL = 0 if the function was not successful in modifying the date.
  • 31. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 31 INT 21h Function 2Ch: Get system time mov ah,2Ch int 21h mov hours,ch mov minutes,cl mov seconds,dh • Returns hours (0-23) in CH, minutes (0-59) in CL, and seconds (0-59) in DH, and hundredths (0-99) in DL.
  • 32. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 32 INT 21h Function 2Dh: Set system time mov ah,2Dh mov ch,hours mov cl,minutes mov dh,seconds int 21h cmp al,0 jne failed • Sets the system date. AL = 0 if the function was not successful in modifying the time.
  • 33. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 33 Example: Displaying the Date and Time • Displays the system date and time, using INT 21h Functions 2Ah and 2Ch. • Demonstrates simple date formatting • View the source code • Sample output: Date: 12-8-2001, Time: 23:01:23 ToDo: write a procedure named ShowDate that displays any date in mm-dd-yyyy format.
  • 34. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 34 Standard MS-DOS File I/O Services • 716Ch - Create or open file • 3Eh - Close file handle • 42h - Move file pointer • 5706h - Get file creation date and time • Selected Irvine16 Library Procedures • Example: Read and Copy a Text File • Reading the MS-DOS Command Tail • Example: Creating a Binary File
  • 35. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 35 INT 21h Function 716Ch: Create or open file • AX = 716Ch • BX = access mode (0 = read, 1 = write, 2 = read/write) • CX = attributes (0 = normal, 1 = read only, 2 = hidden, 3 = system, 8 = volume ID, 20h = archive) • DX = action (1 = open, 2 = truncate, 10h = create) • DS:SI = segment/offset of filename • DI = alias hint (optional)
  • 36. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 36 Example: Create a New File mov ax,716Ch ; extended open/create mov bx,2 ; read-write mov cx,0 ; normal attribute mov dx,10h + 02h ; action: create + truncate mov si,OFFSET Filename int 21h jc failed mov handle,ax ; file handle mov actionTaken,cx ; action taken to open file
  • 37. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 37 Example: Open an Existing File mov ax,716Ch ; extended open/create mov bx,0 ; read-only mov cx,0 ; normal attribute mov dx,1 ; open existing file mov si,OFFSET Filename int 21h jc failed mov handle,ax ; file handle mov actionTaken,cx ; action taken to open file
  • 38. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 38 INT 21h Function 3Eh: Close file handle .data filehandle WORD ? .code mov ah,3Eh mov bx,filehandle int 21h jc failed • Use the same file handle that was returned by INT 21h when the file was opened. • Example:
  • 39. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 39 INT 21h Function 42h: Move file pointer mov ah,42h mov al,0 ; offset from beginning mov bx,handle mov cx,offsetHi mov dx,offsetLo int 21h AL indicates how the pointer's offset is calculated: 0: Offset from the beginning of the file 1: Offset from the current pointer location 2: Offset from the end of the file Permits random access to a file (text or binary).
  • 40. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 40 INT 21h Function 5706h: Get file creation date and time mov ax,5706h mov bx,handle ; handle of open file int 21h jc error mov date,dx mov time,cx mov milliseconds,si • Obtains the date and time when a file was created (not necessarily the same date and time when the file was last modified or accessed.)
  • 41. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 41 Selected Irvine16 Library Procedures • 16-Bit ReadString procedure • 16-Bit WriteString procedure
  • 42. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 42 16-Bit ReadString Procedure ReadString PROC push cx ; save registers push si push cx ; save character count mov si,dx ; point to input buffer L1: mov ah,1 ; function: keyboard input int 21h ; returns character in AL cmp al,0Dh ; end of line? je L2 ; yes: exit mov [si],al ; no: store the character inc si ; increment buffer pointer loop L1 ; loop until CX=0 L2: mov BYTE PTR [si],0 ; insert null byte pop ax ; original digit count sub ax,cx ; AX = size of input string pop si ; restore registers pop cx ret ReadString ENDP ; returns AX = size of string Receives: DX points to an input buffer and CX indicates the maximum number of characters the user can input.
  • 43. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 43 16-Bit WriteString Procedure WriteString PROC pusha INVOKE Str_length,dx ; AX = string length mov cx,ax ; CX = number of bytes mov ah,40h ; write to file or device mov bx,1 ; standard output handle int 21h ; call MS-DOS popa ret WriteString ENDP Receives: DX contains the offset of a null-terminated string. (May be different from the version printed on page 482.)
  • 44. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 44 Example: Read and Copy a Text File • The Readfile.asm program demonstrates several INT 21h functions: • Function 716Ch: Create new file or open existing file • Function 3Fh: Read from file or device • Function 40h: Write to file or device • Function 3Eh: Close file handle View the source code
  • 45. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 45 Reading the MS-DOS Command Tail • When a program runs, any additional text on its command line is automatically stored in the 128-byte MS-DOS command tail area, at offset 80h in the program segment prefix (PSP). • Example: run a program named attr.exe and pass it "FILE1.DOC" as the command tail: 0A 20 46 49 4C 45 31 2E 44 43 4F 0D 80 81 82 83 84 85 86 87 88 89 8A 8B Offset: Contents: F I L E 1 . D O C View the Get_CommandTail library procedure source code.
  • 46. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 46 Example: Creating a Binary File • A binary file contains fields that are are generally not recognizable when displayed on the screen. • Advantage: Reduces I/O processing time • Example: translating a 5-digit ASCII integer to binary causes approximately 100 instructions to execute. • Disadvantage: may require more disk space • Example: array of 4 doublewords: • "795 43 1234 2" - requires 13 bytes in ASCII • requires 16 bytes in binary
  • 47. Web site Examples Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 47 The End