![]() |
#2
ansic2011-03-24 23:01
|
写发代码
;.asm
MyStack segment stack
db 200 dup(0)
MyStack ends
MyData segment
szFilePath db 'E:\1.txt'
hNewFile dw 0
szBuf db 200 dup(0)
MyData ends
include MyIO.inc
MyCode segment
;assume CS:MyCode, DS:MyData, SS:MyStack
start:
mov ax,MyData
mov ds,ax
mov bx, offset szFilePath
mov si, 2
push si
push bx
call MyOpenFile
add sp, 4
test ax, 0ff00h ;检查返回值高字节是否是-1
jnz _ERROR ;zf = 0 表示高位是-1
mov bx, offset hNewFile
mov WORD ptr [bx], ax
mov di, offset szBuf
mov cx, 20
push cx
push di
push ax
call MyReadFile
add sp, 6
_ERROR:
;暂停,任意键关闭
mov ah,1
int 21h
mov ah,4ch ;结束,可以修改al设置返回码
int 21h
MyCode ends
end start
;MyIO.inc
MyCode segment
;函数功能: 打开文件
;参数1: strFilePath文件路径 以0结尾
;参数2: wFlag, word类型 打开方式
;返回: 成功:AH=0, Al=文件代号, 错误:AH = FF AL=错误码
MyOpenFile proc far
strFilePath equ bp+6 ;;宏替换 第1个参数
wFlag equ bp+8 ;;第2个参数
push bp
mov bp, sp
push dx
mov dx, [strFilePath]
mov al, [wFlag]
mov ah, 3dh
int 21h
jcxz _OK ;CF=0表示成功
mov ah, 0FFh
_OK:
pop dx
mov sp, bp
pop bp
ret
MyOpenFile endp
MyCode ends
在执行打开文件函数的时候 3d功能号 CF = 1 调用失败了。 我郁闷啊
我在程序目录建立了一个文件1.txt 百思不得其解啊