汇编网首页登录博客注册
jhszcn的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  生命的活力来自于对理想的执着,并愿意为其付出永恒的努力。
  • 『姓名』:江恒                
  • 『性别』:保密  『发送消息
  • 个人说明:以德报怨何以报德
  • 详细信息『加为好友』
学习动态
文章收藏
友情链接

[2008-04-14 09:49] 16章检测题及分析

第一题:
将标号a处的8个数累加的和放到标号b处所在的单元中,下面选项中的程序正确的是______。
1、 assume cs:code 
    code segment 
    mov si,0 
    mov cx,8 
    s: add b,a[si] 
    inc si 
    loop s 
    mov ax,4c00h 
    int 21h 
    a db 1,2,3,4,5,6,7,8 
    b db 0 
    code ends 
    end 
 2、 assume cs:code,ds:data 
    data segment 
    a db 1,2,3,4,5,6,7,8 
    b db 0 
    data ends 
    code segment 
    start: 
    mov si,0 
    mov cx,8 
    s: mov al,a[si] 
    add b,al 
    inc si 
    loop s 
    mov ax,4c00h 
    int 21h 
    code ends 
    end start 
 3、 assume cs:code 
    data segment 
    a db 1,2,3,4,5,6,7,8 
    b db 0 
    data ends 
    code segment 
    mov ax,data 
    mov ds,ax 
    mov si,0 
    mov cx,8 
    start: 
    mov al,a[si] 
    add b,al 
    inc si 
    loop start 
    mov ax,4c00h 
    int 21h 
    code ends 
    end 
 4、 assume cs:code,ds:data 
    code segment 
    p: mov si,0 
    mov cx,8 
    mov ax,data 
    mov ds,ax 
    s: mov al,a[si] 
    mov ah,0 
    add b,ax 
    inc si 
    loop s 
    mov ax,4c00h 
    int 21h 
    code ends 
    data segment 
    a db 1,2,3,4,5,6,7,8 
    b dw 0 
    data ends 
    end p 
=============================================
这题选4
先看答案1,从逻辑上没有错误,add b,a[si] 这一句错了,不可以2个内存相加要通过CPU的寄存器。
看答案2,数据标号使用要指明相关联段,虽在伪指令assume中声明了,可没有在代码段中关联。
答案3,没有在assume中声明数据段

第二题:
下列说法中正确的是______。 
 1、 当数据的标号不在代码段时,只要用assume伪指令将数据段和相应的段寄存器连接起来就可以了。 
 2、 数据标号和地址标号唯一的区别就是,数据标号既表示内存单元的地址,还表示内存单元的长度,而地址标号只表示内存单元的地址。 
 3、 直接定址表只可以存储数据的地址,不可以存储程序段的地址。 
 4、 在中断服务程序用到直接定址表时,和不在中断服务程序的使用一样,直接调用即可。 
===============================================
这题选2
答案1,还要在代码段中关联;
答案3,可以存储程序段的地址,如seg a等
答案4,中断服务分内中断和外中断,在程序中用定址表有时不用段间跳转,可能没有保存段地址,不一定可以用


第三题:
关于直接定址表描述错误的是 
 1、 直接定址表和数据标号一样只是用来标记地址的。 
 2、 直接定址表可以方便的编写一些查表类的程序。 
 3、 直接定址表中包含了数据长度信息。 
 4、 直接定址表的数据可以定义在代码段。 
============================================
这题选1
数据标号还指明数据长度
评论次数(2)  |  浏览次数(954)  |  类型(汇编作业) |  收藏此文  | 

[  younggay   发表于  2008-04-14 11:40  ]

对博主的分析没有异议。

[  wdm   发表于  2008-04-14 11:51  ]

答案4,中断服务分内中断和外中断,在程序中用定址表有时不用段间跳转,可能没有保存段地址,不一定可以用 
------------------
我说一下我的看法。
由于标号的属性都是加载后就形成了,当程序运行将我们的中断程序写入其他内存段的时候,中断程序中的标号对应的地址就不能正确寻址到应该的地址了。所以,我们在中断程序中一般都是通过偏移量来重定位标号的地址的。这个我们在中断程序中调用一个sub程序的时候就有了些许体会。我们定位sub的时候,一般都是计算处sub到中断程序第一个数据地址的偏移量,然后再去jmp的。
不知道大家对我的看法怎么看。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码