用汇编语言编写查表法实现乘法的程序

合集下载

汇编实现九九乘法表输出

汇编实现九九乘法表输出

汇编实现九九乘法表输出目录概述 (3)一设计内容与要求 (3)二设计思想 (3)三工作原理 (3)四程序流程图 (4)五、程序运行结果截图 (5)六程序源代码 (5)七设计过程中遇到的问题及解决方法 (8)八设计心得 (8)九结束语 (9)十参考文献 (9)九九乘法表输出摘要:九九乘法表输出是应用masm.exe 、link.exe、debug.exe等汇编语言软件进行编译链接及执行目的程序的方法来实现。

并且认识和利用DOS系统下的21h函数的02功能号来进行单个字符的输出,程序设计的过程中用到循环和子函数的思想。

模块化的程序设计思想,有利于源代码代码的编写,错误的查找和修改,同时可以分步来调试程序,减少工作量,乘法表的输出没有乘数和被乘数,只有乘积的结果输出。

关键词:汇编语言程序设计、微机原理、九九乘法表、dos中断系统导入语一、设计要求(一)创建文本文件,编写源代码,把文件保存在有masm.exe link.exe等汇编软件的文件夹下,文件的后缀名改为.asm,比如(九九乘法表输出.asm)。

(二)开启电脑,在“开始”—“运行”输入“cmd”命令进入DOS的字符操作界面,编译链接程序代码,查看源程序是否有错误,有错误则加以修改。

(三)程序编译链接没有错误的情况下,执行目标程序,查看结果的输出情况,并用debug 命令查看内存的变化。

(四)按要求撰写设计报告。

二、设计思想九九乘法表输出程序主要用到一个嵌套循环,和两个过程,外层循环用bl保存并记录,外循环每执行一次,bl的值加一。

内循环用bh 保存并记录,如果bh的值小于bl的值则执行内循环,内循环中每盒bl比较一次,成立则值加一不成立则转到换行子函数执行,同时也比较外循环是否继续满足条件执行,即比较bl的值是否小于10,小于就执行外循环,否则就结束程序。

设计dis子函数,把内存中的16进制数转换成10进制,设计的disp子函数是把十进制转化成ASCLL码,并输出乘积,这样得到的显示的结果就是我们看到的10进制数。

汇编语言设计乘法运算

汇编语言设计乘法运算

汇编语言设计乘法运算在计算机科学中,汇编语言是指一种低级的程序设计语言,用于编写机器语言指令以及控制计算机硬件的操作。

汇编语言相对于高级语言而言,更接近计算机的底层结构,具有更高的执行效率和灵活性。

在汇编语言中,乘法运算是一种常见的操作,本文将探讨汇编语言设计乘法运算的原理和实现方法。

一、乘法运算的原理乘法运算是指对两个数进行相乘的操作,其结果称为积。

在计算机中,乘法运算是通过对操作数进行逐位相乘和累加操作来实现的。

具体而言,乘法运算可以分为以下几个步骤:1. 初始化:将累加器清零,并将被乘数和乘数分别加载到寄存器中。

2. 逐位相乘:从低位开始,将被乘数的每一位与乘数相乘,并将结果累加到累加器中。

3. 位移操作:将乘数逐位左移一位。

4. 重复步骤2和步骤3,直到乘数的所有位都处理完毕。

5. 结果获取:将累加器中的结果读取出来,即为乘法运算的结果。

二、乘法运算的实现方法在汇编语言中,乘法运算可以通过汇编指令来实现。

以下是一种简单的实现方法,以x86架构为例:```assemblysection .data ; 数据段a dw 5 ; 被乘数b dw 3 ; 乘数result dw 0 ; 结果section .text ; 代码段global _start ; 程序入口点_start:mov ax, [a] ; 将被乘数加载到寄存器ax中mov bx, [b] ; 将乘数加载到寄存器bx中xor dx, dx ; 清零累加器dxmultiply_loop:test bx, 1 ; 检查乘数的最低位是否为1jz shift ; 如果为0,跳转到shift标记处add dx, ax ; 如果为1,将被乘数累加到dx中shift:shr bx, 1 ; 将乘数逐位右移一位shl ax, 1 ; 将被乘数逐位左移一位cmp bx, 0 ; 检查乘数是否处理完毕jnz multiply_loop ; 如果乘数不为0,继续执行multiply_loopmov [result], dx ; 将积保存到result变量中; 在此处可以添加输出结果的代码; 退出程序mov eax, 1xor ebx, ebxint 0x80```在上述示例代码中,我们定义了3个变量:a(被乘数)、b(乘数)和result(存放结果)。

