if...else语句在汇编语言的实现

  • 2017-12-23 17:08

这里参考的是王爽老师的《汇编语言》第二版的第十一章 标志寄存器的内容。

11.9 检测比较结果的条件转移指令
其中常用的根据无符号数的比较结果进行转移的条件转移指令(部分内容)。

指令 含义 检测的相关标志位
je 等于则转移 zf=1
jb 小于则转移 cf=1
ja 高于则转移 cf=0且zf=0

我们以if 中条件为==为例。如果(ah)=(bh),则(ah) =(ah)+(ah),否则(ah) = (ah) + (bh)。

cmp ah, bh   #s1
je s               #s2
add ah, bh   #s3
jmp ok         #s4
    s:add ah, ah #s5
ok: :            #s6

如果用c语言的if...else语句来看的话,s3为else括号内的语句。也就是说无论是走if还是else分支,都会有一次跳转。

区间问题

  • 循环的次数统计
     1.[a,b),次数为b - a
     2.[a,b],次数为b - a + 1。特别情况:当a=1时,如果为[a,b],则结果为b

你可能感兴趣的:(if...else语句在汇编语言的实现)