1、有如下程序段,填写2条指令,使程序在运行中将s处的一条指令复制到s0处。
assume segment
code segment
s: mov ax,bx
mov si,offset s
mov di,offset s0
_______________
_______________
s0: nop
nop
code ends
end s
1、 mov ax,cs:[si]
mov cs:[di],ax
2、 mov ax,cs:[di]
mov cs:[si],ax
3、 mov ax,[si]
mov [di],ax
4、 mov ax,ds:[di]
mov ds:[si],ax
解析:
第一个选项正确;而第二个反相;第三个看似正确,其实si\di寄存器默认段寄存器为ds,故不能省略,所以错误;第四个是很容易排除的.
2、assume cs:code
data segment
?
data ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
jmp dword ptr [bx+2]
code ends
end start
若在指令jmp dword ptr [bx+2]执行后,要使程序再次从第一条指令开始执行,下列对data段中的数据的定义更合理的是______。
1、 dd 0,0,0
2、 dw 0,0,0
3、 dw 0,0,seg code
4、 dw 0,0,offset code
解析:如果要程序从第一行处重新执行,而jmp语句表明此处为段间转移,故一定要把cs的段地址放入到ds段的内存中,而第一、二选项都没有实现这一点,而第四个选项看似好象对的,但实际上是把偏移量放入内存,却没有放入段地址,而此处要明确的是:seg code 的含义是指段地址
3、下列能够改变CS:IP所指位置并能通过编译的指令是______。
1、 jmp short [bx]
2、 jne [bx]
3、 loop byte ptr [bx]
4、 jmp [bx]
解析:jmp short 后只能跟标号;jne也只能跟标号;loop也只能跟标号
4、 mov cx,0
s: mov ax,bx
loop s
以上指令序列执行后mov ax,bx被执行了多少次_____。
1、 0
2、 256
3、 65535
4、 65536
解析:粗看似乎此程序中的loop s不能执行,但是,实际上,loop s在执行后对cx中的内容进行减1操作,而减1前cx中为0,故,第一次loop s 运行后cx中内容变为FFFF(65535),则mov ax,bx指令在cx内容变化后被执行65535次,加上第1次的执行,即结果为65536次。
5、对于指令jmp dword ptr [bx+0dh]的说法错误的是______。
1、 该指令能够实现段间转移。
2、 该指令转移的目的地址是在指令明确给出的。
3、 该指令转移的目的地址被存放在内存空间中。
4、 该指令中运用的寻址方式是寄存器相对寻址。
解析:此题中第2 选项错误。因为目的地址要视内存中内容而定。
- [sbjcm33] 原来你是把实验1和2放一起的,好办法,我怎么没想到呢,把它们分成了两个程序。 具体的内容我就不看了 12/06 01:34
- [rotapple] 却没有放入段地址,而此处要明确的是:seg code 的含义是指段地址 ============= 06/23 16:56
- [Wednesday] 分析透彻,收藏!哈哈 11/09 17:26
- [Wednesday] 公布答案了,哈哈。 11/05 23:03
- [mqmelon] 不用客气,共同进步! 11/02 10:03
- [feemess] 谢谢指点.我的下一次答题要在32个小时之后了.一直都认为第一题没错.看来.要认真看书才是 10/28 00:08
- [mqmelon] 谢谢,我会努力去做. 10/27 23:18
- [游客] mqmelon同学,你能有这样的认识首先说明你的学习态度是对的,只要有正确的学习态度,就能够学好,以 10/25 11:56
- [sunshine] 呵呵 10/25 09:49
- [mqmelon] 谢谢,十分谢谢。 10/24 17:10