一位数乘法的汇编语言实现方法

使用的是16位微程序设计,指令为TEC-2000 16位教学计算机的指令系统

要实现的功能:通过键盘键入一个数字,接收之后显示出来,然后自动补上*号,接着再次键入一个数字,然后自动补上=号,接着输出运算结果。

本文章实现,主程序:通过调用前面的几个子程序,实现最终要实现的功能。

关键字解释

CALA ADR:CIN 表示调用子程序CIN,ADR表示要输入子程序CIN的起始地址

主程序代码

//主程序
CALA ADR:CIN	//调用子程序,读入一个数字字符
MVRR R1,R0	//将读入的数字字符存入R1中
MVRD R0,002A	//将*号的ASCII码,给R0
OUT 80		//输出*号
CALA ADR:CIN	//调用子程序,读入另一个数字字符
MVRR R2,R0	//将读入的数字字符存入R2中
MVRD R0,003D
OUT 80		//输出=符号
CALA ADR:MUL	//调用子程序,进行两个数的运算,运算结果以十六位进制的形式存入R0
CALA ADR:SPLIT	//将R0中的值,拆分为个位和十位
MVRD R3,0030	//定义从数值转化为ASCII码的差值
ADD R1,R3	//将数值转化为对应的ASCII码的值
ADD R2,R3
MVRR R0,R1	//将十位数值的ASCII码值装入R0
OUT 80		//输出十位数的值
MVRR R0,R2
OUT 80
RET

没什么好说的了,如果子程序看懂了,这个主程序很简单,也都能想到。

TEC-2000 16位教学计算机演示

可以看到,运行程序之后,依次键入5和7,程序自动补充*号和=号,以及最后的结果

(0)

