目录 上一页 下一页 下一章

第5章 子程序和串处理 -99-

调 用:INT 21H
返 回:无
  此功能的用法并不难,关键在于缓冲区的格式有些特别:
字节0:缓冲区能容纳的字符数(编程时给出)
字节1:缓冲区中已输入的字符数(DOS返回值)
字节2-缓冲区末尾:存放输入的字符
  程序GETSTR1.ASM是这个功能的应用实例:
GETSTR1.ASM
data

buffer

data
code

main







main
code

segment
assume
db
db
ends
segment
assume
proc
mov
mov
mov
mov
int
mov
int
endp
ends
end

ds:data
10,?
10 dup(20h)


cs:code
far
ax,data
ds,ax
dx,offset buffer
ah,0ah
21h
ah,4ch
21h


main


;定义字符串缓冲区





;初始化DS寄存器指向数据段

;DX寄存器指向字符串缓冲区
;选择DOS API的0AH功能
;等待键盘输入字符串
;结束进程




  这个程序不会在屏幕上显示什么结果,我们的目的是用DEBUG跟踪这个程序来分析DOS的这个功能:
-g=0 8[Enter]
AX=0E8EBX=0000CX=0020DX=0000SP=0000BP=0000SI=0000DI=0000
DS=0E8EES=0E7ESS=0E8ECS=0E8FIP=0008 NV UP EI PL NZ NA PO NC
0E8F:0008B40AMOV AH,0A
  先在CS:0008处打一个断点,执行DOS的0AH功能前我们先来观察一下程序定义的缓冲区的情况。
-d0:f[Enter]0A为缓冲区中最多可存的字符数
0E8E:00000A 00 20 20 20 20 20 20-20 20 20 20 00 00 00 00..          ....
字符计数值预存于缓冲区中的10个空格

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章