36 控制转移类指令
- 格式:ppt
- 大小:141.50 KB
- 文档页数:17
控制转移类指令✧用于实现分支、循环、过程等程序结构,是仅次于传送指令的最常用指令.✧控制转移类指令通过改变IP(和CS)值,实现程序执行顺序的改变说明✧只有中断返回指令(IRET)改变控制标志位✧许多转移指令受状态标志位的影响1.无条件转移指令(JMP 操作数;程序转向label标号指定的地址)◆寻址方式:直接寻址方式转移地址象立即数一样,直接在指令的机器代码中,就是直接寻址方式间接寻址方式转移地址在寄存器或主存单元中,就是通过寄存器或存储器的间接寻址方式◆目标地址范围✓段内(注意转移范围是+ -,即前后都可以转移!当向地址增大方向转移时,位移量为正;向地址减小方向转移时,位移量为负)✡段内转移——近转移(near)⏹转移范围用二个字节表达,在当前代码段64KB范围内转移(±32KB范围)⏹不需要更改CS段地址,只要改变IP偏移地址,由16位带符号数给出。
✡段内转移——短转移(short)⏹转移范围用一个字节表达,在当前代码段256B范围内转移(-128~+127范围),只改变IP的值,由8位带符号数给出。
✓段间段间转移——远转移(far)从当前代码段跳转到另一个代码段,可以在1MB范围需要更改CS段地址和IP偏移地址目标地址必须用一个32位数表达,叫做32位远指针,它就是逻辑地址。
段间间接转移指令中,目的地址存放在连续4个存储单元字节中,低字节两个单元的内容代替IP,高字节两个单元的内容代替CS。
注:实际编程时,汇编程序会根据目标地址的距离,自动处理成短转移、近转移或远转移程序员可用操作符short、near ptr或far ptr强制.✌思考:如果转移超过16BIT,怎么办?答:变成段间转移。
JMP 1234H 这个指令对否?JMP 12345678H呢?2、条件转移指令(Jcclable;条件满足,发生转移:IP←IP+8位位移量;条件不满足,顺序执行)注意:1.Jcc本身不是一条指令,它是条件转移指令的统称。
riscv 常用指令RISC-V是一种基于精简指令集计算机(Reduced Instruction Set Computer)架构的开源指令集架构(ISA)。
它是由加州大学伯克利分校开发的,旨在为各种应用提供一个通用的、开放的指令集架构标准。
RISC-V指令集架构具有可扩展性、灵活性和可移植性等优点,因此在各种领域得到了广泛应用。
下面将介绍RISC-V常用指令,包括数据传输指令、算术指令、逻辑指令、控制转移指令和访存指令。
1. 数据传输指令数据传输指令用于在寄存器之间传输数据。
其中,LOAD指令用于将数据从内存加载到寄存器中,STORE指令用于将寄存器中的数据存储到内存中。
例如,LW指令将32位数据加载到寄存器中,SW 指令将32位数据存储到内存中。
2. 算术指令算术指令用于执行加法、减法、乘法和除法等算术运算。
ADD指令用于将两个寄存器中的数据相加,SUB指令用于将一个寄存器中的数据减去另一个寄存器中的数据,MUL指令用于将两个寄存器中的数据相乘,DIV指令用于将一个寄存器中的数据除以另一个寄存器中的数据。
3. 逻辑指令逻辑指令用于执行与、或、非和异或等逻辑运算。
AND指令用于对两个寄存器中的数据进行与运算,OR指令用于对两个寄存器中的数据进行或运算,NOT指令用于对一个寄存器中的数据进行非运算,XOR指令用于对两个寄存器中的数据进行异或运算。
4. 控制转移指令控制转移指令用于实现程序的跳转和分支。
其中,JUMP指令用于无条件跳转到指定地址,BRANCH指令用于根据条件跳转到指定地址。
例如,J指令将程序跳转到指定的地址,BEQ指令将在两个寄存器中的数据相等时跳转到指定地址,BNE指令将在两个寄存器中的数据不相等时跳转到指定地址。
5. 访存指令访存指令用于实现对内存的读写操作。
其中,LOAD指令用于将内存中的数据加载到寄存器中,STORE指令用于将寄存器中的数据存储到内存中。
例如,LBU指令将8位无符号数据加载到寄存器中,SB指令将8位数据存储到内存中。