一、下列指令序列不能够实现把内存地址0:202h中的字节数据送入al功能的是______。 3
1、 mov ax,0
mov ds,ax
mov bx,202h
mov al,[bx]
2、 mov ax,0
mov ds,ax
mov bx,200h
mov al,[bx+2]
3、 mov ax,0
mov ds,ax
mov bp,202h
mov al,[bp]
4、 mov ax,0
mov ds,ax
mov bp,200h
mov al,ds:[bp+2]
注解:bp的段地址默认是SS,故3中mov al,[bp]是把SS:[bp]的字节数据送入al,而不是把内存地址0:202h中的字节数据送入al
二、下列指令不合理的是______。 3
1、 mov ds:[0ffh],al
2、 mov ds:[0ffh],ax
3、 mov ds:[0ffh],0ffh
4、 push ds:[0ffh]
注解:1、2、4都对操作对象的长度进行了定义,3没有,故不合理。理论上应该是mov byte prt ds:[0ffh],0ffh或者mov word prt ds:[0ffh],0ffh
三、mov dx,0
mov ax,1001
mov bx,100
div bl
以上四条指令执行完后,ah值是_____。 1
1、 1
2、 10
3、 1001
4、 0
注解:除数bl=100,是8位数,所以被除数放在ax中,即1001,商为10,余数为1,ah中存放余数,所以ah=1
四、assume cs:codesg,ds:datasg
datasg segment
dd 123456h
dw 789h,0h
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov ax,ds:[0]
mov dx,ds:[2]
div word ptr ds:[4]
mov ds:[6],ax
mov ax,4c00h
int 21h
codesg ends
end start
下列说法正确的是______。 4
1、 该程序实现的功能是计算123456h与78900h相除。 1193046/1929=618.479
2、 该程序由于数据定义非法,无法通过编译。
3、 指令div word ptr ds:[4]可改为div near ptr ds:[4],不影响程序功能。
4、 指令div word ptr ds:[4]采用了直接寻址方式。
注解:本题主要是要注意数据的定义方式,先是dd 123456h,即00123456h,后是dw 789h,0h,即0789h,0000h,所以ds:[0]=3456h,ds:[2]=0012h,ds:[4]=0789h
1、 该程序实现的功能是计算123456h与0789h相除
2、 数据定义正确,能通过编译,运行正常
3、 似乎没有div near ptr ds:[4]这样的命令
4、 ds:[4]是直接寻址方式,详见课本P139 |