鱼C论坛

 找回密码
 立即注册
查看: 2363|回复: 10

汇编寄存器(内存访问) 遇到的问题,请大神们帮解释下

[复制链接]
发表于 2012-4-10 18:57:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 sc3297 于 2012-4-10 22:51 编辑

问题3.10
补全代码,在10000H处写入字形数据2266H
要求:不能使用mov 内存单元,寄存器;

______________
______________
______________
mov ax,2266h
push ax           
答案是:
mov ax,1000
mov ss,ax
mov sp,2                             这里就不明白了,单独看这里能理解,是栈顶要先-2再将字形数据入栈
mov ax,2266
push ax      
======================================
问题3.8
1,将10000~1000f这段空间当做栈,初始状态是空的
2,设置AX=001A,BX=001B;
3,将AX,BX中的数据入栈
4将AX,BX清零
5从栈中恢复AX,BX原来内容
答案是:
mov ax,1000
mov ss,ax
mov sp,10
mov ax,001a
mov bx,001b
push ax                     //为什么这里栈顶没有先-2再入栈
push bx
mov ax,0
mov bx,0
pop bx
pop ax
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-4-10 21:53:45 | 显示全部楼层
........没人理啊 ,   求解释啊~~~~~~~~~~~~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-10 22:25:07 | 显示全部楼层
入栈应该是SP-2,问题3.10是要求在10000H写入数据,所以SP应该是2
问题3,8的前提条件是栈初始化状态为空,根据8086CP的特性SP应该定位在栈底的下一个地址,所以应该 是10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-11 12:17:38 | 显示全部楼层
本帖最后由 憔悴心只为你 于 2012-4-11 12:21 编辑

push ax 的执行,由以下两步完成:

        (1) sp = sp - 2 , SS:SP 指向当前栈顶前面的单元,以当前栈顶前面的单元为新的栈顶;

        (2) 将ax中的内容送入SS:SP执行的内存单元,SS:SP此时指向新栈顶。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-11 12:32:09 | 显示全部楼层
任意时刻,SS:SP指向栈顶元素,当栈为空时,栈中没有元素,也就不存在栈顶元素,所以SS:SP只能指向栈的最底部单元下面的单元,该单元的偏移地址为栈最底部的字单元的便宜地址+2,所以栈空时,SP=0010H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-4-12 03:22:16 | 显示全部楼层

对啊  为什么这里没有写出来 sp-2呢?  我是想知道哪个写法正确 ,这个sp-2 或则sp +2 不写出来可以不?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-12 10:29:01 | 显示全部楼层
好帖,跟我问题一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-12 11:00:21 | 显示全部楼层
本来push命令就包括了-2了……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-12 11:02:16 | 显示全部楼层
sc3297 发表于 2012-4-12 03:22
对啊  为什么这里没有写出来 sp-2呢?  我是想知道哪个写法正确 ,这个sp-2 或则sp +2 不写出来可以不?

不需要写……你可以理解push这个命令是一个子程序……里面包括了-2或者+2的sp了~反正你只要入栈,他就会-2,出栈就+2,还有先后次序,你可以再看一遍小甲鱼教程。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-12 11:04:01 | 显示全部楼层
入栈,是先sp-2再把数据放到ss:sp……出栈,相反,先把数据拿出来,再把sp+2,但是数据不是抹去,数据依然还在栈里面,理论上你sp-2,再pop,依然能复制出一模一样的数据。

评分

参与人数 1鱼币 +3 收起 理由
sc3297 + 3 理论上你sp-2,再pop,依然能复制出一模一样.

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-14 12:09:24 | 显示全部楼层
愿意给回答者加分,确实促进交流,那是一种鼓励,不在乎多小,呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 10:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表