续上一篇8086汇编:DOS系统功能调用表举例(INT 21h)
09 向标准输出写字符串
说明:DS:DX,保存字符串地址,字符串以"$"结尾
; write string to standard output
; 09.asm
; masm.exe 09.asm
; link.exe 09.obj
; 09.exe
data segment
s db 'hello, world!', '$'
data ends
code segment
assume ds:data, cs:code
main:
mov ax, data
mov ds, ax
lea dx, s
mov ah, 09h
int 21h
mov ah, 4ch
int 21h
code ends
end main
测试结果
0ah 缓存输入
说明:DS:DX=缓存地址
缓存:偏移0=能够读取的最大字符长度
偏移01=读取的字符个数
偏移02=字符串首地址
; buffered input
; 0a.asm
; masm.exe 0a.asm
; link.exe 0a.obj
; 0a.exe
data segment
buf db 10
db 0
db 10 dup('$')
data ends
code segment
assume ds:data, cs:code
main:
mov ax, data
mov ds, ax
lea dx, buf
mov ah, 0ah
int 21h
mov dl, 10
mov ah, 02h
int 21h
lea dx, [buf+2]
mov ah, 09
int 21h
mov ah, 4ch
int 21h
code ends
end main
测试结果
19h 获取当前默认磁盘
说明:返回值AL=drive(0=A,1=B,2=C等等)
; get current default drive
; 19.asm
; masm.exe 19.asm
; link.exe 19.obj
; 19.exe
data segment
data ends
code segment
assume ds:data, cs:code
main:
mov ax, data
mov ds, ax
mov ah, 19h
int 21h
mov ah, 4ch
int 21h
code ends
end main
测试结果,3=D盘
2ah 获取系统日期
说明:返回值:CX = year (1980-2099) DH = month DL = day AL = day of week (00h=Sunday)
; get system date
; 2a.asm
; masm.exe 2a.asm
; link.exe 2a.obj
; 2a.exe
data segment
data ends
code segment
assume ds:data, cs:code
main:
mov ax, data
mov ds, ax
mov ah, 2ah
int 21h
mov ah, 4ch
int 21h
code ends
end main
测试结果