硬盘数据恢复导航
RAID数据恢复导航
 | 网站首页 | 数据恢复资料 | 数据恢复软件 | 咨询留言 | 数据恢复博客 | 数据恢复论坛 | 
数据恢复软件下载
数据恢复服务 数据恢复 数据恢复报价 数据恢复培训 数据恢复实验室 数据恢复研究成果 数据恢复服务联系方式
您现在的位置: 北亚数据恢复技术站 >> 数据恢复资料 >> 相关编程资料 >> 文章正文
读扇区汇编程序源程序清单    热     ★★★ 【字体:小 大】
读扇区汇编程序源程序清单
作者:jnsqs    文章来源:本站成员原创    点击数:    更新时间:2004-04-20


;********************************************

;文件名:ARSE.ASM

;功能:读硬盘0面0头1扇区数据并建立存储文件

;********************************************

data segment                     ;1.定义数据段

ostr db 'Enter file name:','$'   ;2.屏幕提示

filename db 15                   ;3.输入的文件名

         db ?                    ;4.

         db 15 dup(0)            ;5.

buffer db 512 dup(0)             ;6.扇区数据

tmp db 15 dup(0)                 ;7.转存的文件名

data ends                        ;8.

code segment                     ;9.定义代码段

     assume cs:code,ds:data      ;10.

start:                           ;11.程序开始

        mov ax,data              ;12.初始化数据段

        mov ds,ax                ;13.

                                 ;14.

        mov ax,seg buffer        ;15.用buffer初始化附加段es

        mov es,ax                ;16.

        mov bx,offset buffer     ;17.取址

        mov ax,0201h             ;18.程序入口参数

        mov cx,0001h             ;19.

        mov dx,0080h             ;20.

        int 13h                  ;21.调用中断

        mov dx,offset ostr       ;22.

        mov ah,09h               ;23.输出字符串

        int 21h                  ;24.

                                 ;25.

        mov dx,offset filename   ;26.

        mov ah,0ah               ;27.接收字符串

        int 21h                  ;28.

        mov si,offset filename   ;29.

        mov di,offset tmp        ;30.

lstr:   mov dl,[si+2]            ;31.取字符

        mov [di],dl              ;32.存字符

        inc si                   ;33.地址递增

        inc di                   ;34.

        cmp dl,0dh               ;35.判断是否为回车符

        jne lstr                 ;36.不等转

                                 ;37.

        mov bl,0                 ;38.补0

        mov [di-1],bl            ;39.

        mov dx,offset tmp        ;40.取文件名

        mov cx,0                 ;41.

        mov ah,3ch               ;42.建立文件

        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)。

第22-24行在屏幕上输出提示字符串。

第26-28行接收键盘输入的字符串。

第29-36行是字符串转存,每次转存一个字符。因为键盘输入的字符串以回车作为结束符,回车的ASCII码值是0dH,所以第35行设置一判断语句,若取的字符与回车相等,则结束循环。第31行将地址跳过2个字节,从第3个字节开始取字符。

第38-39行在转存字符串后面补0,作为字符串的结束符。

第40-50行建立文件、向建立的文件中写入扇区数据、最后关闭文件。这几步都是常规的简单操作,就不用详细解释了。

第51-54行返回DOS系统、结束程序。

 

                            程序编译和运行

 

汇编源程序的编译和连接,是用命令行方式,使用Borland C++ 3.1自带的两个程序完成的。TASM.EXE可将源程序编译成OBJ二进制文件,TLINK.EXE可将二进制文件连接成EXE可执行文件。

如果在安装Borland C++ 3.1编译软件以后,没有在自动批处理文件AUTOEXEC.BAT里面设置相关路径,就需要先进入Borland C++ 3.1的安装目录,然后才能运行有关程序。

最好的方法是修改AUTOEXEC.BAT文件,在里面设置好路径。当硬盘启动时就能自动加载,不论在哪一个目录下,都可以运行程序了。

以我用的硬盘为例,将Borland C++ 3.1安装在E盘的BC目录中,用文本编辑软件打开C盘根目录下的AUTOEXEC.BAT文件,在其中加上一行:

SET PATH=%PATH%;E:\BC\BIN

编译时先执行命令TASM ARSE,生成ARSE.OBJ文件,再执行命令TLINK ARSE,可生成ARSE.EXE文件。如果源程序有逻辑错误或语法错误,屏幕上会有出错提示或警告提示,并指出发生在哪一行。

可以将上面执行两次的命令合成一步来完成,方法是用文本编辑软件建一个批处理文件。文件名可定为TASMLINK.BAT,其内容是:

TASM  %1

TLINK  %1

将TASMLINK.BAT放在E:\BC\BIN目录中,编译时执行TASMLINK ARSE。

运行程序时执行命令ARSE,屏幕上提示“Enter file name:”,输入文件名后回车,在当前目录下生成一个512字节的扇区数据文件。

生成的扇区数据文件不是文本方式的,不能直接用文本编辑软件查看。

每一个想从事数据恢复工作的人,都必须能写自己的工具程序,才能在数据恢复中得心应手。因为现成的应用软件谁都会用,任何人都没有技术上的优势,有的只是时间上的优势,也就是比别人早用了几天而已。

只有形成自己的有特色的分析方法,配合自己的工具程序,才能有领先于别人的优势。同时在编写自己的工具程序的过程中,对文件系统的存储原理,对磁盘扇区的存储规律,就会有比别人更深刻的认识。

文章录入:菜刀    责任编辑:a 
  • 上一篇文章:

  • 下一篇文章:
  • 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    关于我们 | RAID数据恢复 | 友情链接 | RSS生成 | XML生成 | 文章HTML地图 | 下载HTML地图

    全国统一客服电话:4006-505-808
    总部电话:010-82488636 邮箱:ycf@frombyte.com
    公司地址:北京市海淀区永丰基地丰慧中路7号新材料创业大厦B座205室
    京ICP备05011939
    