王爽汇编语言综合研究-函数如何接收不定数量的参数

王爽《汇编语言》探究实验五——自己实现一个printf函数 void myprintf (char *, ...); int length; void main () { myprintf ("abcdefg%h%%%dabcde%c", -123, 'm'); } void myprintf (char *chars, ...) { int i = 0; int anum=0, anumcopy = 0, yu=0, yulen=0; int y 阅读详情

1、c语言如何传递参数

编写这样一个程序试验

void showchar(char a,int b);

main()
{
	showchar('a',2);
}

void showchar(char a,int b)
{
	*(char far *)(0xb8000000 + 160*10 + 80) = a;
	*(char far *)(0xb8000000 + 160*10 + 81) = b;
}
调试这个程序

                        ;进入main程序
141A:01FA 55            PUSH    BP        ;保存寄存器现场
141A:01FB 8BEC          MOV     BP,SP

141A:01FD B80200        MOV     AX,0002        ;将2个字节的2h入栈
141A:0200 50            PUSH    AX
141A:0201 B061          MOV     AL,61        ;将1个字节的'a'入栈
141A:0203 50            PUSH    AX
141A:0204 E80400        CALL    020B        ;调用子程序
141A:0207 59            POP     CX        ;释放局部变量的空间
141A:0208 59            POP     CX
141A:0209 5D            POP     BP        ;恢复寄存器现场
141A:020A C3            RET            ;main函数返回

                        ;进入子程序
141A:020B 55            PUSH    BP        ;保存寄存器现场
141A:020C 8BEC          MOV     BP,SP       
141A:020E 8A4604        MOV     AL,[BP+04]    ;读出字符'a'
141A:0211 BB0

汇编语言综合研究试验5--函数如何接收不定数量的参数 这个试验是综合研究阶段最后一个试验,也是学习汇编语言的最后一点内容,至此,我已经将课设1、2,综合研究1-5均写入博客,大家可以参考,如果有疑问,欢迎交流! 一.实验过程 1.编写a.c文件,查看汇编代码 容易分析,a.c中调用函数是通过栈来传递参数的,调用前将参数从右往左依次入栈。 参数在函数中是局部变量,这种方式和创建局部变量的方式类似,可以认为是在子程序调用前为子程序创建局部变量 所不同的是子程序里局部变量通过保存和恢复sp寄存器来释放局部变量空间,参数的局部变量必须通过调用完成后多次调用pop操作 阅读详情

相关推荐

王爽老师 汇编语言 研究试验5 函数如何接收不定数量的参数

研究试验5   函数如何接收不定数量的参数 一、按照书上的步骤进行试验。 1.写一个程序a.c:   ①.MOV AX,0002 PUSH AX                  传递int型数据2,将2入栈 ②.MOV AL,61 PUSH AX                  传递char型数据‘a’,并将其入栈 ③.CALL 020B                调

不积跬步,无以至千里 2727

王爽 汇编语言 综合研究五

通过研究函数如何接受不定量的参数,实现一个简单的printf函数,只需要支持“%c、%d”即可。

Localizing LabVIEW Application to Different Languages

本文探讨了LabVIEW应用程序的多语言本地化实现方案。文章首先分析了LabVIEW对多语言的支持现状,指出其默认仅支持ANSI编码,对Unicode支持有限,且仅适配中英法德日韩六种语言。然后重点介绍了JKISimpleLocalization工具包的使用方法,该工具能导出/导入JSON词典文件,实现界面语言的实时切换。文章还结合实际工程案例,分析了该方案的局限性:部分控件不可翻译、切换速度较慢(33个界面需50秒)、小语种支持不足等。最后提供了完整的应用流程和工具包附件,包括词典文件转换工具和工程案例。

2301_80383260的博客 1409

Linux DRM驱动实战:手把手教你用drmModeSetCrtc显示纯色画面(附完整代码)

本文提供了一份完整的Linux DRM驱动实战指南,手把手教你使用drmModeSetCrtc在屏幕上显示纯色画面。文章详细解析了从打开设备、获取资源、创建帧缓冲区到最终提交画面的完整调用流程,并附带了可直接编译运行的完整代码示例,帮助开发者快速上手Linux图形底层开发。

weixin_29216353的博客 513

嵌入式常见英文2500词总结

嵌入式常见英文总结

qq_28576837的博客 1万+

MSDN Win10镜像缺少驱动?这里有全面解决方案

针对MSDN Win10镜像缺少驱动的问题,本文提供了四种解决方案:厂商官网下载驱动程序、利用Windows更新获取驱动、使用第三方驱动更新工具以及使用集成驱动的Win10系统镜像。每种方案都有其优缺点,用户可以根据自己的需求和实际情况选择合适的方案。建议优先考虑官方渠道:官方渠道下载的驱动程序稳定可靠,是解决问题的首选方案。谨慎选择第三方工具:使用第三方工具时,务必选择信誉好、无广告捆绑的工具,并注意保护个人隐私和计算机安全。备份重要数据:在进行系统安装或更新前,务必备份重要数据以防丢失。

nntxthml的博客 1527

利用ArcGIS的模型构建器实现批量投影栅格和批量克里金插值

博主要批量投影几百个栅格,但是ArcGIS中的投影栅格的批处理工具需要手动一条条设置参数,还是麻烦,因此学习了使用模型构建器(ModelBuilder)来批量投影栅格,可以导入需投影栅格的文件夹,然后迭代投影,并按栅格原名逐个输出到指定目录。 1.在工具箱里构建模型 在arctool box里右键点击空白处,选择【添加工具箱】,点击ArcGIS默认工作目录的工具箱进行添加,然后Toolbox就会被添加到ArcToolbox页面,右键点击Toolbox,选择“新建”-“模型” 2.编写模型 (1).

qq_36958801的博客 1万+

华为od面试手撕真题【分解质因数】

华为od面试手撕真题【分解质因数】

MISAYAONE的博客 1135

从 0 到 1 玩转小智 AI 智能音箱:开发教程 + 实战项目全攻略

如果说 MCP 是工具箱,那 SDK 就是 “技能模板”—— 小智音箱的自定义技能本质是 “意图识别 + 逻辑响应” 的组合,就像给嵌入式设备写驱动程序,只要按规则调用接口,就能实现各种功能。小智 AI 音箱的开发门槛并不高,核心是利用 MCP SDK 封装好的接口,结合嵌入式开发的 “硬件对接 + 逻辑编程” 思维,就能实现各种自定义功能。从环境搭建到技能开发,再到实战项目落地,每一步都是对 “软件控制硬件” 的实践 —— 而这正是嵌入式开发的核心魅力。

weixin_42300449的博客 1193

2025华为od机试真题B卷【版本管理】JavaScript实现

在 软件版本管理中,版本号由点分割的数字组成,例如 1.2.3 和 2.8。现在,你需要编写一个函数,计算两个版本号之间的可用版本号个数。这里的可用版本号指的是所有满足 version1<x<version2的版本号x的个数。若 version1 >=version2 返回0.,

MISAYAONE的博客 254

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 王爽汇编语言综合研究-不用main函数编程
下一篇: c语言强化训练笔记2010/5/8
lingdushanke
博客等级 码龄19年 48粉丝 35原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值