|
发表于 2012-3-5 19:41:35
|
显示全部楼层
本帖最后由 莫名其妙 于 2012-3-5 19:54 编辑
这里你不需要知道sp具体是多少 ! 为什么
这里不是让你计算sp 的 是为了让你知道 call 指令 执行的意思是什么
内存地址 机器码 汇编指令
1000:0 b8 06 00 mov ax,6 ; ax=6,ip指向1000:3
1000:3 ff d0 call ax ;push ip jmp 16位寄存器为ip的地方 ip指向1000:6 因为是call 16位寄存器 此时内保
存的是下一条指令的ip地址也就 是push进去的是0005
1000:5 40 inc ax ;这条指令暂时跳过
1000 :6 mov bp,sp ;跳到这里执行 这里不管sp是多少 因为用不上 看下面
add ax,[bp] ;这里 ds:[bp] +ax ds:[bp] 内保存的是什么 ?
因为bp等与sp所以 sp指向的内存单元内保存的是什么?
保存的是刚才call 命令时push进来的 下一段代码的地址 也就是ip=0005
所以 这里 调用的跟sp的大小没关 这里只是调用sp指向内存单元的数据 0005
|
|