8088汇编跳转和PSW状态字寄存器
DDD
8088 汇编跳转 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
日期:2003年6月12日 出处:嬴政天下整理收藏 作者:看雪 人气: 8735 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
一、状态寄存器 PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:
条件码: 控制标志位: 二、 直接标志转移(8位寻址)
三、间接标志转移(8位寻址)
四、无条件转移指令(fisheep译 fisheep@sohu.com)
五、16位/32位寻址方式(fisheep译
注:一些指令操作数的含义说明: |
无条件转移指令
指令格式 | JMP 地址表达式 | |||
指令功能 | 无条件地转移到由地址表达式所确定的目标单元。本指令对标志位无影响。 | |||
无条件转移指令根据其转移范围的大小可以分为以下四种方式: | ||||
四种方式 | 1.段内直接转移 | 2.段内间接转移 | 3.段间直接转移 | 4.段间间接转移 |
说 明 | 这是一种相对寻址方式。它转移的目标地址是当前IP内容加上一个八位相对位移量(DISP), DISP是汇编程序在汇编源程序时,根据目标地址和当前IP之间的距离自动生成的。 | 它转移的目标地址是可通过寄存器或存贮单元来寻址。 | 在一条无条件转移指令中的地址表达式是一个段间(FAR)标号或段间标号加减一常量(必须在该标号所在段内)时,则该指令被汇编成一个段间直接转移指令代码。 | 此指令的目标地址由存贮器寻址方式指定的内存中的连续两个字来决定,低地址的字取代IP,高地址的字取代CS。 |
指令功能 | IP=IP+Disp | IP=Reg16 或 IP=Mem16 |
条件转移指令
指令格式 | <指令助记符> <短标号> | |
指令说明 | 当满足条件而发生转移的指令,称之为条件转移指令。它们以某些标志位或这些标志位的逻辑运算作为依据,若满足指令所规定条件,则程序转移,否则顺序执行。 | |
1.根据单个标志位的条件转移指令: | 2.用于无符号数的条件转移指令: | 3.用于带符号数的条件转移指令: |
(1)有进位转移(JC)或无进位转移(JNC) (2)等于/为零转移(JE/JZ)或不等于/非零转移(JNZ) (3)负数转移(JS)或正数转移(JNS) (4)溢出转移(JO)或不溢出转移(JNO) (5)偶校验转移(JP/JPE)或奇校验转移(JNP/JPO) (6)寄存器CX为零转移(JCXZ) |
(1)高于转移(JA)/不低于且不等于转移(JNBE) (2)高于或等于转移(JAE)/不低于转移(JNB) (3)低于转移(JB)/不高于且不等于转移(JNAE) (4)低于或等于转移(JBE)/不高于转移(JNA) |
(1)大于转移(JG)/不小于且不等于转移(JNLE) (2)大于或等于转移(JGE)/不小于转移(JNL) (3)小于转移(JL)/不大于且不等于转移(JNGE) (4)低于或等于转移(JLE)/不高于转移(JNG) |
注意:这类指令的转移范围只能在离当前IP的-128-+127个字节之内。它们对标志位均无影响。
重复控制指令
这类指令主要用来控制软件循环的重复过程,故又称作循环控制指令。
指令名称 | 指令功能 |
(1)LOOP指令 | 将CX内容减一,若CX不等于0,则循环至目标地址处(即IP+DISP);否则顺序执行后续指令。 |
(2)LOOPZ/LOOPE指令 | 将CX内容减一,若CX不等于0,且标志位ZF=1时,才循环至目标地址处;否则顺序执行后续指令。 |
(3)LOOPNZ/LOOPNE指令 | 将CX内容减一,若CX不等于0,且标志位ZF=0时,才循环至目标地址处;否则顺序执行后续指令。 |
(4)JCXZ指令 | 寄存器CX为零转移(JCXZ),这条指令前面已经介绍过。 |
注意:在执行此类重复控制指令前必须把重复次数送入寄存器CX中。
标志操作指令
清进位指令CLC
|
清除进位标志 CF←0 |
置进位指令STC
|
置进位标志 CF←1 |
清除方向位指令CLD
|
清除方向标志 DF←0
|
置方向位指令STD
|
置方向标志 DF←1
|
清中断允许指令CLI
|
清除中断标志 IF←0
|
置中断允许位指令STI
|
置中断标志 IF←1
|
处理器控制指令 |
||
处理器暂停指令 | HLT | 使CPU进入暂停状态,不进行任何操作,它可被"外部中断"和复位信号来清除。该指令不影响任何标志,常在程序中为了等待中断而使用。 |
空操作指令 | NOP | 该指令不进行任何操作,它仅充当一种为不做任何操作的“转向”点提供标号的手段。 |
处理器等待指令 | WAIT | 在处理器的引脚TEST=1时,使处理器进入等待状态;直到TEST=0,等待状态被清除,并恢复执行原停止的指令。 |
处理器交权指令 | ESC | 指出使用的协处理器编号及执行的操作,并为协处理器写指定一个操作数。 |
总线封锁指令 | LOCK | 使CPU的LOCK信号线上产生一个有效电位,以禁止总线上的其他主设备进行总线访问。 |
8088汇编跳转和PSW状态字寄存器的更多相关文章
- lmsw - 加载机器状态字
将源操作数加载到机器状态字,即寄存器 CR0 的位 0 到 15.源操作数可以是 16 位通用寄存器或内存位置.只有源操作数的低 4 位(也就是 PE.MP.EM 及 TS 标志)会加载到 CR0.C ...
- IC卡T0协议中的过程字与状态字
T0协议中,IC卡收到命里头以后向TTL回传过程字或状态字SW1.SW2: TTL和IC卡在二者之间的命令和数据交换的任何时刻都必须知道数据流的方向和IO线路由谁驱动. 摘录参考:<中国金融集成 ...
- 对状态字的理解 尤其是 首次检测位“/FC”的想法
状态字 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 BR CC1 CC0 OV OS OR STA RLO /FC 问题1 关于首次检测位& ...
- arm汇编学习(六)---跳转到thumb状态
通常函数返回使用 pop {r7,pc}或bx lr等方式(bx,b类似jmp为跳转指令,但bx可以指定跳转区域究竟为thumb还是arm指令.thumb指令指令的时候,直接填写该地址却总是产生SIG ...
- 关于程序状态字寄存器PSW(Program Status Word)与多核多线程
内核态(Kernel Mode)与用户态(User Mode) CPU通常有两种工作模式即:内核态和用户态,而在PSW中有一个二进制位控制这两种模式. 内核态:当CPU运行在内核态时,程序可以访问所有 ...
- JavaScript学习总结 Ajax和Http状态字
Ajax及其工作原理 AJAX 是一种与服务器交换数据无需刷新网页的技术,最早由Google公司在谷歌地图里使用,并迅速风靡. AJAX是不能跨域的,如需跨域,可以使用document.domain= ...
- arm学习之汇编跳转指令总结
目前所知道的跳转指令有 b,bl,bep,bne.他们共同点是都是以b开头,首先从字面上分析:b:是Branch,表示分支.bl:是Branch Link表示带连接的分支.bep:Branch ,Eq ...
- JavaScript学习总结(七)Ajax和Http状态字
转自:http://segmentfault.com/a/1190000000691919 Ajax及其工作原理 AJAX 是一种与服务器交换数据无需刷新网页的技术,最早由Google公司在谷歌地图里 ...
- SIMATIC 1500 PLC 同步轴,状态字StatusWord信号描述
轴名. StatusWord.X21 (Synchronizing) 正在建立同步 轴名. StatusWord.X22 (Synchronous) 已经建立同步
随机推荐
- Python处理PDF-通过关键词定位-截取PDF中的图表
起因: 因为个人原因, 这些天了解了一下Python处理PDF的方法. 首先是PDF转txt, 这个方法比较多, 这里就不再赘述, 主要聊一下PDF中的图片获取. 这里用我自己的例子, 不过具体情况还 ...
- Ubuntu16.04进入无限登录状态的解决办法
具体来说就是,输入密码之后又到了登录界面,无限循环(也许可能不能输入密码,这种状态我没有测试) 此方案仅适用于安装过NVIDIA显卡驱动的系统并且在登录界面会发现分辨率变了 如果你没有安装过NVIDI ...
- 大数据学习——hadoop的RPC框架
项目结构 服务端代码 test-hadoop-rpc pom.xml <?xml version="1.0" encoding="UTF-8"?> ...
- 实现List集合中数据逆序排列
Collections.reverse(list); 实现list集合逆序排列
- CentOS7中,vnc分辨率设置。
使用geometry参数进行调整 例如,我们需要将分辨率调整到800x600 [root@secdb ~]# vncserver -geometry 800x600 New 'secdb:5 (roo ...
- hdu 4710
#include<stdio.h> #include<math.h> __int64 min(__int64 a,__int64 b) { return a<b?a:b; ...
- PatentTips - Reducing Write Amplification in a Flash Memory
BACKGROUND OF THE INVENTION Conventional NAND Flash memories move data in the background to write ov ...
- Codeforces 658C Bear and Forgotten Tree 3【构造】
题目链接: http://codeforces.com/contest/658/problem/C 题意: 给定结点数,树的直径(两点的最长距离),树的高度(1号结点距离其他结点的最长距离),写出树边 ...
- 寒武纪camp Day5
补题进度:6/10 A(状压dp) 题意: 有n个数字1,2,...,n,有m个限制(a,b),表示至少要有一个数字a排在数字b的前面 你需要构造出一个含有数字1~n的序列,数字可以重复多次,要求该序 ...
- dtrace
http://blog.csdn.net/lw1a2/article/details/7389323