汇编语言课程设计报告——实现加减乘除四则运算的计算器讲解

汇编语言课程设计报告——实现加减乘除四则运算的计算器讲解

汇编语言课程设计报告(2011 -- 2012年度第2学期)实现加减乘除四则运算的计算器专业_____________ 计算机科学与技术__________学生姓名____________________________________班级_______________________________________学号_______________________________________指导教师____________________________________完成日期___________________________________目录目录 (2)1概述 (1)1.1设计目的 (1)1.2设计内容 (1)2系统需求分析 (1)2.1 系统目标 (1)2.2主体功能 (1)2.3开发环境 (1)3系统概要设计 (2)3.1系统的功能模块划分 (2)3.2系统流程图 (3)4系统详细设计 (3)5测试 (4)5.1测试方案 (4)5.2测试结果 (4)6小结 (5)参考文献 (6)附录 (7)附录源程序清单 (7)实现加减乘除四则运算的计算器1.1设计目的本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上, 旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法, 提高分析问题、解决问题的综合应用能力。

1.2设计内容能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:c:\tasm>js 3+252系统需求分析2.1系统目标本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。

比如,十进制数的加减乘除四则运算。

我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。

汇编语言实现用16位乘法指令完成32位无符号数乘法

汇编语言实现用16位乘法指令完成32位无符号数乘法

汇编语⾔实现⽤16位乘法指令完成32位⽆符号数乘法《微型计算机原理与接⼝技术》实验报告⼀、程序设计题⽬⼀三⼗⼆位⽆符号乘法1 设计分析:(1)程序设计任务:⽤⼗六位乘法指令完成三⼗⼆位⽆符号数乘法(结果64位)。

使⽤MUL指令,完成双字⽆符号数乘法程序,要求乘数和被乘数从键盘输⼊,结果显⽰于屏幕上。

(2)程序设计要求:1)从键盘输⼊两个乘数(⼗六进制)2)结果显⽰于屏幕上(⼗六进制)(3)程序设计过程:1) 定义数据段⽤于开辟缓冲区存储输⼊数据、输出数据和乘积。

2)从键盘分别输⼊两个⼋位数字符(三⼗⼆字节)存⼊缓冲区(分4次输⼊,每次输⼊4个字符,前两次为被乘数的⾼位与低位,后两次为乘数的⾼位与低位)3)对缓冲区输⼊的字符进⾏处理,让Ascal码转换为数值本⾝的数值。

4)把三⼗⼆位分割成两位⼗六位,分别对其进⾏⼗六位的乘法。

5)将四个⼗六位乘法的乘积按照各⾃的位相加的最终乘积6)对所得结果进⾏处理,让Ascal码转换为数值本⾝的数值7)将结果向屏幕输出。

