多字节加减法汇编程序

2019-01-26 15:07

16位10进制正整数加减法汇编程序代码说明:

将代码复制到Masm for Windows 集成实验环境 2012.5软件当中保存后点击运行如图:

出现如下窗口:

在屏幕上输入被加数(被减数)按‘+’结束,然后再输入加数(减数)按‘=’结束,最后窗口会显示运算结果。例如要计算123456+123456789,步骤如下:

显然运算结果是正确的。进行减法运算:123456-123456789,结果如下:

(注:由于n=16所以本程序最多只能进行16位数以内的正整数加减运算,如需进行任意位数的运算只需对n进行更改即可,这是本程序的最大优点。但是本程序只能完成正整数的加减运算,对负数和小数的运算就无能为力了,另外也无法进行连加与连减的运算。因此程序还有待进一步的改进。)

汇编程序代码:

DATAS SEGMENT n EQU 16 ;n表示和的最大位数 m EQU 8 ;因为和是ASCII码要转换成BCA码所以m=n/2 k EQU 9*m+6 ; BUF0 DB 1 DUP (30H);

BUF1 DB n DUP(0) ;被加数(ASCII),n=8 DB 1 DUP (30H)

BUF2 DB n DUP(0) ;加数(ASCII) BUF3 DB m DUP(0) ;被加数(BCD) BUF4 DB m DUP(0) ;加数(BCD)

FHA DB 4 DUP(?) ;用于保存‘+’、‘-’、数据长度 SBC DB m DUP(?) ;BCD码形式的和 SAS DB n DUP(?) ;ASCII码形式的和

BUF5 DB 30H,n DUP(0),30H,n DUP(0),n DUP(0),4 DUP(?),m DUP(?),n DUP(?) DATAS ENDS

STACKS SEGMENT DB 100 DUP(?)

;此处输入堆栈段代码 STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS INPT1 PROC

;输入被加数到BUF1按‘+’结束 LEA SI,BUF1

MOV CX,0 ;CX用来统计输入数的字长

IN1:MOV AH, 01H INT 21H CMP AL,'+' JZ BJS1 CMP AL,'-' JZ BJS1 MOV [SI],AL INC SI INC CL JMP IN1

;将BUF1中的ASCII转换成BCD码到BUF3 BJS1:

MOV [FHA],AL MOV 1[FHA],CL LEA DI,BUF3 MOV BX,2 MOV AX,CX DIV BL

ADD AL,AH MOV CL,AL

AB1: DEC SI ;AB1--ASCII转换成BCD码 MOV AL,[SI] SUB AL,30H DEC SI

MOV AH,[SI] SUB AH,30H PUSH CX MOV CL,4 SHL AH,CL POP CX

ADD AL,AH MOV [DI],AL INC DI

LOOP AB1

;输入加数到BUF2按‘=’结束 LEA SI,BUF2

MOV CX,0 ;CX用来统计输入数的字长 IN2:MOV AH, 01H INT 21H CMP AL,'=' JZ JAS MOV [SI],AL INC SI INC CX JMP IN2

;将BUF2中的ASCII转换成BCD码到BUF4 JAS:

MOV 2[FHA],CL LEA DI,BUF4 MOV BX,2 MOV AX,CX DIV BL

ADD AL,AH MOV CL,AL

AB2: DEC SI ;AB2--ASCII转换成BCD码 MOV AL,[SI] SUB AL,30H DEC SI

MOV AH,[SI] SUB AH,30H PUSH CX MOV CL,4 SHL AH,CL POP CX

ADD AL,AH MOV [DI],AL INC DI LOOP AB2 RET INPT1 ENDP ;加法子程序

JAF PROC CLC

MOV CL,m LEA BX,BUF3 LEA SI,BUF4 LEA DI,SBC ADC_:MOV AL,[BX] ADC AL,[SI] DAA

MOV [DI],AL INC SI INC DI INC BX LOOP ADC_ RET JAF ENDP ;减法子程序 JIAF PROC

SBB_:MOV AL,1[FHA] CMP AL,2[FHA]

JA BDJ1 JZ BZJ1 JMP BBJ ;m=8 ;被加数长度大于加数长度,即被加数大于加数 ;被加数长度等于加数长度,进行大小比较

;被加数长度小于加数长度,即被加数小于加数


多字节加减法汇编程序.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:-因式分解-知识点练习

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: