x86汇编_条件跳转示例_笔记_36

两个数中的较大数

下面的代码比较了 EAX 和 EBX 中的两个无符号整数,并且把其中较大的数送入 EDX:

mov edx, eax                ;假设EAX存放较大的数
cmp eax, ebx                ;若 EAX ≥ EBX
jae L1                      ;跳转到 L1
mov edx, ebx                ;否则,将 EBX 的值送入 EDX
L1:                

以上代码个人认为写成这样更直观,但却变得臃肿,并不可取。

mov eax, 1
mov ebx, 2
cmp eax, ebx
jbe L1      ;如果eax<=ebx
ja L2       ;如果eax>ebx
L1: mov edx, eax
jmp finish
L2: mov edx, edx
jmp finish
finish:

三个数中的最小数

下面的代码比较了分别存放于三个变量 VI、V2 和 V3 的无符号 16 位数值,并且把其中最小的数送入AX。理解的重点,jbe L1是if的第一个分支,下面紧接的其它指令其实是另一个if分支。这与高级语言的if……then……else……结构一样的道理,但是高级语言的写法容易理解。

.data
V1 WORD 1
V2 WORD 2
V3 WORD 3

.code
        mov    ax, V1     ;假设 V1 是最小值
        cmp    ax, V2     ;如果 AX ≤ V2
        jbe    L1         ;跳转到 L1
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值