| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 573 人关注过本帖
标题:很简单的一个题,求高手检查批评
只看楼主 加入收藏
爱行节列
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-10-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
很简单的一个题,求高手检查批评
原题是这样的:
    求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。
    编程要求与提示:    [1] 两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。    [2] 和以压缩十进制数的形式存入SUM以下单元。    [3] 将和送到屏幕显示部分功能的实现采用子程序的形式。
这是我编的 STACK SEGMENT STACK
      DB 100H DUP(00)
STACK ENDS
DATA  SEGMENT
ADD1  DB 32H,85H,67H,12H
ADD2  DB 43H,65H,73H,21H
SUM   DB 4 DUP(00)
DATA  ENDS
CODE  SEGMENT
      ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:
      MOV AX,DATA
      MOV DS,AX
      MOV ES,AX
      MOV AX,STACK
      MOV SS,AX
      LEA SI,ADD1
      MOV CX,4         ;循环次数4
      CLC      
L1:   MOV AL,ADD1[SI]
      MOV BL,ADD2[SI]
      ADC AL,BL
      DAA
      MOV SUM[SI],AL
      INC SI
      LOOP L1
      MOV CX,4
L2:  MOV AL,SUM[SI+3]
      CALL DISPAL
      DEC SI
      LOOP L2      
DISPAL PROC NEAR       ;显示AL中的十进制数
       PUSH AX
       PUSH CX
       PUSH DX
       PUSH AX
       MOV CL,4        ;AL中的高十六位
       SHR AL,CL
       ADD AL,30H      ;十六进制数变换成ASC码
       MOV AH,02
       MOV DL,AL
       INT 21H         ;显示一位字符
       POP AX
       AND AL,0FH      ;AL中的低十六位
       ADD AL,30H
       MOV AH,02H
       MOV DL,AL
       INT 21H
       POP DX
       POP CX
       POP AX
       RET
DISPAL ENDP
CODE   ENDS
       END START
汇编没有问题,但debug的时候用G指令的结果全是0,有4、5行
搜索更多相关主题的帖子: 子程序 十进制 屏幕 
2012-10-26 20:17
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
问题出在这循环
L2:  MOV AL,SUM[SI+3]
      CALL DISPAL
      DEC SI
      LOOP L2
你的si已经指向SUM的第5个db了
你的L2是想倒过来显示 那么必须先把si减一 在把sum[si + 3]改成sum[si]
具体是这样
程序代码:
     DEC SI
L2:  MOV AL,SUM[SI]
      CALL DISPAL
      DEC SI
      LOOP L2  


梅尚程荀
马谭杨奚







                                                       
2012-10-26 20:37
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用有容就大在2012-10-26 20:37:59的发言:

问题出在这循环
L2:  MOV AL,SUM[SI+3]
      CALL DISPAL
      DEC SI
      LOOP L2你的si已经指向SUM的第5个db了
你的L2是想倒过来显示 那么必须先把si减一 在把sum[si + 3]改成sum[si]
具体是这样
     DEC SI
L2:  MOV AL,SUM[SI]
      CALL DISPAL
      DEC SI
      LOOP L2  

头像挺好看

有容兄 你发图片能发么。。
2012-10-26 20:40
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

可以啊 。。。 firefox发的

梅尚程荀
马谭杨奚







                                                       
2012-10-26 21:16
爱行节列
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-10-26
收藏
得分:0 
回复 2楼 有容就大
还是不太对,不过还是谢谢了。已经弄出来了,是小问题。
2012-10-27 12:33
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:20 
我那个改法得到这个结果应该没错吧 注意小写
图片附件: 游客没有浏览图片的权限,请 登录注册


梅尚程荀
马谭杨奚







                                                       
2012-10-27 12:47
快速回复:很简单的一个题,求高手检查批评
数据加载中...
 
   



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

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