博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汇编 多位数相加
阅读量:6645 次
发布时间:2019-06-25

本文共 1001 字,大约阅读时间需要 3 分钟。

     上一次汇编写到,只是个位数的简单相加,只需要判断两者相加有无进位,进位即进一,在输出窗口输出一先。遇到多位数后,会变复杂很多,事实上汇编里面可以实现相加,难题在于需要把和转成ASCII码显示在dos窗口。所以需要把和一个一个数提取,转成ASCII。程序如下:

DATAS SEGMENT	    	OP1 DW 255    	OP2 DW 366    	RESULT DW 10 DUP(?)		 定义一个RESULT数组,长度为10个字节DATAS ENDSSTACKS SEGMENT    STACKS ENDSCODES SEGMENT    ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:    MOV AX,DATAS	    MOV DS,AX    MOV AX,OP1    ADD AX,OP2			OP1和OP2相加后附加到AX    MOV BX,0    MOV CL,10			将10附加到CL  	  	SS1:DIV CL		         		AX除以10ADD AH,30H       			余数转为ASCII码,MOV SI, OFFSET RESULT		保存到RESULT数组。MOV [SI+BX],AH  			商取代结果INC BX            			BX递增	MOV AH,0				将AH清空,以便将下一次的商附加进去	CMP AL,0				比较余数是否零,是则跳出循环	JNZ SS1SS2:DEC BX					BX递减	MOV DX,[SI+BX]	将RESULT数组从最高位开始附加到DX	MOV AH,2				字符串输出		INT 21H		CMP BX,0				判断BX是否为零,是则跳出		JNZ SS2		MOV AH,4CH		        INT 21HCODES ENDS    END START				正常结束程序

         程序的思想有点像进制转换,要把数字一个一个从和中提取,由于是十进制,可以将和除以10,所得的余数依次为个位开始的数字,最后,只需要把数字存入数组,用栈式的读取,最后存的先读,为最高位,转成ASCII码,输出。

    个位数相加当然也可以用这种方法,但是没必要这么复杂。所以第一个程序很简单的判断一下进位即可。

    原来一个多位数的相加之后的显示是如此的精妙!

   

 

转载地址:http://hnrvo.baihongyu.com/

你可能感兴趣的文章
数据中心硬件采购vs.自建:哪个更适合你?
查看>>
从IT时代到DT时代 武汉光谷民企聚焦大数据
查看>>
接口验证模式
查看>>
《移动App测试实战》——第1章 产品功能测试概述
查看>>
NAT网络部分客户端无法连接Server的解决方法
查看>>
Mozilla 宣布火狐浏览器停止支持 OS X 10.6/10.7/10.8
查看>>
《嵌入式 Linux C 语言应用程序设计(修订版)》——第 1 章 嵌入式系统基础知识...
查看>>
MemSQL 获得 3500 万美元的第二轮融资
查看>>
《Cacti实战》——1.4 本章小结
查看>>
《计算复杂性:现代方法》——2.4 归约网络
查看>>
第二天:识别干系人
查看>>
《编写高质量代码:改善c程序代码的125个建议》——建议7-2:避免在嵌套的代码块之间使用相同的变量名...
查看>>
锤子科技正式开源两项核心交互功能
查看>>
《云数据中心构建实战:核心技术、运维管理、安全与高可用》——第1章 奠定基石:典型数据中心搭建模式1.1 数据中心概述...
查看>>
Graphene 2.0.0.Alpha4,Selenium 的 Ajax 测试扩展
查看>>
《BackTrack 5 Cookbook中文版——渗透测试实用技巧荟萃》—第1章1.2节安装BackTrack到硬盘...
查看>>
MORPHiS —— 点对点高性能分布式文件系统
查看>>
Redis Studio 增加命令参考页面,优化多项用户接口
查看>>
《python 与数据挖掘 》一第1章 数据挖掘概述 1.1 数据挖掘简介
查看>>
《iOS创意程序设计家》——第6.3节标签页控制器UITabBarController
查看>>