欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

王爽汇编语言 检测点10.4

程序员文章站 2024-02-02 15:25:10
...
内存地址   机器码        汇编指令       
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。