首页 > 编程知识 正文

汇编语言int 21h指令,int21h指令表

时间:2023-05-06 18:16:14 阅读:139771 作者:1894

1. MOVS

MOV一般不影响CPSR,但只要不执行MOVpc、lr这样的东西,在效果上与BXlr相同,有可能影响t标志位

MOVS始终影响CPSR,包括n、z、c标志位,当运行MOVSpc、lr时,CPSR由SPSR覆盖(内核状态,在用户和系统模式下没有SPSR ) )。

例如,如果在USER模式下存在未定义的命令,则CPU在解码阶段发现命令未定义,跳转到对应的处理函数,切换为UND模式,将未定义的命令的下一个地址保存在lr寄存器中。 处理函数执行完成后,如何返回的同时恢复状态寄存器等是个问题,但由于在UND模式下sp和lr寄存器是该模式特有的,因此在这种情况下可以通过MOVS pc、lr直接返回并切换到USER模式。

2. ^符号

“^”是后缀的标记,在User和Sys系统模式下不可用。 这个标记有两个存在目的:

a .对于LDM操作,同时恢复的寄存器中包含PC(r15 )寄存器时,在执行命令的同时,cpu自动将spsr复制到cpsr

用UND中断返回代码,如:

ldmfd sp!{r0-r13,pc}^//指令执行完成,pc跳转前,自动将spsr的值复制到cpsr中

b .数据输入/输出发生在User用户模式下的寄存器,而不是当前模式寄存器

例如:ldmdb sp,{r0 - lr}^; 指示sp栈中的数据返回到User包寄存器r0-lr,而不是返回到当前模式寄存器r0-lr

当然,关于User、System、IRQ、SVC、Abort、Undefined这6种模式,r0-r12是共用的,但r13和r14分别是独自的。 对于FIQ模式,只有r0-r7与前六模式的r0-r7是共用的,r8-r14都是FIQ模式

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。