目录 上一页 下一页 下一章

-174- PC机汇编语言实战精解

CODE

MAIN












ERR_EXIT:






MAIN
CODE

SEGMENT
ASSUME
PROC
MOV
MOV

MOV
MOV
INT

OR
JNZ

MOV
INT

MOV
MOV
INT

MOV
INT
ENDP
ENDS
END

CS:CODE
FAR
AX,DATA
DS,AX

DX,OFFSET MY_FCB
AH,0FH
21H

AL,AL
ERR_EXIT

AH,4CH
21H

AH,9
DX,OFFSET ERRMSG
21H

AH,4CH
21H


MAIN



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


;DX寄存器指向未打开的FCB
;选择DOS API的0FH功能
;打开文件

;AL寄存器返回了0吗?
;没有返回0,转ERR_EXIT结束

;结束程序


;利用DOS API的09功能
;输出错误信息


;结束程序




  这个程序主要用于跟踪分析用,大家可以试一试执行这个程序,不过执行之前必须保证当前的驱动器是"C:"而且CONFIG.SYS就在当前目录下,缺了这两个条件的话就只能看到程序输出"Error"了。我们现在跟踪这个程序看一看当一个文件打开后FCB会有什么变化:
C:\ASM\>DEBUG FCB1.EXE[Enter]
G=0 A[Enter]
AX=0F8ABX=0000CX=004FDX=0000SP=0000BP=0000SI=0000DI=0000
DS=258AES=257ASS=258ACS=258DIP=000A NV UP EI PL NZ NA PO NC
258D:000ACD21INT 21
  在执行"INT 21"指令之前,我们先观察一下未打开的FCB,可以看到在未打开的FCB中除驱动器域和文件名、扩展名域外其它各项均为0:

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章