布尔和比较指令

  • and

and destination, source

and reg, reg/mem/imm

and mem, reg/imm

mov al, 10101110b
and al, 11110110b.data
array byte 50 dup(?)
.code
mov ecx, lengthof array
mov esi, offset array
L1:and byte ptr [esi], 11011111binc esi
loop L1

and 总是清除溢出标志和进位标志,并根据目标操作数的值来修改符号标志,零标志,奇偶标志。

  • or

or destination, source

or reg, reg/mem/imm

or mem, reg/imm

or 总是清除溢出标志和进位标志,并根据目标操作数的值来修改符号标志,零标志,奇偶标志。

mov al, 11100011b
or al, 00000100b
  • xor

xor destination, source

xor 总是清除溢出标志和进位标志,并根据目标操作数的值来修改符号标志,零标志,奇偶标志。

mov al, 10110101b
xor al, 0
mov al, 11001100b
xor al, 0mov ax, 64c1h
xor ah, al

xor指令把两个集合交集中的成员清0,并形成了其余位的并集

B0xorB1xorB2xorB3

  • not

not reg/mem

mov al, 11110000b
not al
  • test 进行逻辑与操作

xor 总是清除溢出标志和进位标志,并修改符号标志,零标志,奇偶标志。

test al, 00001001b

影响零标志,进位标志,符号标志,溢出标志,奇偶标志

位映射集

SetX = 10000000 00000000 00000000 00000111

mov eax, SetX

and eax, 10000b

  • 补集

    mov eax, SetX

    not eax

  • 交集

    mov eax, SetX

    and ea, SetY

  • 并集

mov eax, SetX

or eax, SetY

cmp

cmp destination, source(有无符号数)

溢出,符号,零,进位,辅助进位,奇偶标志

mov ax, 5
cmp ax, 10mov ax, 1000
mov cx, 1000
cmp cx, axmov si, 105
cmp si, 0

清除和设置标志位

test al, 0
and al, 0
or al, 0or al, 80h
and al, 7fhstc
clcmov al, 7fh
inc al
or eax, 0

64位模式下的布尔指令

.data
allones qword 0ffffffffffffffffh
.code
mov rax, allones
and rax, 80h
mov rax, allones
and rax, 8080h
mov rax, allones
and rax, 808080hmov rax, allones
adn rax, 80808080h ; rax = ffffffff80808080

Jcond指令

Jcond destination

jc, jnc, jz, jnz,jc, jnc, jo,jno,js,jns,jp,jnp

相等性的比较

je,jne,jcxz,jecxz,jrcxz

cmp eax, 5
je L1mov ax, 5
cmp ax, 6
jl L1mov ax, 5
jg L1
mov edx, 0a523h
cmp edx, 0a523h
jne L5
je L1mov bx, 1234h
sub bx, 1234h
jne L5
je L1mov cx, 0ffffh
inc cx
jcxz L2xor ecx, ecx
jecxz L2

无符号数比较

ja, jnbe, jae, jne, jb, jnae, jbe, ja

mov al, +127
cmp al, -128
ja IsAbove
jg IsGreater

有符号数比较

jg, jnle, jge, jnl, jl, jnge, jle, jng

mov edx, -1
cmp edx, 0
jnl L5
jnle L5
jl L1mov bx,+32
cmp bx, -35
jng L5
jnge L5
jge L1mov ecx, 0
cmp ecx, 0
jg L5
jnl L1mov ecx, 0
cmp ecx, 0
jl L5
jng L1
  • 测试状态位

    mov al, status
    test al, 00100000b
    jnz DeviceOfflinemov al, status
    test al, 00010011b
    jnz DeviceOfflinemov al, status
    and al, 10001100b
    cmp al, 10001100b
    je ResetMachine
    
  • 两个数中的较大数

mov edx, eax
cmp eax, ebx
jae L1
mov edx, ebx
L1:
  • 三个数中的最小数
.data
V1 word ?
V2 word ?
V3 word ?
.code
mov ax, V1
cmp ax, V2
jbe L1
mov ax, V2
L1:cmp ax, V3jbe L2
L2:
  • 循环直到按键
.data
char byte ?
.code
L1:mov eax, 10call Delaycall ReadKeyjz L1mov char, al

条件循环指令

LOOPZ和LOOPE指令

loopz(loope) destination

loopnz和loopne指令

loopnz(loopne) destination

