目录 上一页 下一页 下一章

第7章 文件控制块 -183-








READ_LOOP:






ERR_EXIT:

EXIT:


MAIN
CODE

MOV
MOV
MOV
DIV
ADD
MOV
MOV

MOV
MOV
INT
OR
JNZ
LOOP

LOOP

MOV
INT
ENDP
ENDS
END
AX,[BX+10H]
DX,[BX+12H]
CX,[BX+0EH]
CX
AX,2
CX,AX
BP,DX

AH,14H
DX,BX
21H
AL,AL
ERR_EXIT
READ_LOOP

READ_LOOP

AH,4CH
21H


MAIN
;取得文件长度低字
;取得文件长度高字
;取得记录长度
;计算文件包含的记录数
;记录数加2
;将增大的记录数作为循环计数


;准备从文件中读入数据
;DX指向打开了的FCB
;读入一个记录
;正确读入了吗?
;若数据未正确读入,转ERR_EXIT
;继续读入下一个记录

;继续读入

;结束程序




  下面是这个程序的跟踪分析结果:
C:\ASM\>DEBUG FCB6.EXE[Enter]
g=0 24[Enter]循环计数 数据的余数
AX=0007BX=0000CX=0007DX=001BSP=0000BP=001BSI=0000DI=0000
DS=2589ES=2579SS=2589CS=258CIP=0024 NV UP EI PL NZ NA PO NC
258C:0024B414MOV AH,14
  笔者的CONFIG文件有667个字节,我们取记录长度为默认值128字节,这里我们可以看到程序计算出CONFIG文件包含5个记录零1BH个字节。为了能分析出错情况,我们将算出的记录数加了2并将其置入CX寄存器做为循环计数。
g=24 30[Enter]
AX=1403BX=0000CX=0002DX=0000SP=0000BP=001BSI=0000DI=0000
DS=2589ES=2579SS=2589CS=258CIP=0030 NV UP EI PL NZ NA PE NC
258C:0030E2F2LOOP 0024
  一次执行全部循环,可以看到AL寄存器返回的第一的错误码是03H,这个错误码的含义是

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章