有如下程序段,填写2条指令,使程序在运行中将s处的一条指令复制到s0处。 1
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
注解:将s处的指令复制到s0处,就是将cs:offset s处的数据复制到cs:offset s0处,而si= offset s,di= offset s0,故选1
对于如下程序:
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段中的数据的定义更合理的是______。 3
1、 dd 0,0,0
2、 dw 0,0,0
3、 dw 0,0,seg code
4、 dw 0,0,offset code
注解:题目要求指令jmp dword ptr [2]执行后,程序再次从第一条指令开始执行,即(cs)= (内存单元地址+2)=(ds:4), (ip)= (内存单元地址)=(ds:2,所以答案1和2都不对,至于3和4谁对谁错不知道,不过我把3和4分别带入后编译得到的结果表明3是正确答案,这里还请各位指点下。
mov cx,0
s: mov ax,bx
loop s
以上指令序列执行后mov ax,bx被执行了多少次_____。 4
1、 0
2、 256
3、 65535
4、 65536
注解:loop s执行时,先cx自减1,cx=cx-1=0-1=0+10000H-1=FFFFH,即65535,加上loop s前mov ax,bx被执行了一次,所以mov ax,bx被执行了65535+1=65536次
下列能够改变CS:IP所指位置并能通过编译的指令是______。 4
1、 jmp short [bx]
2、 jne [bx]
3、 loop byte ptr [bx]
4、 jmp [bx]
注解:jmp short后应该接标号,loop 后面也是。Jne没学过,高手指点下~,jmp [bx],即CS不变,IP=ds:[bx]
对于如下程序:
mov ax,2
mov cx,3
s: add ax,2
s1:loop s
mov di,offset s1
mov si,offset s3
mov ax,cs:[di]
mov cs:[si],ax
mov ax,1
mov cx,3
s2: add ax,2
s3: nop
nop
所有指令执行完后ax的值为_____。 2
1、 15
2、 7
3、 11
4、 3
注解:mov di,offset s1 和mov si,offset s3的作用是把S1处的LOOP S复制到S3处,由于mov ax,1指令的作用,ax最终值为1+2+2+2=7 |