多字节加减法汇编程序

多字节加减法汇编程序

ID:46401719

大小:359.75 KB

页数:9页

时间:2019-11-23

多字节加减法汇编程序_第1页
多字节加减法汇编程序_第2页
多字节加减法汇编程序_第3页
多字节加减法汇编程序_第4页
多字节加减法汇编程序_第5页
资源描述:

《多字节加减法汇编程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、16位10进制正整数加减法汇编程序代码说明:将代码复制到MasmforWindows集成实验环境2012.5软件当中保存后点击运行如图:出现如下窗口:在屏幕上输入被加数(被减数)按‘+’结束,然后再输入加数(减数)按‘=’结束,最后窗口会显示运算结果。例如要计算123456+123456789,步骤如下:显然运算结果是正确的。进行减法运算:123456-123456789,结果如下:(注:由于n=16所以本程序最多只能进行16位数以内的正整数加减运算,如需进行任意位数的运算只需对n进行更改即可,这是本程序的最大优点。但是本程序只能完成正整数的加减运算,对负数和小数的运算就无能

2、为力了,另外也无法进行连加与连减的运算。因此程序还有待进一步的改进。)汇编程序代码:DATASSEGMENTnEQU16;n表示和的最大位数mEQU8;因为和是ASCII码要转换成BCA码所以m=n/2kEQU9*m+6;BUF0DB1DUP(30H);BUF1DBnDUP(0);被加数(ASCII),n=8DB1DUP(30H)BUF2DBnDUP(0);加数(ASCII)BUF3DBmDUP(0);被加数(BCD)BUF4DBmDUP(0);加数(BCD)FHADB4DUP(?);用于保存‘+’、‘-’、数据长度SBCDBmDUP(?);BCD码形式的和SASDBnDUP

3、(?);ASCII码形式的和BUF5DB30H,nDUP(0),30H,nDUP(0),nDUP(0),4DUP(?),mDUP(?),nDUP(?)DATASENDSSTACKSSEGMENTDB100DUP(?);此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSINPT1PROC;输入被加数到BUF1按‘+’结束LEASI,BUF1MOVCX,0;CX用来统计输入数的字长IN1:MOVAH,01HINT21HCMPAL,'+'JZBJS1CMPAL,'-'JZBJS1MOV[SI],ALINC

4、SIINCCLJMPIN1;将BUF1中的ASCII转换成BCD码到BUF3BJS1:MOV[FHA],ALMOV1[FHA],CLLEADI,BUF3MOVBX,2MOVAX,CXDIVBLADDAL,AHMOVCL,ALAB1:DECSI;AB1--ASCII转换成BCD码MOVAL,[SI]SUBAL,30HDECSIMOVAH,[SI]SUBAH,30HPUSHCXMOVCL,4SHLAH,CLPOPCXADDAL,AHMOV[DI],ALINCDILOOPAB1;输入加数到BUF2按‘=’结束LEASI,BUF2MOVCX,0;CX用来统计输入数的字长IN2:MOV

5、AH,01HINT21HCMPAL,'='JZJASMOV[SI],ALINCSIINCCXJMPIN2;将BUF2中的ASCII转换成BCD码到BUF4JAS:MOV2[FHA],CLLEADI,BUF4MOVBX,2MOVAX,CXDIVBLADDAL,AHMOVCL,ALAB2:DECSI;AB2--ASCII转换成BCD码MOVAL,[SI]SUBAL,30HDECSIMOVAH,[SI]SUBAH,30HPUSHCXMOVCL,4SHLAH,CLPOPCXADDAL,AHMOV[DI],ALINCDILOOPAB2RETINPT1ENDP;加法子程序JAFPROCC

6、LCMOVCL,m;m=8LEABX,BUF3LEASI,BUF4LEADI,SBCADC_:MOVAL,[BX]ADCAL,[SI]DAAMOV[DI],ALINCSIINCDIINCBXLOOPADC_RETJAFENDP;减法子程序JIAFPROCSBB_:MOVAL,1[FHA]CMPAL,2[FHA]JABDJ1;被加数长度大于加数长度,即被加数大于加数JZBZJ1;被加数长度等于加数长度,进行大小比较JMPBBJ;被加数长度小于加数长度,即被加数小于加数BZJ1:MOVCL,AL;被加数长度等于加数长度,进行大小比较LEASI,BUF1LEADI,BUF2BZJ3

7、:MOVAL,[SI]CMPAL,[DI]JABDJ1;被加数当前位大于加数当前位即被加数大于加数跳转JBBBJ;被加数当前位小于加数当前位即被加数小于加数跳转INCSI;被加数当前位等于加数当前位,调整指针继续比较INCDILOOPBZJ3JMPBDJ1;被加数等于加数BBJ:MOVAH,02HMOVDL,'-'INT21HCLCMOVCL,mLEABX,BUF4LEASI,BUF3LEADI,SBCJMPBDJBDJ1:CLCMOVCL,mLEABX,BUF3LEASI,BUF4LEADI,SBCB

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。