. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第3章汇编测试题目,大家;来看看我错在那里了  [待解决] 回复[ 61次 ]   点击[ 2692次 ]  
cdzjf
[帖 主]   [ 发表时间:2008-01-02 13:03 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是__?___。 
 1、 0000H 
 2、 0001H 
 3、 FFFFH 
 4、 FFFEH 
下列说法正确的是:__1__ 
 1、 数据段和代码段的段地址不能相同。 
 2、 指令mov ax,bx执行完后bx中的值为零。 
 3、 一个栈段的大小可以设为任意值。 
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。 
能够将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 
下列指令的书写正确的是:_3___ 
 1、 push al 
 2、 mov cs:[0],ds:[10] 
 3、 pop si 
 4、 mov ds:[0],2 
能够只将al中的内容压入栈的指令序列是__4___。 
 1、 push al 
 2、 pop ax 
 3、 mov ah,0 
    push ax 
 4、 mov ax,0 
    push ax 
共5道单选题目
wdm
[第1楼]   [ 回复时间:2008-01-02 14:21 ]   [引用]   [回复]   [ top ] 
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是__?___。  
==========================
栈的sp指向栈顶的下一存储单元,所以,要使用整个段,理论上指向的位置应该是(FFFFH+1H),我们知道这样的话超过了段的最大值FFFFH,因此,出现了段内环绕,所以此时sp指向了0H的位置。
wdm
[第2楼]   [ 回复时间:2008-01-02 14:23 ]   [引用]   [回复]   [ top ] 
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21
下列说法正确的是:__1__  
==============================
为什么数据段地址和代码段地址不能相同啊?!在内存中,这些都是数据。楼主难道说mov ax,cs ,mov ds,ax这个操作后是有问题的么?!
所以,这道题也错了。
wdm
[第3楼]   [ 回复时间:2008-01-02 14:25 ]   [引用]   [回复]   [ top ] 
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21
能够只将al中的内容压入栈的指令序列是4
===============
这道题同样有问题。题目要求是al数据入栈。
wdm
[第4楼]   [ 回复时间:2008-01-02 14:26 ]   [引用]   [回复]   [ top ] 
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21
楼主的问题好像比较多,最好再仔细看看书,还有,要动手做章节后的题目啊。
starrynight
[第5楼]   [ 回复时间:2008-01-02 22:01 ]   [引用]   [回复]   [ top ] 
荣誉值:98
信誉值:2
注册日期:2007-10-09 18:23
下列说法正确的是:__1__  
 1、 数据段和代码段的段地址不能相同。  
 2、 指令mov ax,bx执行完后bx中的值为零。  
 3、 一个栈段的大小可以设为任意值。  
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。
------------------------------------------------------
个人认为,这道题出的不大妙,有弄巧成拙之嫌。

能够只将al中的内容压入栈的指令序列是__4___。  
 1、 push al  
 2、 pop ax  
 3、 mov ah,0  
    push ax  
 4、 mov ax,0  
    push ax 
-----------------------
这道题,基本上是一道没道理的题。8086CPU支持的栈操作指令所存取得最小数据单位是字。
我很是想不通。
cdzjf
[第6楼]   [ 回复时间:2008-01-03 15:44 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
为什么数据段地址和代码段地址不能相同啊?!在内存中,这些都是数据。楼主难道说mov ax,cs ,mov ds,ax这个操作后是有问题的么?! 
所以,这道题也错了。

那这题那个是正确的呢?
cdzjf
[第7楼]   [ 回复时间:2008-01-03 15:45 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
这道题同样有问题。题目要求是al数据入栈。

同理,那个才正确呢?
fishboy
[第8楼]   [ 回复时间:2008-01-03 17:03 ]   [引用]   [回复]   [ top ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
这道题同样有问题。题目要求是al数据入栈
==========
这道题绝对没有问题。提示一下00FFH和FFH在数据大小上是不是一样啊?在明示一点当ah=0的时候,是不是ax与al的数据是相等的了?站操作最小是字操作,但是内存最小是字节,而且,从本质意义上说,高低位没有什么必然关系。
fishboy
[第9楼]   [ 回复时间:2008-01-03 17:06 ]   [引用]   [回复]   [ top ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
为什么数据段地址和代码段地址不能相同啊?!在内存中,这些都是数据。楼主难道说mov ax,cs ,mov ds,ax这个操作后是有问题的么?!  
所以,这道题也错了。 

那这题那个是正确的呢?
====================================
楼主能不能学知识的时候灵活一点,仔细一点啊!第一题都说过了,栈可以段内环绕,那你第二题还不明白怎么回事啊。当初没指出第二题的关键,就是给楼主自己一个学习+应用的机会啊。没把握住啊!
楼主需要反思,学习要主动。
zhuzhu
[第10楼]   [ 回复时间:2008-01-03 18:09 ]   [引用]   [回复]   [ top ] 
荣誉值:50
信誉值:0
注册日期:2007-07-08 09:33
我觉得楼主把每道题在附上自己的分析更好,光让别人找个答案没什么大的意思,没准楼主有些错误的思想藏在问题的分析中呢~_~ 

通过做题把知识都掌握了才是目的啊~
cdzjf
[第11楼]   [ 回复时间:2008-01-04 13:03 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
下列说法正确的是:____   
 1、 数据段和代码段的段地址不能相同。   
 2、 指令mov ax,bx执行完后bx中的值为零。   
 3、 一个栈段的大小可以设为任意值。   
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。

如果第1是错的,那第2:执行完后bx中的值为零,ax是多少都不知道,bx怎么为0?除非ax=0
第3: 一个栈段的大小不是最大为64K?
第4:当SP=0时,再次压栈将发生栈顶超界,栈顶超界应该是当CS:IP指向了栈顶,再次压栈会超界,但现在都不知道CS是多少,怎么能说SP=0就超界?
cdzjf
[第12楼]   [ 回复时间:2008-01-04 13:05 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
能够只将al中的内容压入栈的指令序列是__4___。  
 1、 push al  
 2、 pop ax  
 3、 mov ah,0  
    push ax  
 4、 mov ax,0  
    push ax  
栈操作最小是字操作,但是内存最小是字节,而且,从本质意义上说,高低位没有什么必然关系。
==================================== 
你说的没有错,栈操作是字操作,但要求把al入栈那怎么做?push al?更不对吧
mouse
[第13楼]   [ 回复时间:2008-01-04 13:24 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
是啊,1肯定不对啊,al是字节操作

4也肯定不对啊,ax都清零了,传进al也等于没传。

现在还剩两个答案了,正确的呼之欲出啊~
zhuzhu
[第14楼]   [ 回复时间:2008-01-04 16:36 ]   [引用]   [回复]   [ top ] 
荣誉值:50
信誉值:0
注册日期:2007-07-08 09:33
摘自cdzjf学习博客:
第二题 
如果第1是错的,那  
-------- 
我们检测的知识,而不是找出答案,没准网站提供的检测题有疏忽没有答案呢~还好,现在没发现,这个题也有正确答案.
-----------------------------
支持。 


下列说法正确的是:__1__  
 1、 数据段和代码段的段地址不能相同
----------------
楼主再看看p66页,检测点3.2上面的黑体字。
这段“段的综述”可是很经典的啊~_~
cdzjf
[第15楼]   [ 回复时间:2008-01-05 23:59 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
是啊,1肯定不对啊,al是字节操作

4也肯定不对啊,ax都清零了,传进al也等于没传。

现在还剩两个答案了,正确的呼之欲出啊~
------------------
回复:OMG,完全是我的疏忽了,这题目是我看错了,应该是第3才正确的,是我看错了,SORRY
cdzjf
[第16楼]   [ 回复时间:2008-01-06 00:25 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
摘自cdzjf学习博客:
第二题 
如果第1是错的,那  
-------- 
我们检测的知识,而不是找出答案,没准网站提供的检测题有疏忽没有答案呢~还好,现在没发现,这个题也有正确答案.
-----------------------------
支持。 


下列说法正确的是:__1__  
 1、 数据段和代码段的段地址不能相同
----------------
楼主再看看p66页,检测点3.2上面的黑体字。
这段“段的综述”可是很经典的啊~_~
------------------
回复:
一段内存,可以既是代码的存储空间,又是数据的存储空间,还可以是栈空间,也可以什么也不是。关键在于CPU中寄存器的设置,即:CS,IP,SS,SP.DS的指向。
我是不是可以一段内存中比如:1234H--4538H,我们对他定义为代码段,同样还是这段内存,也可以做为数据段,同时还可以作为堆栈来进行栈的操作。
如果是这样的话,那这段内存岂不是很乱?而且我进行压栈操作以后,这里应该有保存的数据,又作为数据段来存放数据?简直无法想象了我
mouse
[第17楼]   [ 回复时间:2008-01-06 15:12 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
一段内存,可以既是代码的存储空间,又是数据的存储空间,还可以是栈空间,也可以什么也不是。关键在于CPU中寄存器的设置,即:CS,IP,SS,SP.DS的指向。 
我是不是可以一段内存中比如:1234H--4538H,我们对他定义为代码段,同样还是这段内存,也可以做为数据段,同时还可以作为堆栈来进行栈的操作。 

如果是这样的话,那这段内存岂不是很乱?而且我进行压栈操作以后,这里应该有保存的数据,又作为数据段来存放数据?简直无法想象了我
-------------
上面那段说的不错。
在理论上一段内存空间,我们既可以当作数据段也可以当作代码段和栈段,这个结论是没有问题的。
但是实际上我们很少这样用(起码现在我还没用过~_~),但是两两互用是有很多例子的。比如数据段和代码段指向同一地址(第5章实验四)。

栈段比较特殊,互用的很少见。我在做课设一的时候定义了一个栈段,栈段的前面当作数据段使用,后面当作栈使用,这个应该是数据段和栈段的同时使用吧。

我觉得楼主可以不用生扣这些文字,先向下看,实际编程用到了可能就有感性的认识了。

就和我刚才看的一个帖子,http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1004&qkSg=2&qID=9907
-----
第二次看的时候才觉的有这些意思。知识的了解不同,对同一句话的理解也很可能不同。
cdzjf
[第18楼]   [ 回复时间:2008-01-09 22:47 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
下列说法正确的是:__?__  
 1、 数据段和代码段的段地址不能相同。  
 2、 指令mov ax,bx执行完后bx中的值为零。  
 3、 一个栈段的大小可以设为任意值。  
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。  

的确不是第1,那第4呢?
当SP=0时,再次压栈将发生栈顶超界。如何确定当前的SS:SP已经指向了栈顶
zkkpkk
[第19楼]   [ 回复时间:2008-01-18 17:52 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:8
注册日期:2008-01-12 10:11
栈的sp指向栈顶的下一存储单元,所以,要使用整个段,理论上指向的位置应该是(FFFFH+1H),我们知道这样的话超过了段的最大值FFFFH,因此,出现了段内环绕,所以此时sp指向了0H的位置。
===============================================================
这题目出得精彩,就像数据结构基础的那个用数组来当环行队列,哈哈
lonoaer
[第20楼]   [ 回复时间:2008-01-20 17:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-01-15 15:46
2,4,2,3,3
baynpu
[第21楼]   [ 回复时间:2008-01-27 13:42 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2007-07-22 13:35
告诉大家吧:
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是__1___。  
 1、 0000H  
 2、 0001H  
 3、 FFFFH  
 4、 FFFEH  
下列说法正确的是:__4__  
 1、 数据段和代码段的段地址不能相同。  
 2、 指令mov ax,bx执行完后bx中的值为零。  
 3、 一个栈段的大小可以设为任意值。  
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。  
能够将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  
下列指令的书写正确的是:_3___  
 1、 push al  
 2、 mov cs:[0],ds:[10]  
 3、 pop si  
 4、 mov ds:[0],2  
能够只将al中的内容压入栈的指令序列是__3___。  
 1、 push al  
 2、 pop ax  
 3、 mov ah,0  
    push ax  
 4、 mov ax,0  
    push ax  
共5道单选题目
gocker
[第22楼]   [ 回复时间:2008-01-29 00:06 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:14
注册日期:2007-10-15 14:54
我的答案,但提示我是错的
4
4
3
2
3
dushoju
[第23楼]   [ 回复时间:2008-02-05 22:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-02-03 13:54
下列说法正确的是:__4__   
 1、 数据段和代码段的段地址不能相同。   
 2、 指令mov ax,bx执行完后bx中的值为零。   
 3、 一个栈段的大小可以设为任意值。   
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效
第四个是对的,但感觉不太好,这样说更明显:压栈超界时,压栈仍然有效。(只是会覆盖栈外的数据)。sp=0完全可以不要,有他反而不好理解
cdzjf
[第24楼]   [ 回复时间:2008-02-18 14:29 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
当SP=0时,再次压栈将发生栈顶超界。如何确定当前的SS:SP已经指向了栈顶?
topboy
[第25楼]   [ 回复时间:2008-03-05 22:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-12-26 12:31
下列说法正确的是:__4__    
 1、 数据段和代码段的段地址不能相同。    
 2、 指令mov ax,bx执行完后bx中的值为零。    
 3、 一个栈段的大小可以设为任意值。    
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效 

这一题有点疑问啊,P64问题3.11栈为空时SP=0.有点难理解
tomato
[第26楼]   [ 回复时间:2008-03-14 18:14 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
To 25楼:当栈的大小为64K时,当栈中只有一个数据时,它的偏移地址为FFFE和FFFF,那么当这个数据出栈时,栈为空,SP=SP+2=FFFE+2,发生进位等于零。
cairulong
[第27楼]   [ 回复时间:2008-05-01 01:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-27 16:45
能够将ax中的内容送到内存0000:0200H处的指令序列是___。   
 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   

这个答案怎么会是4呢。
mov ds,bx   ds=2000H
最后mov [bx],ax   怎么会把ax送到0000:0200处呢?
不明白,谁告诉我为什么?
e30614007
[第28楼]   [ 回复时间:2008-05-01 12:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-05-01 12:20
第一题拒绝对错误,但看第一条指令就是错误的,不能把立即数直接传送给段寄存器   第二题也是错误的,mov ax,200h    mov ds,ax  ax寄存器的值还没有被改变  mov bx,0  这条指令清零bx寄存器, mov [bx],ax    此时的内存地址就不是0000:0200H了
e30614007
[第29楼]   [ 回复时间:2008-05-01 12:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-05-01 12:20
回复:[第25楼]
------------------
这是因为在压栈操作中是先进行压栈动作在改变它的指针值的啊,同样出栈是先改变指针值在出栈的
e30614007
[第30楼]   [ 回复时间:2008-05-01 13:01 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-05-01 12:20
回复:[第3楼]
------------------
我到觉得最后一题应该选择3    1、 push al  
 2、 pop ax  
 3、 mov ah,0  
    push ax  
 4、 mov ax,0  
    push ax    第四个选项讲ax寄存器的内容清零后压栈并不是题目的要求,第一个选项部队是因为在压栈操作中的操作数只能是字或双字,只有286以上的cpu支持立即数作为操作数压栈 第二个选项是出栈操作
e30614007
[第31楼]   [ 回复时间:2008-05-01 13:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-05-01 12:20
谁能告诉我倒数第二题的第四个选项为什么不能选吗? 、 mov ds:[0],2  再立即数寻址方式里,操作数作为指令的一部分被取到cpu中,在这种寻址方式中的目的操作数只能是cpu内部的寄存器啊 而ds:[0],时表示的直接寻址方式
limitasm
[第32楼]   [ 回复时间:2008-05-01 17:11 ]   [引用]   [回复]   [ top ] 
荣誉值:9
信誉值:0
注册日期:2008-04-12 14:46
这个答案我认同,不过我认为最后一道题出的不太好
hychewei
[第33楼]   [ 回复时间:2008-05-01 21:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-20 09:53
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是__2__。  
 1、 0000H  
 2、 0001H  
 3、 FFFFH  
 4、 FFFEH  
下列说法正确的是:__4__  
 1、 数据段和代码段的段地址不能相同。  
 2、 指令mov ax,bx执行完后bx中的值为零。  
 3、 一个栈段的大小可以设为任意值。  
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。  
能够将ax中的内容送到内存0000:0200H处的指令序列是__1_。  
 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  
下列指令的书写正确的是:_4__  
 1、 push al  
 2、 mov cs:[0],ds:[10]  
 3、 pop si  
 4、 mov ds:[0],2  
能够只将al中的内容压入栈的指令序列是__3__。  
 1、 push al  
 2、 pop ax  
 3、 mov ah,0  
    push ax  
 4、 mov ax,0  
    push ax
dys
[第34楼]   [ 回复时间:2008-05-07 23:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-05-02 17:20
告诉大家吧:
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是__1___。  
 1、 0000H  
 2、 0001H  
 3、 FFFFH  
 4、 FFFEH  
下列说法正确的是:__4__  
 1、 数据段和代码段的段地址不能相同。  
 2、 指令mov ax,bx执行完后bx中的值为零。  
 3、 一个栈段的大小可以设为任意值。  
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。  
能够将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  
下列指令的书写正确的是:_3___  
 1、 push al  
 2、 mov cs:[0],ds:[10]  
 3、 pop si  
 4、 mov ds:[0],2  
能够只将al中的内容压入栈的指令序列是__3___。  
 1、 push al  
 2、 pop ax  
 3、 mov ah,0  
    push ax  
 4、 mov ax,0  
    push ax  
共5道单选题目
------------------
回复:这个才是正解!
hualongmian
[第35楼]   [ 回复时间:2008-05-17 18:49 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2008-05-13 20:29
是不是搞反啦?
hualongmian
[第36楼]   [ 回复时间:2008-05-17 18:51 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2008-05-13 20:29
回复:[第29楼]
------------------
入栈先修改SP,再执行压栈操作吧,出栈是先执行出栈操作在修改SP吧
是不是搞反啦?
hardyleumg
[第37楼]   [ 回复时间:2008-07-22 23:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-20 18:33
支持21楼
duress
[第38楼]   [ 回复时间:2008-07-25 20:15 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2008-07-25 14:24
能够将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  

这里0000:0200H是 段基地址:偏移地址吗?答案不是1么?
选4就是偏移地址:段基地址了?
duress
[第39楼]   [ 回复时间:2008-07-25 20:47 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2008-07-25 14:24
搞错了,4计算后地址是一样的,还真能忽悠啊
oldmtn
[第40楼]   [ 回复时间:2008-07-29 14:20 ]   [引用]   [回复]   [ top ] 
荣誉值:5
信誉值:3
注册日期:2008-07-14 19:30
To 25楼:当栈的大小为64K时,当栈中只有一个数据时,它的偏移地址为FFFE和FFFF,那么当这个数据出栈时,栈为空,SP=SP+2=FFFE+2,发生进位等于零。
=================================================
补充一下,,我认为关键的进位的理解,实际sp=sp+2=FFFE+2=10000H,而sp范围为0~FFFE,越界了,
就剩下了sp=0000H
oldmtn
[第41楼]   [ 回复时间:2008-07-29 14:22 ]   [引用]   [回复]   [ top ] 
荣誉值:5
信誉值:3
注册日期:2008-07-14 19:30
下列指令的书写正确的是:_3___   
 1、 push al   
 2、 mov cs:[0],ds:[10]   
 3、 pop si   
 4、 mov ds:[0],2 
======================
此题的1肯定是错的,栈进出单位是字
但是4是什么意思啊
还有3的si,好象没见过啊
ace
[第42楼]   [ 回复时间:2008-07-30 10:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-03-04 11:56
能够将ax中的内容送到内存0000:0200H处的指令序列是__1_。   
 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   
........................
先看第三个,mov ax 20h这条指令已经把ax中原来的值用20H覆盖了,所以mov [bx],ax送入内存的也只是被修改后ax中的值,不符合题意,所以只能是第四个答案!
maoye919
[第43楼]   [ 回复时间:2008-08-27 00:29 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-25 23:21
1 4 4 3 3
yugong
[第44楼]   [ 回复时间:2008-09-24 19:08 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:8
注册日期:2008-09-15 09:10
有些题目真的有问题?
yoooo
[第45楼]   [ 回复时间:2008-12-11 19:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-26 11:05
能够将ax中的内容送到内存0000:0200H处的指令序列是____。   
 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   

刚我测试了,只错一道,所以我分析一下,可能是这道题.还有是题目一样但答案是随机排序的,所以你看到的可能不一样,但理解了就可以找对.


题目是给地址(0000:0200H)赋值.那么首先我们算出内存地址,根据"地址规则":内存地址=段地址*10H+偏移地址,算出(0000:0200H)=00200H,我们看下1选项,ds=0,偏移地址=bx=200,内存地址=0*10H+200H=200H,200H和00200H
不是一样吗,是我心目中的对象,就她.(但是现在觉得太草率了),我们在看看,题目叫我们给地址8位地址赋值,但ax中的200H是12位的哦(1位十六机制=4位二机制,×××H = ××××××××××××B),看清楚了,8位内存地址最多装8位(也就是AL),所以尽早放弃.根据"地址规则"我们找到最后一个匹配的,第3号,地址匹配,很满意,看看ax,ax=20H(8位),so.
yoooo
[第46楼]   [ 回复时间:2008-12-11 20:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-26 11:05
纠正一下45楼(还是我),
1.错误的是, mov ds,0  (段地址不能被常数赋值,语病)
3.第3号,人们都说mov ax,20H,把ax改变了,ax已经不是原来的值了。


 4、debug下测试通过,所以4才是正确选择。。。。。那么[第45楼]: 是我把题目理解错了,不关8位还是十六位的事,(只要地址正确,且ax还是原来的值.没有语病).
zhfeilong
[第47楼]   [ 回复时间:2008-12-11 22:49 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2008-12-11 17:37
刚看了一下,我强烈的顶一下34楼的兄弟!
刚觉你的思路,跟我一样,兄弟留下QQ,愿于各位讨论讨论!
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是__1___。   
 1、 0000H   
 2、 0001H   
 3、 FFFFH   
 4、 FFFEH   
下列说法正确的是:__4__   
 1、 数据段和代码段的段地址不能相同。   
 2、 指令mov ax,bx执行完后bx中的值为零。   
 3、 一个栈段的大小可以设为任意值。   
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。   
能够将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   
下列指令的书写正确的是:_3___   
 1、 push al   
 2、 mov cs:[0],ds:[10]   
 3、 pop si   
 4、 mov ds:[0],2   
能够只将al中的内容压入栈的指令序列是__3___。   
 1、 push al   
 2、 pop ax   
 3、 mov ah,0   
    push ax   
 4、 mov ax,0   
    push ax   
共5道单选题目 
------------------ 
回复:这个才是正解!
hanlsheng
[第48楼]   [ 回复时间:2008-12-19 15:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2008-12-15 16:17
下列说法正确的是:___    
 1、 数据段和代码段的段地址不能相同。    
 2、 指令mov ax,bx执行完后bx中的值为零。    
 3、 一个栈段的大小可以设为任意值。    
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。

-----------------------------------------------------

这道题目有不严格!!!!!!!!
当sp=0是,栈为空也是可能的啊,怎么能一口咬定会发生栈定越界?????不明白我说的看第一题。
gsyangchao
[第49楼]   [ 回复时间:2009-01-25 08:32 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:0
注册日期:2009-01-25 01:37
下列说法正确的是:___    
 1、 数据段和代码段的段地址不能相同。    
 2、 指令mov ax,bx执行完后bx中的值为零。    
 3、 一个栈段的大小可以设为任意值。    
 4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。

-----------------------------------------------------

这道题目有不严格!!!!!!!!
当sp=0是,栈为空也是可能的啊,怎么能一口咬定会发生栈定越界?????不明白我说的看第一题。
------------------
回复:1.栈空和栈满时都有SP=0,正确。
     2.题目明确说了  ”再次压栈“说的很明确很清楚了,也就是前面已经压栈过了,那么怎么可能是空栈呢,所以  ”再次“压栈后如果SP=0,必然发生越界。
kkaxiao
[第50楼]   [ 回复时间:2009-03-26 16:38 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2009-03-20 22:14
能够将ax中的内容送到内存0000:0200H处的指令序列是__1_。   
 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   
........................
先看第三个,mov ax 20h这条指令已经把ax中原来的值用20H覆盖了,所以mov [bx],ax送入内存的也只是被修改后ax中的值,不符合题意,所以只能是第四个答案!
------------------
回复:卡,正解
82356722
[第51楼]   [ 回复时间:2009-03-27 22:02 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-03-27 20:52
4
4
4
3
3
82356722
[第52楼]   [ 回复时间:2009-03-27 22:04 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-03-27 20:52
回复:[第50楼]
------------------
第一个的第一句就不对
mov ds,0
立即数不能直接进入段寄存器,,
fangyugirl
[第53楼]   [ 回复时间:2009-04-23 10:28 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-03-06 09:35
这章的检测题我都做4次了,还是没过,错了一道,应该是下面这道题的问题。
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是_____。    
 1、 0000H    
 2、 0001H    
 3、 FFFFH    
 4、 FFFEH    
我一直不太确定是1还是4,问过周围的同事,说是4。当栈是空的时,SP是等于0的,当站内只有一个字时,SP等于FFFEH.
wangfei202
[第54楼]   [ 回复时间:2009-04-28 23:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-04-26 19:49
下列指令的书写正确的是:_3___   
 1、 push al   
 2、 mov cs:[0],ds:[10]   
 3、 pop si   
 4、 mov ds:[0],2   
我不明白你为什么选三,但我知道一和四是肯定不对的,二为什么不对呢?
void
[第55楼]   [ 回复时间:2009-05-06 22:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-06 19:00
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是__?___。  
 1、 0000H  
 2、 0001H  
 3、 FFFFH  
 4、 FFFEH  
题目要求是整个段空间当作栈使用,sp初始值最合理的是哪个?段大小最大可以为64KB,这个我们都知道,那么理论上四个应该都可以,而栈操作又是以字为操作对象的,所以sp应该指向偶数,(估且这么理解),ss:sp始终指向栈顶地址,当sp=0时,是满栈;当sp=ffffh+1时,是空栈。故选1,sp=0000H,满栈,最符合题意。
void
[第56楼]   [ 回复时间:2009-05-06 22:42 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-06 19:00
能够将ax中的内容送到内存0000:0200H处的指令序列是_    
 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    
第一个:立即数不能直接送段寄存器,错
第二个:结果为:ds:bx=0200:0000H明显错误,况且还指定ax的值,(ax)=200h,错
第三个:指定ax的值,引用50楼就是(mov ax 20h这条指令已经把ax中原来的值用20H覆盖了,所以mov [bx],ax送入内存的也只是被修改后ax中的值,不符合题意)错
第四个:结果为:ds:bx=0020:0000H,可以有人要说和题目不一样啊,其实有一点误区。就是0000:0200H的物理地址是:00200H,而0020:0000H的物理地址也是00200H,哈哈,想到了吧,同一个物理地址可以用不同的段地址+偏移量来表示的。
void
[第57楼]   [ 回复时间:2009-05-06 22:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-06 19:00
关于栈操作中,ss:sp始终指向栈顶地址,那么sp=0,表示满栈。sp=ffffH+1,表示空栈。
这是我的理解,
欢迎各位指正
455139
[第58楼]   [ 回复时间:2009-05-31 17:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-29 14:22
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是__?___。
 1、 0000H  
 2、 0001H  
 3、 FFFFH  
 4、 FFFEH  
我觉得没有一个是对的,它的题目是说如果说1000H为段地址,SP设多少最合理,那就是说还把它当一个栈来用了,并不理想中的FFFFH+1=0,它只有栈顶超界这种说法,难道栈还有栈内循环这一说?这道题本身就是有问题,它应该这样问:
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值设置是__?___。(把“最合理的”去掉)
simon8410
[第59楼]   [ 回复时间:2009-06-10 21:35 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2009-05-13 21:48
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是__?___。  
==========================
栈的sp指向栈顶的下一存储单元,所以,要使用整个段,理论上指向的位置应该是(FFFFH+1H),我们知道这样的话超过了段的最大值FFFFH,因此,出现了段内环绕,所以此时sp指向了0H的位置。
------------------
回复:我觉得应该是FFFEH+2H=0000H才对
tsembrace
[第60楼]   [ 回复时间:2009-06-17 20:57 ]   [引用]   [回复]   [ top ] 
荣誉值:31
信誉值:3
注册日期:2009-06-15 19:20
1-->同59楼
4-->sp=0即为满栈状态,继续push会溢出,但数据依然会被写入相应内存单元。
4
3
3
zdpopup
[第61楼]   [ 回复时间:2009-06-21 22:32 ]   [引用]   [回复]   [ top ] 
荣誉值:8
信誉值:10
注册日期:2009-06-18 18:17
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是__?___。  
 1、 0000H  
 2、 0001H  
 3、 FFFFH  
 4、 FFFEH  
我始终不认为1是对的.3次可能都是错在这吧.郁闷死人.
的确是这里1.PUSH IP+2后,第一个数据后IP是 FFFE SS是不会因为PUSH POP而改变的.

所以IP=0时可以把SS 1000H全部64K作为堆栈
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved