. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  <<<<<<<<<<求助>>>>>>>>>第三章检测题    知道自己的错了,概念有2个不确定的~  [已解决] 回复[ 5次 ]   点击[ 393次 ]  
charly_yby
[帖 主]   [ 发表时间:2010-03-09 00:48 ]   [引用]   [回复]   [ top ] 
荣誉值:38
信誉值:22
注册日期:2010-03-05 20:41
1.能够将ax中的内容送到内存0000:0200H处的指令序列是_4___。  
 1、  mov ds,0  
     mov bx,200h  
     mov [bx],ax  
 2、  mov ax,200h  
     mov ds,ax  
     mov bx,0  
     mov [bx],ax  
 3、  mov ax,20h  
     mov ds,ax  
     mov bx,0  
     mov [bx],ax  
 4、  mov bx,20h  
     mov ds,bx  
     mov bx,0  
     mov [bx],ax

第三个选择,是否是因为第一条指令更改了ax中的值,所以它是错误的?



2.若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的 

设置是___1__。  
 1、  0000H  
 2、  0001H  
 3、  FFFFH  
 4、  FFFEH


我觉得是0000,因为如果2、3是不可能出现的(以字为单位),4的话,如果第一个就是push,那岂不是直接就超栈了?所以最合理的是0000.




3.下列指令的书写正确的是:__4__  
 1、  push al  
 2、  mov cs:[0],ds:[10]  
 3、  pop si  
 4、  mov ds:[0],2 

1是因为位数不对,2是因为ds:【10】(10应该是a H)。

3是因为si没......
我傻了,si是个寄存器,我晕菜
scuzg
[第1楼]   [ 回复时间:2010-03-09 11:26 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
“第三个选择,是否是因为第一条指令更改了ax中的值,所以它是错误的?”:楼主正确;
我认为SP的初始值最合理的值应该是0fffeh;尽管和使用0000h相比少用一个字,但通过sp是否为零判断是否栈满最方便;
第3题指令的书写正确的应该是3(pop si),而4 (mov ds:[0],2)编译程序弄不清是写入字节0(00h)还是写入字0(0000h)。
charly_yby
[第2楼]   [ 回复时间:2010-03-09 13:08 ]   [引用]   [回复]   [ top ] 
荣誉值:38
信誉值:22
注册日期:2010-03-05 20:41
在网站的检测题里,选项1 (0000H)是正确的......


在书61页3.8栈顶超界的问题中有这样写到:

前提是执行PUSH指令,
将100010-1001F当做栈空间,该栈空间容量为16字节(8字),初始状态为空,SS=1000,SP=0020,SS:SP指向10020

我想按照书中的推论,将10000-1ffff当做栈空间,初始状态为空时,SS=1000,SP=FFFE,SS:SP=0000(10000).

而在执行POP指令时,书中这样描述:
将10010-1001FH当做栈空间,该栈空间容量为16字节(8字),当前状态为满,SS=1000,SP=0010,SS:SP=10010H

按书中推论,将10000-1ffff当做栈空间,初始状态为满时,SS=1000,SP=0000(10000),SS:SP=10000。

所以我想0000是最合理的~

不知道我的想法对否= =
scuzg
[第3楼]   [ 回复时间:2010-03-09 20:16 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
楼主通过比对,结论是正确的;我也认为,如果不检堆栈状态,当然sp的初值为0000h是“最合理的”,但如果要检测堆栈状态,sp初值为零就不好区分空栈还是满栈,所以“牺牲”一个字节,能很经济地通过判断sp是否为零,得到是否满栈的信息。如果这样考虑,sp的初值为0fffeh应该“更合理些”。
charly_yby
[第4楼]   [ 回复时间:2010-03-09 20:56 ]   [引用]   [回复]   [ top ] 
荣誉值:38
信誉值:22
注册日期:2010-03-05 20:41
恩,可能是您更多的从实际应用上出发吧,也能理解SP=FFFE的好处


反正在网站上这道题的答案就是0000是没错了~
charly_yby
[第5楼]   [ 回复时间:2010-03-09 20:57 ]   [引用]   [回复]   [ top ] 
荣誉值:38
信誉值:22
注册日期:2010-03-05 20:41
此贴由 贴主 于 [ 2010-03-09 20:57 ] 结贴。 结贴原因:问题已解决
得分情况: 3楼(scuzg):4分   4楼(charly_yby):4分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved