关于汇编原理的几个小问题~~

SP本身不就是存放堆栈的栈顶地址么?为何求栈顶地址时还要用SS*10+SP?还有第二问的11FFFH和11FFEH哪里来的?... SP本身不就是存放堆栈的栈顶地址么?为何求栈顶地址时还要用SS*10+SP?还有第二问的11FFFH和11FFEH哪里来的? 展开
 我来答
百度网友7247a56
2013-09-30 · TA获得超过4615个赞
知道大有可为答主
回答量:1422
采纳率:92%
帮助的人:473万
展开全部
一、SP本身是存放堆栈的栈顶地址,这没错,但是这个是指逻辑地址,而题目要求的是物理地址。
物理地址= ((段地址 * 16 ) + 段内偏移地址 )

也写成
物理地址= ((段地址 * 10H ) + 段内偏移地址 ),
所以你题目中那个式子SS*10+SP应该写成SS*10H+SP

二、根据上题可知,栈顶地址是12000H,把1234H送入堆栈的操作相当于,把1234H存在12000h-2(=11FFEH)的地址里,根据低位数据放在低地址,高位数据放在高地址,低8位数据34H存放在12000h-2(=11FFEH),而11FFFH存放的是高8位数据12H。
yy_galois
2013-09-30 · TA获得超过857个赞
知道小有建树答主
回答量:429
采纳率:100%
帮助的人:155万
展开全部
你需要了解一下x86体系结构。

x86有好几种模式。比如实模式,保护模式。这是最重要的2种模式。

在汇编教材里面,一般使用的是实模式。

实模式地址空间大小为 1M。地址长度为 16位。但是16位最多能表示 2^16 = 64K的地址空间,怎么办呢?

使用一个段指针。

地址的计算为 ((段地址 * 16 ) + 段内偏移地址 )

这样就能表示20位的地址空间了。

10是16进制的10,实际上是 0x10 = 16
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fastfs
2013-09-30 · TA获得超过1423个赞
知道大有可为答主
回答量:2659
采纳率:62%
帮助的人:782万
展开全部
第一个问题SP存放的是栈顶地址的偏移,SP是两字节寄存器最大只能表示到65536也就是64K,而整内存地址空间有1M,如果只用SP的话有好多地址是访问不了的。
第二个问题因为栈顶地址是12000H,把1234H送入堆栈的操作相当于,把1234H存入12000h-2的地址里,所以12000h-2的地址是11FFEH存放的是34H,而11FFFH存放的是12H。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式