★\天涯﹑ 发表于 2015-12-29 12:07:46

王爽 汇编语言检测点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 的值?

atmo 发表于 2015-12-29 12:53:18

ss*16+bp

★\天涯﹑ 发表于 2015-12-29 14:19:32

atmo 发表于 2015-12-29 12:53
ss*16+bp

没有指定段寄存器的情况下, 默认应该是 ds 寄存器啊, 就是 ds*16 + bp 啊

atmo 发表于 2015-12-29 16:01:03

是的。

★\天涯﹑ 发表于 2015-12-29 17:26:03

本帖最后由 ★\天涯﹑ 于 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:30:23

本帖最后由 ★\天涯﹑ 于 2015-12-29 17:34 编辑

:mad:

人造人 发表于 2015-12-30 00:03:37

看书 ,在162页
mov ax,        含义: (ax) = ((ss)* 16 + (bp))
第三个明确说明 bp默认配ss

atmo 发表于 2015-12-30 22:41:22

sp付给bp的。

ufo9876 发表于 2016-1-3 15:32:16

关于bx,si,di,bp寄存器的讲解,bp寄存器在不特意指定段地址的情况下,默认匹配是ss为段地址,

爱上小刺猬 发表于 2016-1-13 12:18:41

{:10_257:}{:10_257:}{:10_257:}{:10_257:}{:10_257:}
页: [1]
查看完整版本: 王爽 汇编语言检测点10.4求解