相关推荐

  • 汇编语言乘指令 MUL、IMUL的具体使用

    MUL: 无符号乘 ================================================== ;影响 OF.CF 标志位 ;指令格式: ;MUL r/m  ;参数是乘数 ;如果参数是 r8/m8,   将把  AL 做乘数, 结果放在 AX ;如果参数是 r16/m16, 将把 AX 做乘数, 结果放在 EAX ;如果参数是 r32/m32, 将把 EAX 做乘数, 结果放在 EDX:EAX 当乘积的高半部分(AH.DX.EDX.RDX)中存有结果的有效数字,则CF=

  • 一位数乘法的汇编语言实现方法

    使用的是16位微程序设计,指令为TEC-2000 16位教学计算机的指令系统 要实现的功能:通过键盘键入一个数字,接收之后显示出来,然后自动补上*号,接着再次键入一个数字,然后自动补上=号,接着输出运算结果. 本文章实现,主程序:通过调用前面的几个子程序,实现最终要实现的功能. 关键字解释 CALA ADR:CIN 表示调用子程序CIN,ADR表示要输入子程序CIN的起始地址 主程序代码 //主程序 CALA ADR:CIN //调用子程序,读入一个数字字符 MVRR R1,R0 //将读入的数

  • PHP实现RSA加解密算法示例(生成密钥位数为1024位的方法)

    大家可以先到http://web.chacuo.net/netrsakeypair这个网站,在线生成公钥和私钥 RSA非对称加密算法,如果是公钥加密,就得用私钥解密,反过来也一样,私钥加密的就用公钥解密,以下是相关实现函数 /** * RSA私钥加密 * @param string $private_key 私钥 * @param string $data 要加密的字符串 * @return string $encrypted 返回加密后的字符串 * @author mosishu */ fun

  • Java实现矩阵乘法以及优化的方法实例

    传统的矩阵乘法实现   首先,两个矩阵能够相乘,必须满足一个前提:前一个矩阵的行数等于后一个矩阵的列数.   第一个矩阵的第m行和第二个矩阵的第n列的乘积和即为乘积矩阵第m行第n列的值,可用如下图像表示这个过程. 矩阵乘法过程展示 C[1][1] = A[1][0] * B[0][1] + A[1][1] * B[1][1] + A[1][2] * B[2][1] + A[1][3] * B[3][1] + A[1][4] * B[4][1]   而用Java实现该过程的传统方法就是按照该规则实

  • php基于str_pad实现卡号不足位数自动补0的方法

    自动补足空白位数在php中str_pad函数可以帮我们实现哦,str_pad() 函数把字符串填充为指定的长度. str_pad() 函数把字符串填充为指定的长度. 语法 str_pad(string,length,pad_string,pad_type) 参数 描述 string 必需.规定要填充的字符串. length 必需.规定新字符串的长度.如果该值小于原始字符串的长度,则不进行任何操作. pad_string 可选.规定供填充使用的字符串.默认是空白. pad_type 可选.规定填充

  • Python 实现大整数乘法算法的示例代码

    我们平时接触的长乘法,按位相乘,是一种时间复杂度为 O(n ^ 2) 的算法.今天,我们来介绍一种时间复杂度为 O (n ^ log 3) 的大整数乘法(log 表示以 2 为底的对数). 介绍原理 karatsuba 算法要求乘数与被乘数要满足以下几个条件,第一,乘数与被乘数的位数相同:第二,乘数与被乘数的位数应为  2 次幂,即为 2 ^ 2,  2 ^ 3, 2 ^ 4, 2 ^ n 等数值. 下面我们先来看几个简单的例子,并以此来了解 karatsuba 算法的使用方法. 两位数相乘 我

  • java求整数的位数方式

    目录 求整数的位数 其一 其二 其三 java整数位数判断 求整数的位数 一般有几种方法,其一是转成字符串求,缺点是字符串耗时间长:另一种是用Math.log10();用log函数:还有一种用循环除以10的方式求出:最后一种,直接判断<10,<100,<1000,<10000……或许效率挺高吧,因为不需要计算. 其一 private static int getNumLenght(long num){         num = num>0?num:-num;       

  • 关于python中逆序的三位数

    目录 python逆序的三位数 思路 Python三位数逆序输出基础方法 1.利用切片操作 2.利用for循环 3.数学方法 4.字符串的“索引”+“连接”操作 python逆序的三位数 程序每次读入一个正3位数,然后输出按位逆序的数字.注意:当输入的数字含有结尾的0时,输出不应带有前导的0.比如输入700,输出应该是7. 输入格式: 每个测试是一个3位的正整数. 输出格式: 输出按位逆序的数. 输入样例: 123 输出样例: 321 思路 在这里讲两个思路吧 1.使用切片的方法 使用字符串切片

  • 用Python实现写倒序输出(任意位数)

    目录 Python写倒序输出(任意位数) 倒序输出数字 逆序输出一个数字Python Python写倒序输出(任意位数) 倒序输出数字 这种方法最后输出的是字符而不是数字 x=int(input('请输入任意一个数字:')) y=str(x)  #转换为字符串 l=len(y) #长度 a=[] for i in range(l):     a.append(y[l-1-i]) # print(a) for j in a:     print(j,end='') 这种的话输出的就是任意位数字的倒

  • Python实现打印九九乘法表的不同方法总结

    目录 前言 第一种方法:for-for 第二种方法:while-while 第三种方法:while-for 第四种方法:for-while 第五种方法:定义一个变量a 第六种方法:使用递归 第七种方法:使用一行语句 前言 嗨喽~大家好呀,这里是魔王呐  ~! 在学习Python的过程中需要不断的积累和练习,这样才能够走的更远, 今天一起来学习怎么用Python写九九乘法表~ 第一种方法:for-for 代码: for i in range(1, 10): for j in range(1, i+

  • 如何使用BigDecimal实现Java开发商业计算

    前言 今天群里一个初级开发者问为什么测试人员测出来他写的价格计算模块有计算偏差的问题,他检查了半天也没找出问题.这里小胖哥要提醒你,商业计算请务必使用BigDecimal,浮点做商业运算是不精确的.因为计算机无法使用二进制小数来精确描述我们程序中的十进制小数.<Effective Java>在第48条也推荐"使用BigDecimal来做精确运算".今天我们就来总结归纳其相关的知识点. BigDecimal BigDecimal表示不可变的任意精度带符号十进制数.它由两部分组

随机推荐