|
主题 : : 第3章汇编测试题目,大家;来看看我错在那里了 [待解决] |
回复[ 61次 ]
点击[ 2692次 ] | |
|
|
|
|
[帖 主]
[ 发表时间: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道单选题目 | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-01-02 14:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21 |
若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是__?___。
==========================
栈的sp指向栈顶的下一存储单元,所以,要使用整个段,理论上指向的位置应该是(FFFFH+1H),我们知道这样的话超过了段的最大值FFFFH,因此,出现了段内环绕,所以此时sp指向了0H的位置。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-01-02 14:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21 |
下列说法正确的是:__1__
==============================
为什么数据段地址和代码段地址不能相同啊?!在内存中,这些都是数据。楼主难道说mov ax,cs ,mov ds,ax这个操作后是有问题的么?!
所以,这道题也错了。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2008-01-02 14:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21 |
能够只将al中的内容压入栈的指令序列是4
===============
这道题同样有问题。题目要求是al数据入栈。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2008-01-02 14:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21 |
楼主的问题好像比较多,最好再仔细看看书,还有,要动手做章节后的题目啊。 | | |
|
|
|
|
[第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支持的栈操作指令所存取得最小数据单位是字。
我很是想不通。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2008-01-03 15:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28 |
为什么数据段地址和代码段地址不能相同啊?!在内存中,这些都是数据。楼主难道说mov ax,cs ,mov ds,ax这个操作后是有问题的么?!
所以,这道题也错了。
那这题那个是正确的呢? | | |
|
|
|
|
[第7楼]
[ 回复时间:2008-01-03 15:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28 |
这道题同样有问题。题目要求是al数据入栈。
同理,那个才正确呢? | | |
|
|
|
|
[第8楼]
[ 回复时间:2008-01-03 17:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42 |
这道题同样有问题。题目要求是al数据入栈
==========
这道题绝对没有问题。提示一下00FFH和FFH在数据大小上是不是一样啊?在明示一点当ah=0的时候,是不是ax与al的数据是相等的了?站操作最小是字操作,但是内存最小是字节,而且,从本质意义上说,高低位没有什么必然关系。 | | |
|
|
|
|
[第9楼]
[ 回复时间:2008-01-03 17:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42 |
为什么数据段地址和代码段地址不能相同啊?!在内存中,这些都是数据。楼主难道说mov ax,cs ,mov ds,ax这个操作后是有问题的么?!
所以,这道题也错了。
那这题那个是正确的呢?
====================================
楼主能不能学知识的时候灵活一点,仔细一点啊!第一题都说过了,栈可以段内环绕,那你第二题还不明白怎么回事啊。当初没指出第二题的关键,就是给楼主自己一个学习+应用的机会啊。没把握住啊!
楼主需要反思,学习要主动。 | | |
|
|
|
|
[第10楼]
[ 回复时间:2008-01-03 18:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:50
信誉值:0
注册日期:2007-07-08 09:33 |
我觉得楼主把每道题在附上自己的分析更好,光让别人找个答案没什么大的意思,没准楼主有些错误的思想藏在问题的分析中呢~_~
通过做题把知识都掌握了才是目的啊~ | | |
|
|
|
|
[第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就超界? | | |
|
|
|
|
[第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?更不对吧 | | |
|
|
|
|
[第13楼]
[ 回复时间:2008-01-04 13:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
是啊,1肯定不对啊,al是字节操作
4也肯定不对啊,ax都清零了,传进al也等于没传。
现在还剩两个答案了,正确的呼之欲出啊~ | | |
|
|
|
|
[第14楼]
[ 回复时间:2008-01-04 16:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:50
信誉值:0
注册日期:2007-07-08 09:33 |
摘自cdzjf学习博客:
第二题
如果第1是错的,那
--------
我们检测的知识,而不是找出答案,没准网站提供的检测题有疏忽没有答案呢~还好,现在没发现,这个题也有正确答案.
-----------------------------
支持。
下列说法正确的是:__1__
1、 数据段和代码段的段地址不能相同
----------------
楼主再看看p66页,检测点3.2上面的黑体字。
这段“段的综述”可是很经典的啊~_~ | | |
|
|
|
|
[第15楼]
[ 回复时间:2008-01-05 23:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28 |
是啊,1肯定不对啊,al是字节操作
4也肯定不对啊,ax都清零了,传进al也等于没传。
现在还剩两个答案了,正确的呼之欲出啊~
------------------
回复:OMG,完全是我的疏忽了,这题目是我看错了,应该是第3才正确的,是我看错了,SORRY | | |
|
|
|
|
[第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,我们对他定义为代码段,同样还是这段内存,也可以做为数据段,同时还可以作为堆栈来进行栈的操作。
如果是这样的话,那这段内存岂不是很乱?而且我进行压栈操作以后,这里应该有保存的数据,又作为数据段来存放数据?简直无法想象了我 | | |
|
|
|
|
[第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
-----
第二次看的时候才觉的有这些意思。知识的了解不同,对同一句话的理解也很可能不同。 | | |
|
|
|
|
[第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已经指向了栈顶 | | |
|
|
|
|
[第19楼]
[ 回复时间:2008-01-18 17:52 ]
[引用]
[回复]
[ top ] | |
荣誉值:3
信誉值:8
注册日期:2008-01-12 10:11 |
栈的sp指向栈顶的下一存储单元,所以,要使用整个段,理论上指向的位置应该是(FFFFH+1H),我们知道这样的话超过了段的最大值FFFFH,因此,出现了段内环绕,所以此时sp指向了0H的位置。
===============================================================
这题目出得精彩,就像数据结构基础的那个用数组来当环行队列,哈哈 | | |
|
|
|
|
[第20楼]
[ 回复时间:2008-01-20 17:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-01-15 15:46 |
|
|
|
|
|
[第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道单选题目 | | |
|
|
|
|
[第22楼]
[ 回复时间:2008-01-29 00:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:10
信誉值:14
注册日期:2007-10-15 14:54 |
|
|
|
|
|
[第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完全可以不要,有他反而不好理解 | | |
|
|
|
|
[第24楼]
[ 回复时间:2008-02-18 14:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28 |
当SP=0时,再次压栈将发生栈顶超界。如何确定当前的SS:SP已经指向了栈顶? | | |
|
|
|
|
[第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.有点难理解 | | |
|
|
|
|
[第26楼]
[ 回复时间:2008-03-14 18:14 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
To 25楼:当栈的大小为64K时,当栈中只有一个数据时,它的偏移地址为FFFE和FFFF,那么当这个数据出栈时,栈为空,SP=SP+2=FFFE+2,发生进位等于零。 | | |
|
|
|
|
[第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处呢?
不明白,谁告诉我为什么? | | |
|
|
|
|
[第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了 | | |
|
|
|
|
[第29楼]
[ 回复时间:2008-05-01 12:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-05-01 12:20 |
回复:[第25楼]
------------------
这是因为在压栈操作中是先进行压栈动作在改变它的指针值的啊,同样出栈是先改变指针值在出栈的 | | |
|
|
|
|
[第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支持立即数作为操作数压栈 第二个选项是出栈操作 | | |
|
|
|
|
[第31楼]
[ 回复时间:2008-05-01 13:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-05-01 12:20 |
谁能告诉我倒数第二题的第四个选项为什么不能选吗? 、 mov ds:[0],2 再立即数寻址方式里,操作数作为指令的一部分被取到cpu中,在这种寻址方式中的目的操作数只能是cpu内部的寄存器啊 而ds:[0],时表示的直接寻址方式 | | |
|
|
|
|
[第32楼]
[ 回复时间:2008-05-01 17:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:9
信誉值:0
注册日期:2008-04-12 14:46 |
|
|
|
|
|
[第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 | | |
|
|
|
|
[第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道单选题目
------------------
回复:这个才是正解! | | |
|
|
|
|
[第35楼]
[ 回复时间:2008-05-17 18:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2008-05-13 20:29 |
|
|
|
|
|
[第36楼]
[ 回复时间:2008-05-17 18:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2008-05-13 20:29 |
回复:[第29楼]
------------------
入栈先修改SP,再执行压栈操作吧,出栈是先执行出栈操作在修改SP吧
是不是搞反啦? | | |
|
|
|
|
[第37楼]
[ 回复时间:2008-07-22 23:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-07-20 18:33 |
|
|
|
|
|
[第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就是偏移地址:段基地址了? | | |
|
|
|
|
[第39楼]
[ 回复时间:2008-07-25 20:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2008-07-25 14:24 |
|
|
|
|
|
[第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 | | |
|
|
|
|
[第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,好象没见过啊 | | |
|
|
|
|
[第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中的值,不符合题意,所以只能是第四个答案! | | |
|
|
|
|
[第43楼]
[ 回复时间:2008-08-27 00:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-08-25 23:21 |
|
|
|
|
|
[第44楼]
[ 回复时间:2008-09-24 19:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:8
注册日期:2008-09-15 09:10 |
|
|
|
|
|
[第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. | | |
|
|
|
|
[第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还是原来的值.没有语病). | | |
|
|
|
|
[第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道单选题目
------------------
回复:这个才是正解! | | |
|
|
|
|
[第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是,栈为空也是可能的啊,怎么能一口咬定会发生栈定越界?????不明白我说的看第一题。 | | |
|
|
|
|
[第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,必然发生越界。 | | |
|
|
|
|
[第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中的值,不符合题意,所以只能是第四个答案!
------------------
回复:卡,正解 | | |
|
|
|
|
[第51楼]
[ 回复时间:2009-03-27 22:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-03-27 20:52 |
|
|
|
|
|
[第52楼]
[ 回复时间:2009-03-27 22:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-03-27 20:52 |
回复:[第50楼]
------------------
第一个的第一句就不对
mov ds,0
立即数不能直接进入段寄存器,, | | |
|
|
|
|
[第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. | | |
|
|
|
|
[第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
我不明白你为什么选三,但我知道一和四是肯定不对的,二为什么不对呢? | | |
|
|
|
|
[第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,满栈,最符合题意。 | | |
|
|
|
|
[第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,哈哈,想到了吧,同一个物理地址可以用不同的段地址+偏移量来表示的。 | | |
|
|
|
|
[第57楼]
[ 回复时间:2009-05-06 22:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-06 19:00 |
关于栈操作中,ss:sp始终指向栈顶地址,那么sp=0,表示满栈。sp=ffffH+1,表示空栈。
这是我的理解,
欢迎各位指正 | | |
|
|
|
|
[第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的初始值设置是__?___。(把“最合理的”去掉) | | |
|
|
|
|
[第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才对 | | |
|
|
|
|
[第60楼]
[ 回复时间:2009-06-17 20:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:31
信誉值:3
注册日期:2009-06-15 19:20 |
1-->同59楼
4-->sp=0即为满栈状态,继续push会溢出,但数据依然会被写入相应内存单元。
4
3
3 | | |
|
|
|
|
[第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作为堆栈 | | |