[求助]大家帮忙看一下
以下是待机是处理按键的一部分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
由于本人的对汇编几乎一无所知,大家帮忙看看在“取得状态”和“判断状态”中间的两行是干什么用的?谢谢!
我是这样理解的,不知对不对
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
谢谢! 差不多,我在进阶里写过。R12,R13,R14,R15在调用函数时是用来传递参数的(调用次序是_cdecl,从右到左参数压栈,不同的是最左面是用这几个寄存器来传递的),默认在子函数里不会被保护,所以可能会被修改,需要在主函数里保护!
页:
[1]