| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 406 人关注过本帖
标题:[求助]为什么我的结果出不来
只看楼主 加入收藏
xwvlb
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-9-6
收藏
 问题点数:0 回复次数:0 
[求助]为什么我的结果出不来

大家帮忙看看我的程序为什么出不来结果?哪里错了??

DATA SEGMENT

DATA1 DB 33H,39H,31H,37H,34H ;第一个数据(作为被加数)

DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为加数)

DATA ENDS

STACK SEGMENT STACK'STACK' ;堆栈段

STA DB 32 DUP(?)

TOP EQU LENGTH STA

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK

START: MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,AX

MOV AX,TOP

MOV SP,AX

MOV SI,OFFSET DATA2

MOV BX,05

CALL DISPL ; 显示被加数

CALL CRLF ; 回车、换行

MOV SI,OFFSET DATA1

MOV BX,05 ;显示加数

CALL DISPL

CALL CRLF ; 回车、换行

MOV DI,OFFSET DATA2

CALL ADDA ;加法运算

MOV SI,OFFSET DATA1

MOV BX,05 ;显示结果

CALL DISPL

CALL CRLF

MOV AX,4C00H

INT 21H

CRLF PROC NEAR ;回车、换行 于功能

MOV DL,0DH ;回车

MOV AH,02H

INT 21H

MOV DL,0AH ;换行

MOV AH,02H

INT 21H

RET

CRLF ENDP

DISPL PROC NEAR ;显示于功能

DSL: MOV AH,02

MOV DL,[SI+BX-1] ;显示字符串中一字符

INT 21H ;

DEC BX ;修改偏移量

JNZ DSL

RET

DISPL ENDP

ADDA PROC NEAR

MOV DX,SI

MOV BP,DI

MOV BX,05

ADI: SUB BYTE PTR[SI+BX-1],30H

SUB BYTE PTR[DI+BX-1],30H

DEC BX ;将ASCII码表示的数字串转化为十六进制串

JNZ ADI

MOV SI,DX

MOV DI,BP

MOV CX,05 ;包括进位,共5位

CLC ;清进位位

AD2: MOV AL,[SI]

MOV BL,[DI]

ADC AL,BL ;带进位相力口

AAA ;非组合BCD码的加法调整

MOV [SI],AL ;结果送被加数区

INC SI

INC DI ;指向下一位

LOOP AD2 ;循环

MOV SI,DX

MOV DI,BP

MOV BX,05H

AD3: ADD BYTE PTR [SI+BX-1],30H

ADD BYTE PTR [DI+BX-1],30H

DEC BX ;十六进制的数字串转化为ASCll码表示的串

JNZ AD3

RET

ADDA ENDP

CODE ENDS

END START     

搜索更多相关主题的帖子: 为什么 结果 
2007-10-11 15:36
快速回复:[求助]为什么我的结果出不来
数据加载中...
 
   



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

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