| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 556 人关注过本帖
标题:高手帮忙看看这个程序
只看楼主 加入收藏
☆白开水
Rank: 1
等 级:新手上路
帖 子:10
专家分:4
注 册:2010-4-15
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:2 
高手帮忙看看这个程序
DATA SEGMENT
     BUF1 DW 8234H,8234H,45H,23H,16H
     BUF2 DD   5 DUP(0)
DATA ENDS
CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
       MOV DS,AX
       MOV ES,AX
       MOV CX,5
       MOV DI,0
    AA:MOV SI,OFFSET [BUF1+DI]
       MOV AX,[BUF1+DI]
       TEST AX,AX
       JS BB
       MOV AL,1
       MOV BYTE PTR [SI+2],AL
    BB:SHL AX,1
       MOV WORD PTR [BUF2+DI],AX
       LOOP AA
       MOV SI,OFFSET BUF2
       MOV BX,WORD PTR [BUF2]
       MOV DL,[SI+2]
       MOV AH,4CH
       INT 21H
CODE ENDS
END START

为什么执行完之后 DX中不是0001,而是0000???为什么 MOV AL,1
                                                     MOV BYTE PTR [SI+2],AL 就好像没执行一样???求教

2011-10-31 22:51
kabbin
Rank: 2
等 级:论坛游民
帖 子:6
专家分:50
注 册:2008-7-31
收藏
得分:15 
你少了一条增加DI值的语句,这样每次循环,AX的值都为8234H,每次执行JS BB都跳到BB处。
另外,我觉得AA:MOV SI,OFFSET [BUF1+DI]处应改为
AA:MOV SI,OFFSET BUF2才能得到你想要的结果,DX=0001
2011-11-01 17:43
chenwei435
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:322
专家分:1611
注 册:2010-11-28
收藏
得分:15 
你的程序根本上就不对,di根本上就不会变,都是0,所以dl一直是0,我看二楼改了后也是不对的
2011-11-01 20:30
快速回复:高手帮忙看看这个程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024222 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved