王爽 汇编语言检测点10.4求解
内存地址 机器码 汇编指令1000:0 b8 00 00 mov ax,6
1000:3 ff d0 call ax
1000:5 40 inc ax
1000:6 58 mov bp,sp
add ax,
的值 怎么来的?
通过 call ax 后,ss:sp 指向的是栈顶,值是5
mov bp,sp 后, 在没有指定段寄存器的情况下,不是默认用ds么? 也就是 ds: 吧 , 难道 ds: 的值 等于ss:sp 的值? ss*16+bp atmo 发表于 2015-12-29 12:53
ss*16+bp
没有指定段寄存器的情况下, 默认应该是 ds 寄存器啊, 就是 ds*16 + bp 啊 是的。 本帖最后由 ★\天涯﹑ 于 2015-12-29 17:32 编辑
atmo 发表于 2015-12-29 16:01
是的。
那我们现在只知道,ss:sp = 5 , 尽管 bp = sp 了 ,但是不知道 ds ,bp 的值啊,怎么就确定 = 5 了呢
上面给出的是指令地址cs:ip的值 ,如果我的 ds = 2000H, ss = 3000H,尽管mov bp,sp 指令让 bp = sp 了,但也不能确定 的值啊 本帖最后由 ★\天涯﹑ 于 2015-12-29 17:34 编辑
:mad: 看书 ,在162页
mov ax, 含义: (ax) = ((ss)* 16 + (bp))
第三个明确说明 bp默认配ss sp付给bp的。 关于bx,si,di,bp寄存器的讲解,bp寄存器在不特意指定段地址的情况下,默认匹配是ss为段地址, {:10_257:}{:10_257:}{:10_257:}{:10_257:}{:10_257:}
页:
[1]