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

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  原泉混混,不舍昼夜。盈科而后进,放乎四海,有本着如是,是之取尔!
  • 『姓名』:杨逍
  • 『性别』:男『发送消息
  • 个人说明:
  • 详细信息『加为好友』
学习动态
最新留言

[2009-09-15 14:55] 检测点16.2

题目:下面的程序将datasg段的中a处的8个数据累加,结果保存到b处的字中,补全程序

assume cs:codesg,es:datasg
datasg segment
    a db 1,2,3,4,5,6,7,8
    b dw 0 
datasg ends
codesg segment

    start:
    ____(1)____
    ____(2)____
    
    mov si,0
    mov cx,8

    s:
    mov al,a[si]
    mov ah,0
    add b,ax
    inc si
    loop s

    mov ax,4c00h
    int 21h



codesg ends
end start
 

分析:虽然一开始的时候把datasg的开始地址赋值给了es,也就是说在执行程序时数据默认是从ds加偏移地址中取出要改成冲es加偏移地址中获取。所以要把datasg的值给es。所以有

assume cs:codesg,es:datasg
datasg segment
    a db 1,2,3,4,5,6,7,8
    b dw 0 
datasg ends
codesg segment

    start:
    mov ax,datasg
    mov es,ax;我原本以为也可以是mov ds,ax。但是经过调试,发现结果不正确
    
    mov si,0
    mov cx,8

    s:
    mov al,a[si]
    mov ah,0
    add b,ax
    inc si
    loop s

    mov ax,4c00h
    int 21h



codesg ends
end start
评论次数(2)  |  浏览次数(589)  |  类型(汇编作业) |  收藏此文  | 

[  wsrf   发表于  2009-09-16 09:46  ]

assume伪指令指定了段中标号与相应段寄存器的联系。

[  njutyangxiao   发表于  2009-09-16 11:22  ]

嗯,谢谢指导

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