汇编cmp指令和条件转移指令实现高级语言中的IF语句功能
本文由发表于7年前 | 汇编语言 | 评论数 2 |  被围观 12,773 views+

CPU提供了cmp指令,其功能相当于减法指令,相当于比较大小。只是不保存结果,执行后,对应的标志寄存器也将产生影响。je指令是无符号数的比较结果进行转移的条件转移指令(jump equanl:即是结果等于则转移),它进行的操作是零标志位zf=1时则转移。
将cmp指令和je指令配合使用,可以实现根据比较结果进行转移的功能,其功能有点像高级语言中的IF语句。

下面举个例子:统计data段中数值为23的字节的个数,用ax保存统计结果。

汇编代码
data segment
	db 10,23,1,3,23,5,12,23,6,9
data ends

code segment
	start:	mov ax,data
			mov ds,ax
			mov bx,0	;bx指向第一个字节
			mov ax,0	;ax存放23数字的个数
			mov cx,10	;循环10次
		s:	cmp byte ptr [bx],23	;bx中的数字和23对比
			je ok	;如果等于23,则执行ok
			jmp short next	;如果不相等,就转到next,继续循环
		ok:	inc ax	;如果相等就将计数值加1
	next:	inc bx	;指向下一个数字
			loop s

			mov ax,4c00h
			int 21h

code ends
end start

上面的程序根据无符号数的比较结果使用转移指令实现跳转比较,主要是cmp、标志寄存器的相关位和条件转移指令三者配合的使用。

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/cmp-assembly-instructions-and-conditional-branch-instructions-to-achieve-high-level-language-functions-in-the-if-statement.html
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 4/18
文章评论
    2条评论
  1. 冰封 2014年05月31日10:02:18  #-49楼 回复 回复

    大二也要学习汇编了,听说很难学。。

  2. 冰封 2014年05月31日10:03:09  #-48楼 回复 回复

    站长 qq多少? 加好友交个朋友吧!

给我留言

有人回复时邮件通知我
汇编语言的相关文章
随机文章 本月热门 热评
1 在YUI中通过YUI.add()添加自定义模块 2012/1/10
2 InvalidMappingException提示Could not parse mapping document错误的解决方法 2011/5/26
3 Java Web笔记 – 简单的权限管理控制实现 2011/11/12
4 关于学习新技术的方法和让自己不断进步的一点建议 2011/5/27
5 8251A的编程约定 2011/4/24
6 Struts2笔记 – Struts2中访问Web元素的3中方法 2011/6/19
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.