刚才激动了,把我的答案和思路写下来,忘高手解答。
1、若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是__1___。
1、 0000H
2、 0001H
3、 FFFFH
4、 FFFEH
2、下列说法正确的是:__1__
1、 数据段和代码段的段地址不能相同。
2、 指令mov ax,bx执行完后bx中的值为零。
3、 一个栈段的大小可以设为任意值。
4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。
3、能够将ax中的内容送到内存0000:020H处的指令序列是__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
4、下列指令的书写正确的是:_3___
1、 push al
2、 mov cs:[0],ds:[10]
3、 pop si
4、 mov ds:[0],2
5、能够只将al中的内容压入栈的指令序列是__3___。
1、 push al
2、 pop ax
3、 mov ah,0
push ax
4、 mov ax,0
push ax
第一题:如果堆栈里只有一个字的话,SP=FFFEH,再出栈,SP+2,值应该为0000H。
第二题:2和3肯定错了。看1,数据段和代码段都是内存空间而已,区别只是CS IP、DS这些指针的指向。段地址相同没什么问题吧,只是实际中基本不会这样用。看4,SP指向栈顶时,再次压栈会栈顶超界,压栈也有效;但是SP=0不一定是栈顶,错。
第三题就不说了。
第四题:选3,第四个我一直有个疑问,通用寄存器和数据之间可以互相MOV,通用寄存器和内存单元之间可以互相MOV,而数据和内存单元之间,MOV 数据,内存单元 肯定是没有意义的;但MOV 内存单元,数据 ms是有点意义,不知是什么原因没有这个操作。
第五题:1和2肯定错,看3和4,4把ax的值改了,3更好,但是题目中的“只能将al压栈”意思不太明确,求解答。
- [pisy] 哦,这样啊,我好好看看去 08/21 08:15
- [mywiil] 这事debug中T,d等命令都会引发中断过程,中段过程在调用中断程序处理当前操作的时候,会使用当前栈 08/21 03:27