文章
7
粉丝
0
获赞
0
访问
3.9k
(1) 程序跳转相关指令分析
• 会使程序发生跳转的指令:jmp(第3条)、je(第10条)、jl(第14条)。
• 寻址方式:这几条指令都采用直接寻址方式,跳转目标地址直接在指令中给出(或通过相对偏移计算得到)。
• 第3条指令jmp的跳转目标地址计算:指令地址为08048088H,jmp指令的操作码后跟着的是相对偏移量EB 21(十六进制)。EB是操作码,21H是相对偏移量(十进制为33)。跳转目标地址 = 当前指令地址 + 指令长度 + 相对偏移量。jmp指令长度为2字节,所以目标地址为08048088H + 2H + 21H = 080480ABH。
(2) 标志位、溢出标志和零标志分析
• 标志位判断:指令je表示“有符号数相等则转移”,依据**零标志(ZF)**判断。若sum == 150时执行je跳转,说明之前的比较操作使ZF = 1(表示相等)。
• 溢出标志(OF):sum是int类型(32位带符号整数),范围为-2^{31}到2^{31}-1(即-2147483648到2147483647)。150在该范围内,所以溢出标志OF = 0。
• 零标志(ZF):因为sum == 150 ≠ 0,所以零标志ZF = 0。
(3) 指令功能、cx寄存器内容及寻址方式分析
• 第5条shl、第6条add和第7条movl的功能:
◦ shl$2, %eax:将%eax中的值逻辑左移2位,相当于乘以4(因为数组元素A...
登录后发布评论
暂无评论,来抢沙发