汇编网首页登录博客注册
unixandlinux的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新评论
最新留言
好友圈
友情链接

[2023-04-18 10:18] 存疑:《汇编语言》(王爽 著)(第3版)

第2章
1. p25第4行
原文:
结论:偏移地址16位,变化范围为 0~FFFFH,仅用偏移地址来寻址最多可寻64KB个内存单元。
存疑:
“64KB个内存单元”是否应该改为“64K个内存单元”?因为内存单元的数量单位是“个”,而“B”是“Byte”的简写,意为“字节”,是内存单元存储信息的容量单位,不应与内存单元的数量“个”合在一起使用。如果一定要用“B”,则可以改为:“64KB内存单元”,即去掉“个”字。这样就能知道所述的寻址能力最大容量为64KB。
2. p41 实验1 倒数第4行
原文:
... 数值2、字符串“c++”、字符3、字符串“IBM”...
存疑:其中的“字符3”是否应为“数值3”?

第3章
1. p61 3.7节最后一段
原文:
pop操作前的栈顶元素,1000CH处的2266H依然存在,但是,它已不在栈中。
存疑:
经上机测试,地址1000CH内存单元所存储的原来的数据2266H已经被改变,与书中所述不一致。
实际上,栈空间内会有一组特定的数据值(我称其为栈顶标识值)被存储在SP-1地址内存单元,这组特定的数据会占用连续的多个内存单元,而SP-1单元则是这组数据的最高8位数据所存储的位置。这组数据会随着SP的变化而移动。例如,栈空间的初始设置为SS=1000H,SP=0010H,这时栈状态为空;这时的栈顶标识值的最高8位就存储在SP-1内存单元(即物理地址1000FH内存单元,也就是栈顶元素的高8位)中,如果这时执行push操作,先执行push指令的第1步操作:SP=SP-2。栈顶标识值就会随之移动,其最高8位就存储到新SP的SP-1单元;接着才执行push指令的第2步操作,入栈的数据将覆盖原来栈顶标识值所在的栈顶位置。当执行pop指令时,在执行SP=SP+2操作后,同样地,栈顶标识值随着SP的变化而移动——该值最高8位数据存储到新SP的SP-1单元,而原来的栈顶数据就被栈顶标识值数据所覆盖。
注意,并不是在设置SS:SP后就会产生栈顶标识值数据,而是在用Debug的T命令执行指令后,才会产生栈顶标识值数据。也就是说,当改变SS:SP的设置后,并不会立即在新设置的栈顶处(新SP的SP-1内存单元)产生栈顶标识值数据,而必须通过Debug的T命令执行指令后,才会在新设置的栈顶处生成栈顶标识值数据。
评论次数(0)  |  浏览次数(125)  |  类型(学习笔记) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码