c语言中的转移指令,1.条件转移指令 JL/JNGE

 命令栏指令

一、OD调试

重新开始:Ctrl+F2

转到地址:CTRL+G

断点切换: F2

断点窗口: Alt+B

运行 : F9

暂停 : F12

单步步过: F8 //遇到CALL跳过

单步步入: F7 //遇到CALL进入

运行到选定位置 :F4 //这个主菜单上没有,右键菜单-断点-F4

反汇编窗口中跟随 :回车键enter

跟随: 回车键enter //进入某个地址

右键菜单--转到

+号:转到下一步 //Plus

-号:转到上一步 //Minus

*号:转到当前指令地址 //EIP

寄存器窗口:

二、命令栏指令

bp 下断点

bc 清除断点

dd 以双字方式显示数据

dw 以字方式显示数据

db 以字节方式显示数据

? 计算表达式的值

ZF零标志位:若当前的运算结果为零,则ZF为1,否则为0。

SF符号标志位:该标志位与运算结果的最高位相同。即运算结果为负,则SF为1,否则为0。

OF溢出标志位:若运算结果超出机器能够表示的范围称为溢出,此时OF为1,否则为0。判断是否溢出的方法是:进行二进制运算时,最高位的进位值与次高位的进位值进行异或运算,若运算结果为1则表示溢出OF=1,否则OF=0

PF奇偶标志:当运算结果的最低16位中含1的个数为偶数则PF=1否则PF=0

AF辅助进位标志:一个加法(减法)运算结果的低4位向高4位有进位(或借位)时则AF=1否则AF=0

另外还有三个控制标志位用来控制CPU的操作,可以由程序进行置位和复位。

TF跟踪标志:该标志位为方面程序调试而设置。若TF=1,8086/8088CPU处于单步工作方式,即在每条指令执行结束后,产生中断。

IF中断标志位:该标志位用来控制CPU是否响应可屏蔽中断。若IF=1则允许中断,否则禁止中断。

DF方向标志:该标志位用来控制串处理指令的处理方向。若DF=1则串处理过程中地址自动递减,否则自动递增。

OD里能查看到 除IF标志外的 8个标志位

一、指令格式

条件转移指令 JL/JNGE

格式: JL/JNGE 标号地址

功能: 小于/不大于等于时转移 标号地址

JNGE 有符号 不大于等于 则跳转 //Jump if Not Greater or Equal

JL 有符号 小于 则跳转 //Jump if Less

SF=1; 符号标志位为1 则跳转到标号地址执行

// jlgoto.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])

{

printf("begin\n");

//>=

int a=0xA;

int b=0x20;

//if (a>=b) //jl

//{

// printf("do this");

//}

//S上方的代码为c语言代码 下方的代码为汇编语言代码 本质上是相同的

__asm

{

mov ebx,b

sub a,ebx//在这时因为a-ebx等于负数了 所以符号标志位为1

jnge end//jnge和jl所描述的是一个东西

mov ebx,ebx

jl end

}

//<

end:

printf("end\n");

return 0;

}

9e962421270b

image.png

001A1012 |. 83C4 04 add esp,0x4

001A1015 |. C745 FC 0A000>mov dword ptr ss:[ebp-0x4],0xA ; a=0xA

001A101C |. C745 F8 20000>mov dword ptr ss:[ebp-0x8],0x20 ; b=0x20;

001A1023 |. 8B5D F8 mov ebx,dword ptr ss:[ebp-0x8] ; ebx =0x20

001A1026 |. 295D FC sub dword ptr ss:[ebp-0x4],ebx ; 0xA-0x20这时会把符号标志位sf为1

001A1029 |. 7C 04 jl short jlgoto.001A102F ; 当符号标志位为1时 jl会跳转到地址 001A102F

001A102B |. 8BDB mov ebx,ebx

001A102D |. 7C 00 jl short jlgoto.001A102F

001A102F |> 68 FC201A00 push jlgoto.001A20FC ; /format = "end

"

001A1034 |. FF15 A0201A00 call dword ptr ds:[] ; \printf

001A103A |. 83C4 04 add esp,0x4

001A103D |. 33C0 xor eax,eax

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值