汇编cmp指令和条件转移指令实现高级语言中的IF语句功能
本文由发表于6年前 | 汇编语言 | 评论数 2 |  被围观 12,769 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 Javascript笔记 – 面向对象的Javascript编程 2012/5/31
2 代码中有99个bug 2014/7/14
3 JVM笔记 – 虚拟机执行子系统(虚拟机字节码执行引擎) 2015/3/1
4 NodeJS学习笔记 – 入门简介 2013/10/9
5 ExtJS概述及其开发环境的搭建及遇到的Spket安装问题 缺少ext.jsb文件 2011/7/23
6 Java基础笔记 – Annotation注解的介绍和使用 自定义注解 2011/11/2
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

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

联系我们:admin@itzhai.com

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