在汇编分支程序设计中,条件转移指令扮演着很重要的角色

首先让我们认识一下简单的条件转移指令:
这些指令都是通过flag寄存器中的标志位进行判断的
一般情况下使用CMP指令影响标志位结合这些指令执行

相当于高级语言的if,else

如图:

例题:

做出分析:
主要是判断是否为0,以及它的正负情况。
所以:
主要应用条件转移指令,判断不同象限,主要指令:JZ/JE,JNS/JS,JMP

假设:
为方便查看结果,可将K输出为对应的ascll字符,既是48到52,达到k=i的显示效果

那么代码部分:

数据段:

判断坐标位置的子过程:

judgement:;判断X,Y;X或者Y为0,为坐标轴一点CMP X,0JZ TO_XYCMP Y,0JZ TO_XY;为象限上一点CMP X,0;X>0时,在1,4JNS TO_14;JS TO_23;X<0时,在2,3CMP Y,0;第2象限JNS TO_2;第3象限MOV K ,51JMP  BREAKTO_14:CMP Y,0;第1象限JNS TO_1;第4象限MOV K ,52JMP  BREAK;跳转到0,代表坐标轴TO_XY:MOV K ,48JMP  BREAK;第1象限TO_1:MOV K ,49JMP  BREAK;第2象限TO_2:MOV K ,50JMP  BREAKBREAK: CALL print
RET

输出象限子过程:

print:;输出象限与回车MOV DX,OFFSET KMOV K[1],'$'MOV AH,09HINT 21HMOV AH,02HMOV DL,0AHINT 21H
RET

主过程:

STRAT:MOV AX,DATAMOV DS,AX;原点(0,0)CALL judgement;给出正负MOV CX,5MOV BX,0FFF5H;1象限(5,5)MOV X,CXMOV Y,CXCALL judgement;2象限(-5,5)MOV X,BXCALL judgement;3象限(-5,-5)MOV Y,BXCALL judgement;4象限(5,-5)MOV X,CXCALL judgementMOV AH,4CHINT 21H

可以得到结果:

完整源代码:

;@author:joker
;@date: 2020-5-11
;@description: 第十次作业第一题;判断象限和坐标轴;以ascll码为k=i;x,y为原点与4个象限坐标,自动扩展为字变量
DATA SEGMENTX DW 0H;横坐标Y DW 0H;纵坐标K DB 0H;象限i的ascll码
DATA ENDSCODE SEGMENT
ASSUME CS:CODE,DS:DATA
print:;输出象限与回车MOV DX,OFFSET KMOV K[1],'$'MOV AH,09HINT 21HMOV AH,02HMOV DL,0AHINT 21H
RET
judgement:;判断X,Y;X或者Y为0,为坐标轴一点CMP X,0JZ TO_XYCMP Y,0JZ TO_XY;为象限上一点CMP X,0;X>0时,在1,4JNS TO_14;JS TO_23;X<0时,在2,3CMP Y,0;第2象限JNS TO_2;第3象限MOV K ,51JMP  BREAKTO_14:CMP Y,0;第1象限JNS TO_1;第4象限MOV K ,52JMP  BREAK;跳转到0,代表坐标轴TO_XY:MOV K ,48JMP  BREAK;第1象限TO_1:MOV K ,49JMP  BREAK;第2象限TO_2:MOV K ,50JMP  BREAKBREAK: CALL print
RET
STRAT:MOV AX,DATAMOV DS,AX;原点(0,0)CALL judgement;给出正负MOV CX,5MOV BX,0FFF5H;1象限(5,5)MOV X,CXMOV Y,CXCALL judgement;2象限(-5,5)MOV X,BXCALL judgement;3象限(-5,-5)MOV Y,BXCALL judgement;4象限(5,-5)MOV X,CXCALL judgementMOV AH,4CHINT 21HCODE ENDS
END STRAT

完。
加油!相信自己!

提示:代码虽好,但步骤同样重要,动手更重要!

