汇编语言中cmp指令用法笔记与总结
这篇文章主要介绍了汇编语言中cmp指令用法,结合实例形式总结分析了汇编语言cmp指令基本功能、使用方法及操作注意事项,需要的朋友可以参考下
本文实例讲述了汇编语言中cmp指令用法。分享给大家供大家参考,具体如下:
cmp是比较指令,cmp的功能是相当于减法指令,只是不保存结果.cmp指令执行后,将对标志寄存器产生影响.其他相关指令通过识别这些被影响的标志寄存器来得知比较结果.
cmp指令格式: cmp 操作对象1,操作对象2
功能: 计算操作对象1 - 操作对象2 但不保存结果,仅仅根据计算结果对标志寄存器进行设置.比如cmp ax,ax 是做ax - ax 的运算,结果为0,但并不在ax中保存,仅影响flag的相关各位.
指令执行后: zf = 1,pf = 1,sf = 0,cf = 0,of = 0;
下面的指令:
mov ax,8
mov bx,3
mov ax,bx
执行后: (ax)= 8,zf = 0,pf = 1,sf = 0, cf = 0, of = 0
如果 ax = bx 则 ax - bx = 0 ,所以 : zf = 1
如果 ax != bx 则ax - bx != 0,所以 : zf = 0
如果ax < bx 则ax - bx 将产生错位,所以 : cf = 1
如果 ax >= bx 则 ax - bx 将不必借位,所以 : cf = 0
如果ax > bx 则 ax - bx 既不必借位,结果又不为0, 所以 : cf = 0 并且 zf = 0
如果 ax <= bx 则ax - bx 既可能借位,结果可能为0,所以 : cf = 1 或 zf =1
检测比较结果的条件转移指令
je 等于则转移 zf=1
jne 不等于则转移 zf=0
jb 低于则转移 cf=1
jnb 不低于则转移 cf=0
ja 高于则转移 cf=0且zf=0
jna 不高于则转移 cf=1或zf=1
e : equal
ne : not equal
b: below
nb : not below
a : above
na : not above
编程: 统计data段中数值小于8的字节的个数,用ax保存统计结果
mov ax,data
mov ds,ax
mov ax,0 ;初始化累加器
mov bx,0 ;ds:bx指向第一个字节
mov cx,8
s : cmp byte ptr [bx] , 8 ;和8进行比较
jnb next ;如果不小于8转到next,继续循环
inc ax ;如果小于8就将计数值加1
next:inc bx
loop s
mov ax,data
mov ds,ax
mov ax,0 ;初始化累加器
mov bx,0 ;ds:bx指向第一个字节
mov cx,8
s : cmp byte ptr [bx] , 8 ;和8进行比较
jnb next ;如果不小于8转到next,继续循环
inc ax ;如果小于8就将计数值加1
next:inc bx
loop s
程序执行后: ax = 2
还有疑问的可以去查看一下指令手册,讲解的比较细致
希望本文所述对大家汇编语言程序设计有所帮助。
您可能感兴趣的文章:
汇编语言无效指令错误概述
汇编语言lea指令使用方法解析
汇编语言中mov和lea指令的区别详解
16位汇编语言寄存器及指令整理(小结)
汇编语言 and和or逻辑运算指令的实现
详解汇编语言RCL(带进位循环左移)和RCR(带进位循环右移)指令
汇编语言指令集之条件转移指令实现
汇编语言指令集之串处理指令讲解
汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(推荐)
详解汇编语言 dup伪指令
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
原文链接:https://blog.csdn.net/zer1123/article/details/53954845/
也许是最全java资料!(文档+项目+资料)【点击下载】 和努力的人一起学习Java!
汇编语言cmp指令
相关文章
汇编跳转指令使用总结
汇编跳转指令使用总结
这篇文章主要介绍了汇编跳转指令使用总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-01-01
汇编 JCC指令表与笔记
汇编 JCC指令表与笔记
这篇文章主要介绍了汇编 JCC指令表与笔记,需要的朋友可以参考下2020-01-01
汇编语言:比较指令、跳转指令、JCC的使用
汇编语言:比较指令、跳转指令、JCC的使用
这篇文章主要介绍了汇编语言:比较指令、跳转指令、JCC的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-01-01
用汇编语言实现从1加到100的方法(1+2+…+100)
用汇编语言实现从1加到100的方法(1+2+…+100)
这篇文章主要介绍了用汇编语言实现从1加到100的方法(1+2+…+100),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-01-01
汇编语言指令集之串处理指令讲解
汇编语言指令集之串处理指令讲解
这篇文章主要介绍了汇编语言指令集之串处理指令讲解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2020-01-01
汇编语言 跳转指令与C语言的条件分支
汇编语言 跳转指令与C语言的条件分支
这篇文章主要介绍了汇编语言 跳转指令与C语言的条件分支,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-03-03
汇编环境搭建之如何快速安装和配置DOSBox
汇编环境搭建之如何快速安装和配置DOSBox
这篇文章主要介绍了汇编环境搭建之如何快速安装和配置DOSBox,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2020-01-01
汇编语言中mov和lea指令的区别详解
汇编语言中mov和lea指令的区别详解
指令(instruction)是一种语句,它在程序汇编编译时变得可执行。本文给大家总结一下汇编语言中mov和lea指令的区别详解,感兴趣的朋友跟随小编一起看看吧2020-01-01
ARM体系下的GCC内联汇编教程详解
ARM体系下的GCC内联汇编教程详解
在操作系统级的编程中,有时候,C语言并不能完全的使用硬件的功能,这时候就需要嵌入一些汇编代码来实现功能。这篇文章主要介绍了ARM体系下的GCC内联汇编,需要的朋友可以参考下2020-02-02
通过汇编看golang函数的多返回值问题
通过汇编看golang函数的多返回值问题
这篇文章主要介绍了通过汇编看golang函数的多返回值问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,