汇编-简单的条件转移指令应用-附例子:判断坐标所在象限
在汇编分支程序设计中,条件转移指令扮演着很重要的角色
首先让我们认识一下简单的条件转移指令:
这些指令都是通过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
完。
加油!相信自己!
提示:代码虽好,但步骤同样重要,动手更重要!
汇编-简单的条件转移指令应用-附例子:判断坐标所在象限相关推荐
- 汇编中的条件转移指令
条件转移指令可以根据某种条件,决定是否修改偏移地址.下面通过一段代码学习一下. 上面程序的功能是:统计data段中数值为8的字节的个数,用ax保存结果.data段定义了8个数,每个数占一个字节. cm ...
- 170420 汇编-其他条件转移指令
1625-5 王子昂 总结<2017年4月20日> [连续第201天总结] A. 汇编 第十一章 90% B. 检测比较结果的条件转移指令: 转移指的是它能够修改IP:条件指的是它可以根据 ...
- 标志寄存器PSW和汇编条件转移指令解释
标志寄存器PSW 标志寄存器PSW(程序状态字寄存器PSW) 标志寄存器PSW是一个16为的寄存器.它反映了CPU运算的状态特征并且存放某些控制标志.8086使用了16位中的9位,包括6个状态标 ...
- 汇编:JCXZ条件转移指令
jcxz = j:jmp cx:cx寄存器 z:zero(当cx寄存器中的值为0时,进行跳转) jcxz指令与loop指令正好相反. loop指令:当cx寄存器的值不等于0时,才进行跳转. 所有 ...
- 贺利坚老师汇编课程57笔记:CMP和JXXX配合实现条件转移指令if
指路老师的博客 实现分支程序设计 套路 CMP OPER1,OPER2;或者其他影响标志寄存器的指令 JXXX 标号 恐惧 JXXX系列指令和CMP指令配合,构造条件转移指令 不必考虑CMP指令对相关 ...
- 【8086汇编】cmp指令和条件转移指令jxxx
1.定义 2.无符号比较影响标志位 3.有符号比较影响标志位 4.各种条件转移指令 5.cmp配合条件转移的使用
- 【汇编语言与计算机系统结构笔记07】条件码,比较、测试、条件跳转与条件转移指令,结合微体系结构与流水的说明
本次笔记内容: 08.控制流-1 文章目录 条件码 基于add的CF, ZF, SF, OF 比较(Compare)指令 测试(Test)指令 读取条件码(SetX)指令 例子 拓展:流水设计与微体系 ...
- 十五分钟实现Google Talk客户端(附例子)
十五分钟实现Google Talk客户端(附例子) ChinaUnix博客-中国最专业的IT技术博客 - Powered by UCenter Home 十五分钟实现Google Talk客户端(附例 ...
- MySQL:单表查询---简单查询+条件查询+高级查询+表和字段取别名
目录 一.通用模版展示 简单查询 条件查询 高级查询 表和字段取别名 二.举例说明 简单查询 条件查询 高级查询 表和字段取别名 三.注意事项 四.Mapper简单举例 简单查询 条件查询 高级查询 ...
最新文章
- 画图手册 | ImageGP:今天你“plot”了吗?
- 2021十大科技趋势来了!阿里巴巴达摩院全新发布
- [导入]JavaScript 滚动特效代码
- pandas把多个列相加求和、输出字母a-z
- Java 小故事系列 导航
- java oom分析_作为测试你应该知道的JAVA OOM及定位分析
- 多维数组的行优先和列优先, 数据描述语言
- 接口规范 8. 播出认证相关接口
- 救命神文!应对ubuntu磁盘空间不足(已解决)
- Windows下的发包工具推荐[Colasoft Packet Builder]含使用教程
- 如何有效去除博客上的广告
- Amcharts曲线图,简单明了,看完立马就上手
- linux用户修改和密码管理
- 二零零九年经典雷人语录总汇四百零五条[转的]
- AOP的两种动态代理机制
- 蒟蒻重返c++,学海拾贝
- 【Simulink教程案例13】基于QPSK的位同步simulink建模与仿真分析
- 北京理工大学在职计算机博士,北京理工大学在职博士招生简章中的相关说明
- 云南计算机专修学校附中,2015昆明最强高中排行榜出炉 师大附中拿下第一
- 使用C语言实现简单的PNG图像读取
热门文章
- 40.QT-QPropertyAnimationdong和QParallelAnimationGroup动画实现
- spark dataFrame withColumn
- 【Treap】[BZOJ 3224]Tyvj 1728 普通平衡树
- 陕西国防 c语言第三章实训三答案,C语言程序设计(上)
- [JSP暑假实训] 四.MyEclipse+Servlet+JSP实现火车票网站查询、修改、删除操作
- RxSwift之深入解析dispose源码的实现原理
- 【数据结构与算法】之栈与队列的应用和操作
- 大数据WEB阶段Spring框架(一)IOC控制反转、DI注入依赖
- 【STM32】串口通信编程
- 【Qt】Qt5.9编译MySQl5.7驱动