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中的函数(3)
一.包含返回值的函数 下面来看一个函数,它接收名和姓并返回完整的姓名: def get_formatted_name(first_name,last_name): """ ...
- 2019年,Python工程师必考的6个面试题,Python面试题No5
第1题:Python里面如何实现tuple和list的转换? 函数tuple(seq)可以把所有可迭代的(iterable)序列转换成一个tuple, 元素不变,排序也不变 list转为tuple: ...
- python接口自动化-有token的接口项目使用unittest框架设计
获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...
- [luoguP1266] 速度限制(spfa)
传送门 因为到某一没有限速的路径速度会有不同的可能,所以直接用 dis[i][j] 表示到第 i 个点速度为 j 时的最短时间,然后跑spfa. ——代码 #include <queue> ...
- 【01背包变形】Robberies HDU 2955
http://acm.hdu.edu.cn/showproblem.php?pid=2955 [题意] 有一个强盗要去几个银行偷盗,他既想多抢点钱,又想尽量不被抓到.已知各个银行 的金钱数和被抓的概率 ...
- 我是一个线程 - IBM刘欣
来自:码农翻身(微信号:coderising) 作者:IBM刘欣 我是一个线程,我一出生就被编了个号: 0×3704,然后被领到一个昏暗的屋子里, 这里我发现了很多和我一模一样的同伴. 我身边的同伴0 ...
- 【BZOJ4736】温暖会指引我们前行(LCT)
题意:有一张图,每条边有一个不同的编号,长度和权值,维护以下操作: 1.加边 2.修改边长 3.询问两点之间在最小权值最大的前提下的唯一路径长度 n<=100000 m<=300000 思 ...
- PatentTips - Wear Leveling for Erasable Memories
BACKGROUND Erasable memories may have erasable elements that can become unreliable after a predeterm ...
- msp430项目编程04
msp430中项目---TFT彩屏显示 1.TFT彩屏工作原理 2.电路原理说明 3.代码(静态显示) 4.代码(动态显示) 5.项目总结 msp430项目编程 msp430入门学习
- [Android] 随时拍图像处理部分总结及源码分享
http://blog.csdn.net/eastmount/article/details/45492065#comments [Android] 图像各种处理系列文章合集 http://blog. ...