当前位置: 首页 > news >正文

asm汇编源代码之文件操作相关

提供7个子程序:

  1. 关闭文件 FCLOSE

  2. 打开文件 FOPEN

  3. 文件大小 FSIZE

  4. 读文件 FREAD

  5. 写文件 FWRITE

  6. 建立文件 FCREATE

  7. 读取或设置文件指针 FPOS

具体功能及参数描述如下

; ----------------------------
FCLOSE PROC  FAR
; IN:
;   AX=FILE NUMBER
; ____________________________
FOPEN  PROC  FAR
; IN:
;   DS:DX=FILE NAME
;   AL=OPEN MODE
; OUT:
;   CF=0  AX=FILE NUM
;   CF=1  AX=ERROR CODE
; ____________________________
FSIZE  PROC  FAR
; IN:
;   AX=FILE NUM
; OUT:
;   CF=0 DX:AX=FILE_SIZE
;   CF=1 AX=ERROR CODE
; ____________________________
FREAD  PROC  NEAR
; IN:
;   DS:DX=DATA BUFFER
;   AX=FILE NUM
;   CX=LENGTH

;   CF=0 AX=READ SIZE
;   CF=1 AX=ERROR CODE
; ____________________________
FWRITE PROC  FAR
; IN:
;   DS:DX=DATA BUFFER
;   AX=FILE NUM
;   CX=LENGTH
; OUT:
;   CF=0 AX=WRITE SIZE
;   CF=1 AX=ERROR CODE
; ____________________________
FCREATE PROC  FAR
; IN:
;   DS:DX=FILE NAME
; OUT:
;   CF=0 AX=FILE NUM
;   CF=1 AX=ERROR CODE
; ____________________________
FPOS  PROC  FAR
; IN:
;   AL=MODE
;   BX=FILE NUM
;   CX:DX=NEW POSITION
; OUT:
;   DX:AX=NEW POSITION
 

 

; more source code at http://www.ahjoe.com/source/srcdown.asp

        PUBLIC  FOPEN, FSIZE, FREAD, FWRITE, FCREATE, FPOS, FCLOSE
CODE    SEGMENT
        ASSUME  CS:CODE

FCLOSE  PROC    FAR
; IN:
;     AX=FILE NO.
        PUSH    BX
        MOV     BX, AX
        MOV     AH, 3EH
        INT     21H
        POP     BX
        RETF
FCLOSE  ENDP

FOPEN   PROC    FAR
; IN:
;     DS:DX=FILE NAME
;     AL=OPEN MODE
; OUT:
;     CF=0   AX=FILE NUM
;     CF=1   AX=ERROR CODE

        MOV     AH, 3DH
        INT     21H
        RETF

FOPEN   ENDP

FSIZE   PROC    FAR
; IN:
;     AX=FILE NUM
; OUT:
;     CF=0  DX:AX=FILE_SIZE
;     CF=1  AX=ERROR CODE

        PUSH    BX
        PUSH    CX
        MOV     BX, AX
        MOV     AX, 4202H
        XOR     CX, CX
        MOV     DX, CX
        INT     21H
        PUSH    AX
        PUSH    DX
        MOV     CX, 0
        MOV     DX, 0
        MOV     AX, 4200H
        INT     21H
        POP     DX
        POP     AX
        POP     CX
        POP     BX
        RETF
FSIZE   ENDP

FREAD   PROC    NEAR
; IN:
;     DS:DX=DATA BUFFER
;     AX=FILE NUM
;     CX=LENGTH
; OUT:
;     CF=0  AX=READ SIZE
;     CF=1  AX=ERROR CODE

        PUSH    BX
        MOV     BX, AX
        MOV     AH, 3FH
        INT     21H
        POP     BX
        RETF
FREAD   ENDP

FWRITE  PROC    FAR
; IN:
;     DS:DX=DATA BUFFER
;     AX=FILE NUM
;     CX=LENGTH
; OUT:
;     CF=0  AX=WRITE SIZE
;     CF=1  AX=ERROR CODE

        PUSH    BX
        MOV     BX, AX
        MOV     AH, 40H
        INT     21H
        POP     BX
        RETF
FWRITE  ENDP

FCREATE PROC    FAR
; IN:
;     DS:DX=FILE NAME
; OUT:
;     CF=0  AX=FILE NUM
;     CF=1  AX=ERROR CODE

        MOV     CX, 0
        MOV     AH, 3CH
        INT     21H
        RETF
FCREATE ENDP

FPOS    PROC    FAR
; IN:
;     AL=MODE
;     BX=FILE NUM
;     CX:DX=NEW POSITION
; OUT:
;     DX:AX=NEW POSITION
        MOV     AH,42H
        INT     21H
        RETF
FPOS    ENDP

CODE    ENDS
        END     FOPEN

相关文章:

  • sql server 字段逗号分割取后面的值
  • Socket 编程中的基本步骤
  • OSPF的接口网络类型【复习篇】
  • Unity 动画
  • Linux中的tar -P选项
  • Linux中安装sentinel
  • nodejs/node-sass/sass-loader三者版本对应关系
  • 基于疾风大模型的新能源储能优化系统:方法、实现与案例分析
  • Python——numpy测试题目
  • Linux--进程间通信
  • C# --- yield关键字 和 Lazy Execution
  • 英语学习4.11
  • C#MQTT协议服务器与客户端通讯实现(客户端包含断开重连模块)
  • Day 8 上篇:深入理解 Linux 驱动模型中的平台驱动与总线驱动
  • JS实现文件点击或者拖拽上传
  • Sql with as 语句
  • 重读《人件》Peopleware -(6)Ⅰ管理人力资源Ⅴ-帕金森定律重探 Parkinson’s Law Revisited
  • [算法题:快排(一)]颜色分类
  • 【unity游戏开发介绍之UGUI篇】UGUI概述和基础使用
  • ThingsBoard3.9.1 MQTT Topic(1)
  • 山东网站建设公司/深圳网站seo地址
  • 凯里建设局网站/长沙百家号seo
  • 做新媒体每天必看的网站/专门搜索知乎内容的搜索引擎
  • 网站开发嘉比格网络/深圳谷歌网络推广公司
  • 专业做曝光引流网站/seo3的空间构型
  • 手机版网站建设开发/中国时事新闻网