王爽汇编语言 检测点10.4

本文详细解析了16位汇编语言中的mov、call和add指令的执行过程,包括寄存器ax、bp的赋值,以及通过call指令实现的流程控制。通过实例说明了如何使用call指令进行子程序调用,并解释了堆栈操作和返回地址的保存。
摘要由CSDN通过智能技术生成
内存地址   机器码        汇编指令       
1000:0     b8 06 00      mov ax,6       
1000:3     ff d0         call ax       
1000:5     40            inc ax
1000:6     58            mov bp,sp                             
                         add ax,[bp] 

对于mov ax,6来讲,就是让ax=6H。
我们知道,对于call 16位reg格式来说,相当于push ip;jmp 16位reg。
那么对于call ax来讲,首先ip在运行到这句话时指向1000:3,这个时候实际上还未进行push ip的工作,这时ip将跳转到下一语句1000:5上,也就是此时ip=5,在这时,才会进行push ip的工作,那么在堆栈里存储了5这个数。
之后要进行jmp ax,而ax在第一个语句里被赋值为6,因此jmp ax就是jmp到1000:6语句中,对应的语句是mov bp,sp;要知道sp其实就是当前堆栈ss:sp中的sp,那么此时sp=5,那么bp就被赋值为5。
最后执行ax+bp,就是5+6,换算成16进制是000BH。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值