2、算法(⼀个框代表16位2进制数)3、X2 X1y1P+6 p+4 p+2 p4、程序流程图:5、测试数据与运⾏结果:输⼊被乘数的⾼位的4个字符X2:输⼊被乘数的低位的4个字符X1:输⼊乘数的⾼位的4个字符y2:输⼊乘数的低位的4个字符y1:运⾏结果:6、程序源代码及注解:ddata segmenty1 dw 16 dup(?)y2 dw 16 dup(?)p dw 30 dup(?)keybuf db 10 dup(?)ddata ends ;定义数据段ccode segmentassume cs:ccode,ds:ddatastart:mov ax,ddatamov ds,axmov dx,offset keybufmov bx,dxmov [bx],byte ptr 9mov ah,0ahint 21hmov ah,[bx+2]mov al,[bx+3]shl al,4shr ax,4mov dh,almov ah,[bx+4]mov al,[bx+5]shl al,4shr ax,4mov dl,almov x2,dx ;输⼊被乘数的⾼位的4个字符x2 mov dx,offset keybufmov bx,dxmov [bx],byte ptr 9mov ah,0ahint 21hmov ah,[bx+2]mov al,[bx+3]shl al,4mov ah,[bx+4]mov al,[bx+5]shl al,4shr ax,4mov dl,almov x1,dx ;输⼊被乘数的低位的4个字符x1 mov dx,offset keybufmov bx,dxmov [bx],byte ptr 9mov ah,0ahint 21hmov ah,[bx+2]mov al,[bx+3]shl al,4shr ax,4mov dh,almov ah,[bx+4]mov al,[bx+5]shl al,4shr ax,4mov dl,almov y2,dx ;输⼊乘数的⾼位的4个字符y2 mov dx,offset keybufmov bx,dxmov [bx],byte ptr 9mov ah,0ahint 21hmov ah,[bx+2]mov al,[bx+3]shl al,4shr ax,4mov dh,almov ah,[bx+4]mov dl,almov y1,dx ;输⼊乘数的低位的4个字符y1mov ax,x1mov dx,y1mul dxmov [p],axmov [p+2],dx ;被乘数低位4字符x1和乘数低位4字符y1相乘结果低位存⼊p,⾼位存⼊p+2mov ax,x2mov dx,y1mul dxadd [p+2],axadc [p+4],dx ;被乘数⾼位4字符x2和乘数低位4字符y1相乘结果低位存⼊p+2,⾼位存⼊p+4mov ax,x1mov dx,y2mul dxadd [p+2],axadc [p+4],dxadc [p+6],0 ;被乘数低位4个字符x1和乘数⾼位4个字符y2相乘结果低位存⼊p+2,⾼位存⼊p+4mov ax,x2mov dx,y2mul dxadd [p+4],axadc [p+6],dx ;被乘数⾼位4个字符x2和乘数⾼位4个字符y2相乘结果低位存⼊p+4,⾼位存⼊p+6mov al,byte ptr p+7 ;输出call dispalmov al,byte ptr p+6call dispalmov al,byte ptr p+5mov al,byte ptr p+3call dispalmov al,byte ptr p+2call dispalmov al,byte ptr p+1call dispalmov al,byte ptr pcall dispalmov ah,4chint 21hdispal proc ;⼦程序屏幕输出过程push cxpush dxpush axmov cl,4shr al,clor al,30hcmp al,3ahjb br1add al,7BR1: mov dl,almov ah,2int 21hpop axand al,0fhor al,30hcmp al,3ahjb br2add al,7br2: mov dl,almov ah,2int 21hretdispal endpccode endsend start题⽬⼆递归调⽤⼦程序设计1、设计分析:(1)程序设计任务:有n个⼈坐在⼀起,第n个⼈⽐第n-1个⼈⼤h岁。

汇编语言设计算术运算指令

汇编语言设计算术运算指令

汇编语言设计算术运算指令汇编语言是一种低级语言,它与计算机硬件直接相关,用于编写底层程序。

在汇编语言中,设计算术运算指令是非常重要的,因为这些指令能够执行基本的数学运算,并且是编写其他复杂指令的基础。

本文将介绍汇编语言中的算术运算指令的设计方法和实现原理。

一、加法指令加法是最基本的数学运算之一,也是计算机中最常用的运算之一。

在汇编语言中,加法指令用于将两个操作数相加,并将结果存储到指定的目的地。

下面是一个示例程序,演示了如何使用加法指令:```MOV AX, 5 ; 将操作数5移动到寄存器AXADD AX, 3 ; 将寄存器AX中的值与操作数3相加```在这个示例中,我们首先将操作数5移动到寄存器AX中,然后使用ADD指令将寄存器AX中的值与操作数3相加。

最后的结果将存储在寄存器AX中。

二、减法指令减法是另一种常见的数学运算,它用于计算两个数之间的差值。

在汇编语言中,减法指令类似于加法指令,可以通过指定操作数和目的地来实现减法运算。

下面是一个示例程序,演示了如何使用减法指令:```MOV AX, 7 ; 将操作数7移动到寄存器AXSUB AX, 2 ; 将寄存器AX中的值减去操作数2```在这个示例中,我们首先将操作数7移动到寄存器AX中,然后使用SUB指令将寄存器AX中的值减去操作数2。

最后的结果将存储在寄存器AX中。

三、乘法指令乘法是将两个数相乘得到积的运算。

在汇编语言中,乘法指令用于实现乘法运算,并将结果存储到指定的目的地。

下面是一个示例程序,演示了如何使用乘法指令:```MOV AX, 4 ; 将操作数4移动到寄存器AXMOV BX, 2 ; 将操作数2移动到寄存器BXMUL BX ; 将寄存器AX中的值与寄存器BX中的值相乘```在这个示例中,我们首先将操作数4移动到寄存器AX中,然后将操作数2移动到寄存器BX中。

接着使用MUL指令将寄存器AX中的值与寄存器BX中的值相乘。

最后的结果将存储在寄存器AX中。

汇编乘法指令

汇编乘法指令

