一、能够将ax中的内容送到内存0000:0200H处的指令序列是 3 。
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
解析:答案1明显错误了,不能将立即数送入段寄存器;答案2也不对,将200送入ax,mov ax,ds明显将此时的地址设置为0200:0000,物理地址为2000,和0000:0200的的物理地址不一致;答案3因为题目要求将ax值送入内存,而它一开始就改变了ax的值,所以不对;答案4正确,用bx来暂存数据
二、下列说法正确的是: 4 。
1、 数据段和代码段的段地址不能相同。
2、 指令mov ax,bx执行完后bx中的值为零。
3、 一个栈段的大小可以设为任意值。
4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。
解析:答案1错误,因为所谓的段,不过是人为安排的,对于计算机来说,指令和数据没有任何区别,地址可以相同;答案2错误,mov指令,是不情况原寄存器里面的值的;答案3也不对,栈段须有一个段地址,段地址不能变,只有偏移地址可以变,这个大小是有范围的;答案4正确,SP=0时,压榨,SP=SP-2,产生了超界
三、下列指令的书写正确的是: 3 。
1、 push al
2、 mov cs:[0],ds:[10]
3、 pop si
4、 mov ds:[0],2
解析:答案1错误,压堆指令一次性操作一个字;答案2错误,内存空间之间不能互相传送;答案3正确;答案4错误,不能将立即数送入内存空间
四、能够只将al中的内容压入栈的指令序列是 3 。
1、 push al
2、 pop ax
3、 mov ah,0
push ax
4、 mov ax,0
push ax
解析:答案1错误,push操作单位是字;答案2错误,题目要求的是入堆;答案3正确,先将ah清零,然后压入ax可以达到目的;答案4错误,将ax清空,然后压入,等于压入的是0
五、若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是 1 。
1、 0000H
2、 0001H
3、 FFFFH
4、 FFFEH
解析:以1000H为段地址的整个段空间,偏移地址为0-FFFFH,当栈中只有1个字时,偏移地址是FFFEH,当栈为空时,SP=SP+2=FFFF+2=0000,所以选择1
六、在8086CPU系统中一个栈段的容量最大为 3 。
1、 1KB
2、 512KB
3、 64KB
4、 32GB
解析:由于8086CPU寄存器只有16位,而SP等寄存器最大变化范围就只能为0~FFFFH,即64KB了…不仅仅是栈段,所有的8086CPU里面的段都不能超越64KB
- [qq247890212] 怎么文章显示不全? 我这到第四题就省略了。。。 12/11 11:15
- [aa227168] 第八题的b 我不太明白可以说的详细点吗? 09/17 21:53
- [zhujinwu] 十、下面哪个是错误的指令(D) 1、mov ax,bx 2、add 03/04 10:44
- [cpt1975] 4、add al,100h 错误,书本19页很清楚,错误原因是指令的两个操作对象位数不一致,al 10/26 09:26
- [moonrose] 十、下面哪个是错误的指令(D) 1、mov ax,bx 2、add al 09/18 11:22
- [lshang] "为什么不执行啊???(mov ax,0) " 1000:0 mov ax,8 06/08 17:26
- [hack_gx] 为什么不执行啊???(mov ax,0) 04/22 19:50
- [z497917579] 答案4是因为缺少end吧。。。博主似乎写错了。。。 04/08 17:16
- [z497917579] "汇编程序员可以通过对各种寄存器中内容的修改实现对CPU的控制。"大侠们,这句话真的准确吗? 04/08 16:58
- [游客] '1000:5 mov ax,0' 执行后IP为什么不改变? -------------- 11/18 17:13
- [游客] 同学们好,新写《汇编语言魔令营》一书,欲寻求试读者,请踊跃报名,多谢! 07/01 19:10