16asm - masm函数语法

前言

  • 各位师傅大家好,我是qmx_07,今天讲解 masm函数语法相关知识点
    请添加图片描述

函数语法

  • 介绍: masm 是一堆伪指令,用于简化代码
    在这里插入图片描述

  • 距离
    在这里插入图片描述
    例子:
    在这里插入图片描述

  • ret 返回 2 个字节:适用于 NEAR 函数,返回同一代码段的偏移地址

  • retf 返回 4 个字节:适用于 FAR 函数,返回段地址和偏移地址

  • 调用约定 和 参数
    在这里插入图片描述
    例子:
    stdcall:
    在这里插入图片描述
    使用stdcall调用约定,会自动平栈

c:
在这里插入图片描述

使用c调用约定,需要使用者手动平栈
注意:参数只能传递word类型

  • 局部变量
    在这里插入图片描述
    在这里插入图片描述

  • invoke伪指令

格式:
invoke 函数名,参数1,参数2,参数3

说明:

  1. 会生成参数入栈代码
  2. 如果是c调用约定,会生成平栈代码
  3. 如果是局部变量取地址,需要使用addr伪指令
  4. 使用addr的时候,注意ax的使用

在这里插入图片描述
在这里插入图片描述
注意:invoke伪指令 调用立即数 是将数字 mov到ax,再push
在这里插入图片描述

注意:区分 取局部变量的使用情景

文件操作

打开文件

tool.asm
;功能 - 创建文件,如果文件存在,则清空
;参数 - szFileName - 文件名,0结尾字符串
;返回 - 
;      失败 - 返回 -1
;      成功 - 返回文件句柄 

    OpenFile proc far stdcall uses dx szFileName:word
        mov ah,3dh
        mov al,02h;可读,可写
        mov dx,szFileName
        int 21h
        jnc SUCESS
        ;失败
        mov ax,-1
        ret
    SUCESS:
        ;成功
        ret
    OpenFile ENDP

读取文件

在这里插入图片描述

ReadFile proc far stdcall uses bx dx cx hFile:word,pBuff:word,nBufSize:word

        mov bx,hFile
        mov ah,3fh
        mov dx,pBuff
        mov cx,nBufSize
        int 21h
        jnc SUCESS
        ;失败
        mov ax,0
        ret 

    SUCESS:
        ret
    ReadFile ENDP

关闭文件

    CloseFile proc far stdcall hFile:word
        mov bx,hFile
        mov ah,3eh
        int 21h

        ret
    CloseFile ENDP

例子:
在这里插入图片描述

总结

引入 MASM 函数优化语法,如 invoke、调用约定、局部变量和自动栈管理,MASM 的代码风格和开发效率得到显著提升,文件管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值