汇编乘法指令汇编乘法指令是汇编语言中常用的一种指令,用于进行乘法运算。

在计算机科学领域中,乘法运算是一种非常常见的操作,因此学习和掌握汇编乘法指令是非常重要的。

汇编乘法指令的基本原理在汇编语言中,乘法运算通常使用MUL指令实现。

MUL指令用于将两个无符号数相乘,并将结果存储在寄存器中。

MUL指令的语法如下:MUL dest其中,dest是需要乘以寄存器AX的值的操作数。

MUL指令执行后,寄存器AX中存储的值将与操作数dest相乘,结果将存储在两个寄存器中:乘积的低32位存储在AX寄存器中,乘积的高32位存储在DX寄存器中。

例如,如果要将寄存器AX中的值乘以一个立即数10,可以使用以下指令:MOV BX, 10MUL BX这将导致AX中的值乘以10,结果将存储在AX和DX寄存器中。

使用汇编乘法指令的示例下面是一个使用MUL指令进行乘法运算的示例程序。

该程序将两个16位无符号整数相乘,并将结果存储在32位寄存器中。

.386.model flat, stdcalloption casemap:none;定义数据段.datanum1 WORD 1234hnum2 WORD 5678h;定义代码段.codemain PROC;将num1和num2加载到寄存器中 MOV AX, num1MOV BX, num2;使用MUL指令将AX和BX相乘MUL BX;将结果存储在EDX:EAX中MOV DWORD PTR [result], EAX MOV DWORD PTR [result+4], EDX ;退出程序RETmain ENDP;定义结果变量result DWORD 0END在这个例子中,程序首先将num1和num2加载到AX和BX寄存器中。

然后,程序使用MUL指令将AX和BX相乘。

最后,程序将结果存储在32位寄存器EDX:EAX中,并将其存储在result变量中。

总结汇编乘法指令是一种非常重要的指令,用于在汇编语言中进行乘法运算。

汇编语言课程设计四则运算计算器

汇编语言课程设计四则运算计算器

微机原理实验报告汇编语言课程设计报告( 2012 -- 2013 年度第1 学期)实验名称:实现加减乘除四则运算的计算器专业生物医学工程学生姓名周炳威班级B100904学号B10090406指导教师乐洋实现加减乘除四则运算的计算器1 实验目的深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。

通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用2 实验内容课题名称:实现加减乘除四则运算的计算器主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。

计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。

3 实现方法本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。

由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。

此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。

第一步,用INT 21H的1号功能调用来进行输入。

利用1号功能调用来输入,即把单个字符一个个的输入并存储到一个数据区里。

我们要做的是两个数的运算,先认定输入的格式为1234+5678=或者1111*2222=,当然如果输入不是这样的格式计算出来的结果就不一定是我们想要的结果了。

在存储的时候也是有选择的存储,当输入的并非格式里所要求的字符时则报错。

第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算还是除法运算,即判断输入的运算符是‘+’号、‘-’号、‘*’号、‘/’号中的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行计算。

汇编语言课程设计报告——实现加减乘除四则运算的计算器

汇编语言课程设计报告——实现加减乘除四则运算的计算器

v1.0 可编辑可修改汇编语言课程设计报告( 2011 -- 2012 年度第 2 学期)实现加减乘除四则运算的计算器专业计算机科学与技术学生姓名班级学号指导教师完成日期目录目录 (1)1概述 0设计目的 0设计内容 02系统需求分析 0系统目标 0主体功能 (1)开发环境 (1)3 系统概要设计 (1)系统的功能模块划分 (1)系统流程图 (2)4系统详细设计 (3)5测试 (4)测试方案 (4)测试结果 (4)6小结 (4)参考文献 (6)附录 (7)附录源程序清单 (7)实现加减乘除四则运算的计算器1 概述设计目的本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。

设计内容能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:c:\tasm>js 3+252 系统需求分析系统目标本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。

比如,十进制数的加减乘除四则运算。

我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。

此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。

主体功能系统分析主要包括设计的功能分析和系统的流程,功能分析放在首位,每一个软件都要能满足一定的功能才有使用价值。

根据功能需求来创建应用程序。

本设计的功能如下:1、输入2个数,先判断是加减运算还是乘除运算,再进行计算2、判断符号是否为运算符3、回车为换行符4、用十进制或十六进制输出运算结果开发环境集成环境3 系统概要设计系统的功能模块划分本题目实现的模块图如图3-1所示图3-1 概要模块(1)界面设置主要实现确定界面样式的功能,以菜单形式显示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档