. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->数据处理的两个基本问题
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第八章检测题解答,欢迎指点  [待解决] 回复[ 15次 ]   点击[ 970次 ]  
debugkkk
[帖 主]   [ 发表时间: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
ppt
[第1楼]   [ 回复时间:2008-05-27 13:17 ]   [引用]   [回复]   [ top ] 
荣誉值:56
信誉值:0
注册日期:2007-09-23 18:23
答案都对呀.
wxl760506
[第2楼]   [ 回复时间:2008-07-07 10:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-27 18:09
1、    该程序实现的功能是计算123456h与0789h相除 
应为

1、    该程序实现的功能是计算123456h与789h000相除 
你录入错误了!
towersimper
[第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。
duress
[第4楼]   [ 回复时间:2008-07-27 04:20 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2008-07-25 14:24
3楼分析得不错啊
sbx2000_0
[第5楼]   [ 回复时间:2008-07-30 21:15 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2008-07-06 17:24
果然是强中更有强中手,一山更比一山高呀,佩服!
john
[第6楼]   [ 回复时间:2008-08-13 15:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-07 08:49
楼主,怎么老是喜欢把答案都帖出来啊

那许多人就直接看答案得了,过关检测题还有什么用啊
fancx
[第7楼]   [ 回复时间:2008-09-30 16:38 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:0
注册日期:2008-08-02 09:52
5楼太强了,说的很详细哦‘
xlmcktj
[第8楼]   [ 回复时间:2008-10-08 08:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-09-29 08:35
我错在第三题了,汗言。
wangzelong2007
[第9楼]   [ 回复时间:2008-11-04 22:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:8
注册日期:2008-10-11 12:55
嘿嘿 刚刚做过了,不过没看答案哦,小小的开心一下
wangzelong2007
[第10楼]   [ 回复时间:2008-11-04 22:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:8
注册日期:2008-10-11 12:55
还是不建议总把答案贴出来,有人看过了做检测题就没有意义啦
fairyhuang
[第11楼]   [ 回复时间:2008-11-10 19:38 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-10-14 21:07
第2题错了,以为PUSH,POP只能对寄存器操作呢,看来记错了
yinxd6112
[第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后编译通过
second
[第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
zhy_zhy
[第14楼]   [ 回复时间:2009-07-21 23:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-06-29 14:39
div near ptr ds:[4]
是什么啊,编译时提示label cannot have segment override
可见是有这种用法的啊……
haojunyu
[第15楼]   [ 回复时间:2010-11-30 19:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2010-11-16 21:58
楼主  第二题第三个选项的解释受教了  3q
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved