![]() |
#2
xwvlb2007-10-10 22:56
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, 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 CX,05H CALL DISPL ; 显示被加数 CALL CRLF ; 回车、换行 MOV SI,OFFSET DATA1 MOV CX,05H ;显示加数 CALL DISPL CALL CRLF ; 回车、换行 MOV DI,OFFSET DATA2 CALL ADDA ;加法运算 MOV SI,OFFSET DATA1 MOV CX,05H ;显示结果 CALL DISPL CALL CRLF MOV AX,004CH 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 DL,[SI+BX-1] ;显示字符串中一字符 MOV AH,02;???? INT 21H ; DEC CX ;修改偏移量 JNZ DSL RET DISPL ENDP ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV CX,05h AD1: SUB BYTE PTR[SI+BX-1],30H SUB BYTE PTR[DI+BX-1],30H DEC CX ;将ASCII码表示的数字串转化为十六进制串 JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H ;包括进位,共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 CX,05H AD3: ADD BYTE PTR [SI+BX-1],30H ADD BYTE PTR [DI+BX-1],30H DEC CX ;十六进制的数字串转化为ASCll码表示的串 JNZ AD3 RET ADDA ENDP CODE ENDS END START |
只有本站会员才能查看附件,请 登录
