第3章8086寻址方式与指令系统讲解.ppt

  1. 1、本文档共196页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(3)段间直接转移 格式:JMP FAR PTR标号 指令完成的操作:(IP)←标号所在存储单元的偏移地址,(CS)←标号所在存储单元的段地址。 例如: JMP FAR PTR NEXT ;(IP)←标号NEXT的偏移地址 ;(CS)←标号NEXT的段地址 (4)段间间接转移 格式:JMP DWORD PTR 存储单元 指令完成的操作:(IP)←标号指出的双字存储单元的低16位,(CS)←标号给出的双字存储单元的高16位。 例如: JMP DWORD PTR [SI] ;IP←(DS:SI),CS←(DS:SI+2) 2.条件转移指令 格式:Jcc 标号 功能:以标志位的状态作为转移依据。如果满足转移条件,则转移到标号指示的指令处;否则,顺序执行下一条指令。 说明: cc代表跳转条件,short-label表明该指令只能实现段内短转移,参数形式通常为符号地址。 (1)根据单个标志位的状态判断的转移指令 指 令 转 移 条 件 说 明 JC dest CF=1 有进位/借位时,转移 JNC dest CF=0 无进位/借位时,转移 JZ/JE dest ZF=1 相等或等于0时,转移 JNZ/JNE dest ZF=0 不相等或等于0时,转移 JS dest SF=1 为负数时,转移 JNS dest SF=0 为正数时,转移 JO dest OF=1 有溢出时,转移 JNO dest OF=0 无溢出时,转移 JP dest PF=1 1的个数为偶数时,转移 JNP dest PF=0 1的个数为奇数时,转移 JZ指令用法举例 例如: SUB AX,0 JZ ZERO ;当AX=0时,程序转移到ZERO处执行 (2)根据两个无符号数的比较结果判断的转移指令 指 令 转 移 条 件 说 明 JA/JNBE dest CF=0且ZF=0 XY时,转移 JAE/JNB dest CF=0或ZF=1 X≥Y时,转移 JB/JNAE dest CF=1且ZF=0 XY时,转移 JBE/JNA dest CF=1或ZF=1 X≤Y时,转移 例如: CMP AX,0 JA POSITIVE ;当AX0时,程序转移到POSITIVE处执行 (3)根据两个带符号数的比较结果判断的转移指令 指 令 转 移 条 件 说 明 JG/JNLE dest SF=OF且ZF=0 XY时,转移 JGE/JNL dest SF=OF或ZF=1 X≥Y时,转移 JL/JNGE dest SF?OF且ZF=0 XY时,转移 JLE/JNG dest SF?OF或ZF=1 X≤Y时,转移 例如: CMP AX,BX JG GREATER ;当AXBX时,程序转移到GREATER处执行 (4)若CX为0则转移的转移指令 格式:JCXZ 目标地址 功能:当(CX)=0时,程序转移至目标地址处。 例如: CMP CX,0 JCXZ ZERO ;当CX=0时,程序转移到ZERO 【例3-20】 在内存数据段2010H单元存放了一个16位无符号数。编写汇编程序段,判断该数是否是偶数。如果该数是偶数,则将CH置1,否则CH清0。 MOV AX,[2010H] TEST AX,0001H JZ ISEVEN MOV CH,0 JMP FINISH ISEVEN: MOV CH,1 FINISH: … 3.循环控制指令 循环控制指令用于控制程序重复执行。 循环控制指令提供了程序段循环的控制及手段。 循环控制指令都用CX寄存器作为循环次数计算器,表示某程序段的最大循环次数,且循环体每执行一次,CX被减去1。 8088/8086 CPU规定:被循环的程序段必须在同一段内,且长度不能大于256字节。 循环控制指令不影响标志位。 (1)循环指令 格式:LOOP 目标地址 功能: ① CX ← CX - 1 ② 如果CX = 0,结束循环,执行后续语句;否则: ③ 转移到标号处,循环体被重复。 (2)相等循环指令 格式:LOOPZ/LOOPE 目标地址 功能: ① CX ← CX - 1 ② 如果CX = 0或ZF= 0,结束循环,执行后续语句;否则: ③ 转移到标号处,循环体被重复。 (3)不相等循环指令 格式:LOOPNZ/LOONE 目标地址 功能: ① CX ← CX - 1 ② 如果CX =0或ZF=1,结束循环,执行后续语句;否则: ③ 转移到标号处,循环体被重复。 【例3-21】 在首地址

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档