|
主题 : : 第八章检测题解答,欢迎指点 [待解决] |
回复[ 15次 ]
点击[ 970次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-05-26 20:00 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:16
注册日期:2008-03-17 20:21 |
一、下列指令序列不能够实现把内存地址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 | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-05-27 13:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:56
信誉值:0
注册日期:2007-09-23 18:23 |
|
|
|
|
|
[第2楼]
[ 回复时间:2008-07-07 10:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-06-27 18:09 |
1、 该程序实现的功能是计算123456h与0789h相除
应为
1、 该程序实现的功能是计算123456h与789h000相除
你录入错误了! | | |
|
|
|
|
[第3楼]
[ 回复时间:2008-07-14 23:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16 |
既然本题主要是要注意数据的定义方式,先是dd 123456h,即00123456h,后是dw 789h,0h,即0789h,0000h,那么就应该了解,dd和dw的含义,说项dd是定义双字型数据,即123456h占据4个存储单元,dw是定义字型数据的,所以0789h,和0h都占据2个字节,共4个字节。按照它们在内存中的排序顺序(先低位,后高位)为56,34,12,00,89,07,00,00。所以mov ax,ds:[0],可以ds:[0]是一个字单元,为3456h,而mov dx,ds:[2]可知ds:[2]是一个字单元,所以ds:[2]为0012h,而由div word ptr ds:[4]可知ds:[4]也是一个字单元,而且除数是ds:[4],占16个字节,可知ds:[4]为0789h。所以被除数应为占32个字节,ax存放的是低16位,dx存放的是高十六位,所以被除数为00123456h。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2008-07-27 04:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2008-07-25 14:24 |
|
|
|
|
|
[第5楼]
[ 回复时间:2008-07-30 21:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2008-07-06 17:24 |
|
|
|
|
|
[第6楼]
[ 回复时间:2008-08-13 15:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-08-07 08:49 |
楼主,怎么老是喜欢把答案都帖出来啊
那许多人就直接看答案得了,过关检测题还有什么用啊 | | |
|
|
|
|
[第7楼]
[ 回复时间:2008-09-30 16:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:3
信誉值:0
注册日期:2008-08-02 09:52 |
|
|
|
|
|
[第8楼]
[ 回复时间:2008-10-08 08:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-09-29 08:35 |
|
|
|
|
|
[第9楼]
[ 回复时间:2008-11-04 22:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:8
注册日期:2008-10-11 12:55 |
|
|
|
|
|
[第10楼]
[ 回复时间:2008-11-04 22:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:8
注册日期:2008-10-11 12:55 |
还是不建议总把答案贴出来,有人看过了做检测题就没有意义啦 | | |
|
|
|
|
[第11楼]
[ 回复时间:2008-11-10 19:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-10-14 21:07 |
第2题错了,以为PUSH,POP只能对寄存器操作呢,看来记错了 | | |
|
|
|
|
[第12楼]
[ 回复时间:2008-11-30 21:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:12
信誉值:0
注册日期:2008-11-24 18:10 |
楼主说的好 mov ds:[0ffh],0ffh编译时提示 operand must have size,改为mov word ptr ds:[0ffh],0ffh后编译通过 | | |
|
|
|
|
[第13楼]
[ 回复时间:2009-04-22 14:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-03-22 17:01 |
三、mov dx,0
mov ax,1001
mov bx,100
div bl
以上四条指令执行完后,ah值是_____。 1
1、 1
2、 10
3、 1001
4、 0
请注意这个题目。
都是十进制。否则这个DIV是出错的。他并没有带H
这么算确实为答案1 | | |
|
|
|
|
[第14楼]
[ 回复时间:2009-07-21 23:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2009-06-29 14:39 |
div near ptr ds:[4]
是什么啊,编译时提示label cannot have segment override
可见是有这种用法的啊…… | | |
|
|
|
|
[第15楼]
[ 回复时间:2010-11-30 19:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2010-11-16 21:58 |
|