爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 833|回复: 3
收起左侧

[求助]大家帮忙看一下

[复制链接]
发表于 2005-8-10 00:00:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
以下是待机是处理按键的一部分
D5000:E8F4                 mov     [-r0], r9
D5000:E8F6                 mov     [-r0], r8
D5000:E8F8                 mov     [-r0], r6
D5000:E8FA                 mov     r6, #0FFFFh
D5000:E8FE                 mov     r8, r14
D5000:E900                 mov     r9, r15

D5000:E902                 calls   0A3h, sub_A37780      //取得键盘锁闭状态
D5000:E906                 mov     r15, r9
D5000:E908                 mov     r14, r8
D5000:E90A                 cmp     r4, #0                     //判断键盘是否锁闭
D5000:E90C                 jmpa    cc_Z, loc_D5ED5E

由于本人的对汇编几乎一无所知,大家帮忙看看在“取得状态”和“判断状态”中间的两行是干什么用的?谢谢!
发表于 2005-8-10 00:01:00 | 显示全部楼层
我是这样理解的,不知对不对
r14,r15是两个重要的寄存器,在子程序中可能会被修改,所以需要保存现场

D5000:E8FE                 mov     r8, r14         //调用子程序前保存现场
D5000:E900                 mov     r9, r15

D5000:E902                 calls   0A3h, sub_A37780      //取得键盘锁闭状态
D5000:E906                 mov     r15, r9       //子程序返回后恢复现场
D5000:E908                 mov     r14, r8

 楼主| 发表于 2005-8-10 00:02:00 | 显示全部楼层
谢谢!
发表于 2005-8-10 00:03:00 | 显示全部楼层
差不多,我在进阶里写过。R12,R13,R14,R15在调用函数时是用来传递参数的(调用次序是_cdecl,从右到左参数压栈,不同的是最左面是用这几个寄存器来传递的),默认在子函数里不会被保护,所以可能会被修改,需要在主函数里保护!

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-5-19 23:43

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表