汇编-简单的条件转移指令应用-附例子:判断坐标所在象限相关推荐

  1. 汇编中的条件转移指令

    条件转移指令可以根据某种条件,决定是否修改偏移地址.下面通过一段代码学习一下. 上面程序的功能是:统计data段中数值为8的字节的个数,用ax保存结果.data段定义了8个数,每个数占一个字节. cm ...

  2. 170420 汇编-其他条件转移指令

    1625-5 王子昂 总结<2017年4月20日> [连续第201天总结] A. 汇编 第十一章 90% B. 检测比较结果的条件转移指令: 转移指的是它能够修改IP:条件指的是它可以根据 ...

  3. 标志寄存器PSW和汇编条件转移指令解释

    标志寄存器PSW 标志寄存器PSW(程序状态字寄存器PSW)    标志寄存器PSW是一个16为的寄存器.它反映了CPU运算的状态特征并且存放某些控制标志.8086使用了16位中的9位,包括6个状态标 ...

  4. 汇编:JCXZ条件转移指令

    jcxz =  j:jmp  cx:cx寄存器  z:zero(当cx寄存器中的值为0时,进行跳转) jcxz指令与loop指令正好相反. loop指令:当cx寄存器的值不等于0时,才进行跳转. 所有 ...

  5. 贺利坚老师汇编课程57笔记:CMP和JXXX配合实现条件转移指令if

    指路老师的博客 实现分支程序设计 套路 CMP OPER1,OPER2;或者其他影响标志寄存器的指令 JXXX 标号 恐惧 JXXX系列指令和CMP指令配合,构造条件转移指令 不必考虑CMP指令对相关 ...

  6. 【8086汇编】cmp指令和条件转移指令jxxx

    1.定义 2.无符号比较影响标志位 3.有符号比较影响标志位 4.各种条件转移指令 5.cmp配合条件转移的使用

  7. 【汇编语言与计算机系统结构笔记07】条件码,比较、测试、条件跳转与条件转移指令,结合微体系结构与流水的说明

    本次笔记内容: 08.控制流-1 文章目录 条件码 基于add的CF, ZF, SF, OF 比较(Compare)指令 测试(Test)指令 读取条件码(SetX)指令 例子 拓展:流水设计与微体系 ...

  8. 十五分钟实现Google Talk客户端(附例子)

    十五分钟实现Google Talk客户端(附例子) ChinaUnix博客-中国最专业的IT技术博客 - Powered by UCenter Home 十五分钟实现Google Talk客户端(附例 ...

  9. MySQL:单表查询---简单查询+条件查询+高级查询+表和字段取别名

    目录 一.通用模版展示 简单查询 条件查询 高级查询 表和字段取别名 二.举例说明 简单查询 条件查询 高级查询 表和字段取别名 三.注意事项 四.Mapper简单举例 简单查询 条件查询 高级查询 ...

最新文章

  1. 画图手册 | ImageGP:今天你“plot”了吗?
  2. 2021十大科技趋势来了!阿里巴巴达摩院全新发布
  3. [导入]JavaScript 滚动特效代码
  4. pandas把多个列相加求和、输出字母a-z
  5. Java 小故事系列 导航
  6. java oom分析_作为测试你应该知道的JAVA OOM及定位分析
  7. 多维数组的行优先和列优先, 数据描述语言
  8. 接口规范 8. 播出认证相关接口
  9. 救命神文!应对ubuntu磁盘空间不足(已解决)
  10. Windows下的发包工具推荐[Colasoft Packet Builder]含使用教程
  11. 如何有效去除博客上的广告
  12. Amcharts曲线图,简单明了,看完立马就上手
  13. linux用户修改和密码管理
  14. 二零零九年经典雷人语录总汇四百零五条[转的]
  15. AOP的两种动态代理机制
  16. 蒟蒻重返c++,学海拾贝
  17. 【Simulink教程案例13】基于QPSK的位同步simulink建模与仿真分析
  18. 北京理工大学在职计算机博士,北京理工大学在职博士招生简章中的相关说明
  19. 云南计算机专修学校附中,2015昆明最强高中排行榜出炉 师大附中拿下第一
  20. 使用C语言实现简单的PNG图像读取

热门文章

  1. 40.QT-QPropertyAnimationdong和QParallelAnimationGroup动画实现
  2. spark dataFrame withColumn
  3. 【Treap】[BZOJ 3224]Tyvj 1728 普通平衡树
  4. 陕西国防 c语言第三章实训三答案,C语言程序设计(上)
  5. [JSP暑假实训] 四.MyEclipse+Servlet+JSP实现火车票网站查询、修改、删除操作
  6. RxSwift之深入解析dispose源码的实现原理
  7. 【数据结构与算法】之栈与队列的应用和操作
  8. 大数据WEB阶段Spring框架(一)IOC控制反转、DI注入依赖
  9. 【STM32】串口通信编程
  10. 【Qt】Qt5.9编译MySQl5.7驱动