第一个masm32汇编程序

这篇博客记录了作者从16位汇编转向学习masm32,编写32位Intel汇编的过程。通过调用msvcrt库中的crt_printf函数,实现了更便捷的输出。文章还介绍了invoke指令的用法,它是调用API或汇编子程序的一种方式,参数按逆序压栈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         之前的汇编语言课学的是16位汇编,各种中断调用不胜其烦,这学期的编译原理开始使用masm32,编写intel的32位汇编,有些不习惯。纪念一下第一个helloworld程序。

      

.486
.model flat, stdcall
option casemap: none
 
include D:\masm32\include\msvcrt.inc
include D:\masm32\include\kernel32.inc
 
includelib D:\masm32\lib\msvcrt.lib
includelib D:\masm32\lib\kernel32.lib
 
.data
    szText db 'Hello World!', 0
 
.code
start:
    invoke crt_printf, addr szText
    invoke ExitProcess, 0
end start

调用了自带的msvcrt库,比起之前的汇编语言没有任何封装的输出,crt_printf函数还是很方便的。

invoke用法【转】

invoke既可以调用WINDOWS API,也可以调用汇编子程序。
格式为invoke 程序名,参数1,参数2,。。。。
参数2先入堆栈,参数1再入堆栈,以此类推
如invoke mysubpro,eax,ecx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值