.data
array sword -3, -6, -1, -10, 10, 30, 40, 4
sentinel sword 0
.code
mov esi, offset array
mov ecx, lengthof array
L1:test word ptr[esi], 8000hpushfdadd esi, type arraypopfdloopnz L1jnz quitsub esi, type array
quit:

汇编 and or xor not test cmp 条件跳转指令 jcc相关推荐

  1. 汇编--条件跳转指令

    条件跳转指令很多,支持根据有符号.无符号整数的比较以及对CPU状态标志的检查进行跳转的一系列指令. 根据特定的标志的 根据两操作数是否相等,或根据(E)CX的值是否相等 基于无符号操作数的比较结果的 ...

  2. 16.控制转移指令(条件跳转指令、比较条件跳转指令、多条件分支跳转指令、无条件跳转指令)

    目录 1.控制转移指令 1.1 条件跳转指令 1.2 比较条件跳转指令 1.3 多条件分支跳转指令 1.4 无条件跳转指令 1.控制转移指令 控制转移指令分为如下图所示的5种,其中比较指令在算术指令中 ...

  3. 汇编语言条件跳转指令汇总

    汇编语言条件跳转指令 基于特定标志位值的跳转 助记符 说明 标志位 JZ 为零跳转 ZF=1 JNZ 非零跳转 ZF=0 JC 进位跳转 CF=1 JNC 无进位跳转 CF=0 JO 溢出跳转 OF= ...

  4. arm64汇编b带条件跳转指令和bl跳转带返回ret指令

    文章目录 ret返回指令 B 跳转指令 BL 带返回的跳转指令 B指令可以接上后缀,用来和cmp比较后待条件的跳转 ret返回指令 cpu遇到ret之后,会把lr赋值给pc,这样cpu执行了pc里的地 ...

  5. 014-无条件跳转指令jmp+

    l  无条件跳转指令jmp l   goto指令 l   优化后的指令     l  标志寄存器PSW 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF T ...

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

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

  7. 关于汇编跳转指令的说明

    虽然jmp指令提供了控制转移,但是它不允许进行任何复杂的判断.80x86条件跳转指令提供了这种判断.条件跳转指令是创建循环和实现其他条件执行语句,如if-endif的基本要素. 条件跳转指令检查一个或 ...

  8. Win32ASM学习[17]:条件跳转

    ---------------------------------------------------------------------------------------------------- ...

  9. c语言 跨子程序跳转,PLC的条件跳转,子程序调用等指令使用方法

    原标题:PLC的条件跳转,子程序调用等指令使用方法 点 条件跳转指令: 指令名称,助记符,指令代码,程序步如下表: 程序步可以是连续执行或者是脉冲执行,CJ执行的为3步,CJ(P)为1步. 指令格式: ...

最新文章

  1. 因为爱情,才有了思科
  2. C++中关键字的理解--Static
  3. 整型和浮点型的区别_C的基础内容:常量之数值型常量,适合新手的学习
  4. 项目启动QRTZ_LOCKS‘ doesn‘t exist
  5. 你还记得当初是怎么对我的吗? | 今日最佳
  6. 编写高质量代码的50条黄金守则
  7. Hadoop集群安装(真分布式)
  8. 苏宁入局区块链;山东用阿里的AI抓违建;印度拟让苹果退网 | 极客头条
  9. 基于bootstrap 的AceAdmin 1.4版本(iframe修改)
  10. single无效,使用maxLines
  11. 带农历的html日历插件,魔镜日历插件-可生成带农历的日历月历年历-CDR插件
  12. nginx反向代理是什么意思
  13. 快速入门基于区块链的BPM系统--汇流BPM
  14. 【Linux】3.0Linux进程概念
  15. OPPO手机生日倒计时天数怎么在便签中设置?
  16. 中国前十软件公司招聘官网聚合
  17. 搬:五大车载操作(VOS)系统优劣对比,车载系统架构分析
  18. js-高德地图规划路线
  19. 下载漫画网站图片示例
  20. commvault oracle备份,Commvault Oracle备份常用命令

热门文章

  1. 存储过程系列之调试存储过程 SQL Server 2005
  2. (五十九)自动存储、静态存储、动态存储
  3. intellij idea 15,webstorm 最新注册破解
  4. ***S 2012 交互式报表 -- 钻取式报表
  5. 【语法】点语法的应用
  6. Centos6.3下apache+svn部署web版本同步
  7. 使用django的用户帐号登录openfire
  8. 【bzoj4832】[Lydsy1704月赛]抵制克苏恩 期望dp
  9. as用百度地图不联网就gg
  10. 阿里大鱼.net core 发送短信