|
int 21h ;43.
mov dx,offset buffer ;44.取缓冲区数据地址
mov cx,512 ;45.
mov bx,ax ;46.
mov ah,40h ;47.写文件
int 21h ;48.
mov ah,3eh ;49.关闭文件
int 21h ;50.
mov ah,4ch ;51.返回系统
int 21h ;52.
code ends ;53.
end start ;54.程序结束
源程序解释
在对汇编源程序进行解释的时候,有些属于汇编程序的基本格式和基本语法,就不再介绍了。大家可以看看汇编语言的基础教程,这一类的书是很多的。
第2行定义了缓冲区内的一个字符串,该字符串是作为提示行输出到屏幕的。因为输出字符串是由INT21H中断里的09H号DOS功能调用完成的,所以字符串必须以“$”作为结束符。
第3-5行在内存中开辟一块缓冲区,用来存储由键盘输入的文件名。
第6行在内存中开辟一块缓冲区,用来存储512字节扇区数据。
第7行在内存中开辟一块缓冲区,准备转存键盘输入的文件名。前面已经将文件名存入缓冲区里了,为什么还要转存呢?
因为由键盘输入的表示文件名的字符串,是由0aH号DOS功能调用接收完成的。该功能调用向缓冲区存入字符串时,从第三个字节开始存放字符串的首字节。缓冲区的第一个字节设置为缓冲区的最大容量,属于功能调用的入口参数。缓冲区的第二个字节存放实际读入的字符数(回车符除外),属于功能调用的出口参数,是在键盘输入结束后,由系统写入的。
键盘输入的字符串就是下一步要建立的存储扇区数据的文件名。建立文件是由3cH号DOS功能调用完成的,该功能调用对缓冲区的存储要求与0aH号DOS功能调用不一样,因此必须进行上述转存工作。
第15-16行取变量buffer的段址,用该段址初始化附加段ES。这是由基本INT13H中断的入口参数所要求的,其数据缓冲区地址=ES:BX。
第17-21行设置各项入口参数,然后执行13H中断。下面顺序介绍各项功能:将变量buffer的地址取到BX寄存器中;AH=02H,执行读功能;AL=01H,读一个扇区;CH=00H,磁道号(也就是柱面号)为0;CL=01H,扇区号为1;DH=00H,磁头号为0;DL=80H,驱动器号为第一硬盘(如果读取第二硬盘的扇区,设置DL=81H)。
上一篇:读扇区数据C语言程序 下一篇:Oracle数据库应用程序性能优化探究 |