1个回答
展开全部
要知道怎么来,需要理解两个基本概念,指令地址和指令长度:
指令地址,编译器在编译时,会根据指令的长度,累加计算出一个段内的指令的地址。
如图中第一条指令"inc ax"的地址(严格来说是相对与该代码段的偏移地址)为0,指令长度为1;
以此类推,第二条指令的地址为1,指令长度为2(两个字节长);
第三条指令的地址为3(等于前两条指令长度相加),指令长度为3.
另一个需要理解的关键点就是,指令执行时,当前指令指针IP(或EIP)已经指向下以指令地址,也就是说,在x86芯片架构中,call,jmp,及其它条件跳转指令偏移量的增加或减少都是相对下一指令地址(call,jmp等指令结尾处)而言的,所以:
s0的标号代码第四条指令的指令地址,6,第二条指令“jmp s0”计算跳转偏移量的地址为第三条指令地址3(第二条指令结尾处),即有6-3;
同理,s标号代表第一条指令地址0,低五条指令计算跳转偏移量的地址为第六条指令地址(第五条指令结尾处)9,所以有9-0
指令地址,编译器在编译时,会根据指令的长度,累加计算出一个段内的指令的地址。
如图中第一条指令"inc ax"的地址(严格来说是相对与该代码段的偏移地址)为0,指令长度为1;
以此类推,第二条指令的地址为1,指令长度为2(两个字节长);
第三条指令的地址为3(等于前两条指令长度相加),指令长度为3.
另一个需要理解的关键点就是,指令执行时,当前指令指针IP(或EIP)已经指向下以指令地址,也就是说,在x86芯片架构中,call,jmp,及其它条件跳转指令偏移量的增加或减少都是相对下一指令地址(call,jmp等指令结尾处)而言的,所以:
s0的标号代码第四条指令的指令地址,6,第二条指令“jmp s0”计算跳转偏移量的地址为第三条指令地址3(第二条指令结尾处),即有6-3;
同理,s标号代表第一条指令地址0,低五条指令计算跳转偏移量的地址为第六条指令地址(第五条指令结尾处)9,所以有9-0
迪凯特科技(北京)有限公司
2023-07-28 广告
2023-07-28 广告
RS232串行通讯的数据格式包括以下组成部分:1. 起始位:一位,用于表示数据的开始。2. 数据位:通常为8位,但也可以是7位或9位。3. 校验位:可以选择奇偶校验或无校验。4. 停止位:一位,用于表示数据的结束,也可以选择使用1.5个或2...
点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询