1.
在Intel8086环境下,对指令mov ax,[bx]描述错误的是_____。 (4)
1、 指令中,源操作数的段地址默认为ds中的内容
2、 指令中,源操作数的偏移地址为bx中的内容
3、 指令执行后,(al)=((ds)*16+(bx)),(ah)=((ds)*16+(bx)+1)
4、 指令执行后,((ds)*16+(bx))=(al),((ds)*16+(bx)+1)=(ah)
分析:这个指令是将ds:[bx]中的值送到ax中,不对原值进行修改,所以,4错
2.
mov cx,5
s: mov ax,[bx]
add bx,2
loop s
上面指令序列,当指令第一次执行到add bx,2时cx的值_____。(1)
1、 5
2、 4
3、 3
4、 2
分析:
只有执行到loop语句时,才会对cx进行修改。
CPU在执行loop s操作时,进行两部操作:
(1) (cx) = (cx)-1
(2) 判断cx的值,如果不为0,则转至s处执行,如果为0,则继续执行下一条指令。
3.
已知21000h处字单元的内容为 BE00H,对于如下程序: (4)
(1) mov ax,2000h
(2) mov ds,ax
(3) mov bx,1000h
(4) mov ax,[bx]
(5) inc bx
(6) inc bx
(7) mov [bx],ax
(8) inc bx
(9) inc bx
(10) mov [bx],ax
(11) inc bx
(12) mov [bx],al
(13) inc bx
(14) mov [bx],al
程序执行后,内存中字单元2000:1005中的内容为______。
1、 00
2、 BE
3、 00BE
4、 0000
分析:
为了分析方便,程序上加上了行号。
执行到第四行,ds:[1000]中的字节单元值为00 ds:[1001]中的字节单元值为BE
执行到第七行,ds:[1002]中的字节单元值为00 ds:[1003]中的字节单元值为BE
执行到第十行,ds:[1004]中的字节单元值为00 ds:[1005]中的字节单元值为BE
执行到第十二行,ds:[1005]中的字节单元值为00
执行到第十四行,ds:[1006]中的字节单元值为00
因为是字节单元,所以1不正确,4正确
4.
要计算123与456的乘积,应填在空白处的指令序列是_____。 (4)
assume cs:code
code segment
____________
mov ax,4c00h
int 21h
code ends
end
1、 mov ax,1
mov cx,123
s: add ax,123
loop s
2、 mov ax,0
mov cx,456
s: add ax,456
loop s
3、 mov ax,1
mov cx,456
s: add ax,123
loop s
4、 mov ax,0
mov cx,456
s: add ax,123
loop s
分析:
利用排除法,
选项1是123*123 +1
选项2是456*456
选项3是456*123+1
选项4是456*123,正确
5.
对于如下程序
assume cs:code
code segment
start:mov ax,code
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
s:mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
下列说法正确的是______。 (3)
1、 指令mov ax,code改为mov ax,start对程序要实现的功能没有任何影响。
2、 程序不能通过编译,因为在loop指令之前,没有对寄存器cx进行设定。
3、 程序实现的功能是将程序的所有指令复制到内存中以0:200h为起始地址的一段内存空间中。
4、 程序实现的功能是用内存中以0:200h为起始地址的一段内存空间中的数据将程序的所有指令覆盖。
分析:1、code和start的地址不同,错误
2、第二版第91页,“可以看到,Debug将程序从可执行文件加载入内存后,cx中存放的是程序的长度。”所以,这里的cx可以省略。
3、正确,这就是程序的功能
4、正好相反,