微机原理设计实验之两个数相乘教学教材

合集下载

两位数乘法的数学原理与推导过程

两位数乘法的数学原理与推导过程

两位数乘法的数学原理与推导过程在学习数学的过程中,乘法是一个非常重要的概念。

而对于初学者来说,两位数乘法可能是一个相对较难理解的内容。

本文将介绍两位数乘法的数学原理与推导过程,帮助读者更好地理解和掌握这一概念。

一、两位数乘法的基本原理两位数乘法是指两个十以内的数相乘的运算。

我们可以用以下例子来理解两位数乘法的原理:例如,我们有个乘法算式:23 × 56。

按照传统的竖式计算方法,我们可以将乘法拆解为十位数与个位数的相乘,再进行求和的过程。

具体步骤如下:2 3× 5 6----------1 3 8 (23 × 6)+ 1 1 5 0 (230 × 50)----------+ 12 9 6 8 (23 × 56)通过这个例子,我们可以看出,两位数乘法的原理就是将两个数按照位数进行拆解,然后重复执行相乘和求和的步骤,最终得到结果。

二、两位数乘法的推导过程在了解两位数乘法的基本原理之后,我们可以进一步推导出两位数乘法的推导公式。

假设我们要计算两个两位数相乘,其中一个数为10a+b,另一个数为10c+d。

按照乘法的原理,我们可以将乘法算式拆解为以下四部分的相乘和求和:第一步:计算个位数的乘法b × d = bd第二步:计算十位数的乘法a × d = ad第三步:计算个位数与十位数的乘法b ×c = bc第四步:计算十位数的乘法a × c = ac最后,我们将这四部分的结果进行求和,即可得到两个两位数的乘法结果。

具体步骤如下所示:10a + b× 10c + d----------bd (个位数相乘结果)+ ad (十位数与个位数相乘结果)+ bc (个位数与十位数相乘结果)+ ac (十位数相乘结果)----------= 100ac + 10(ad + bc) + bd通过以上推导过程,我们可以得到两位数乘法的推导公式为:100ac + 10(ad + bc) + bd。

客宪玲两位数乘两位数笔算乘法进位微课脚本

客宪玲两位数乘两位数笔算乘法进位微课脚本

微课设计脚本两位数乘两位数的笔算乘法(进位)提交日期制作教师知识点描述在弄清两位数乘两位数算理的基础上,让学生自主建构两位数乘两位数(进位)的计算过程。

教学目标⑴结合讲成语故事这一富有趣味性的情境,体会两位数乘两位数(进位)的计算是伴随着解决问题而产生的;⑵运用已有经验对问题情境进行探索,得出计算两位数乘两位数(进位)的方法,并通过比较,体验计算方法的多样化,完善自己的方法;⑶经历两位数乘两位数(进位)的计算过程,掌握笔算乘法的方法;⑷在故事情节中渗透德育,让学生懂得做任何事情都要持之以恒、专心致志。

设计思路本节课我由一个源于围棋的成语故事引入,巧妙地将要解决的数学问题融于其中,引发学生愉快、主动地去探究它。

本节课结束时,我给每个学生发一张评价卡,让学生简单反思自己本节课中所学的知识和情感体验,树立学好数学的信心。

总结出笔算方法。

最后检测练习并拓展提高。

教学过程及微课视频分镜头脚本环节教学设计解说词画面媒体设计时长情境创设良好的开端是成功的一半,以学生喜闻乐见的故事导入新课,调动了学生学习的积极性,使学生很快进入学习状态大家知道成语“专心致志”是什么意思吗?关于“专心致志”这则成语的来历还有一个小故事呢!大约战国初期,有位名叫弈秋的人特别喜欢下围棋。

由于棋术高明,当时有很多家长把自己的孩子送去跟他学棋。

其中有两个孩子特别聪明,一个六岁,已经会计算棋盘的总交叉点数,听老师讲棋时注意力非常集中,秋老师给他取名叫弈实;另一个孩子八岁,志向远大,决心要成为象秋老师一样的“大国手”,秋老师给他取名叫弈虚。

开始讲课时,实和虚都能够认真地听讲,掌握ppt图片配音10秒了围棋的基本知识,学会了下棋的基本着法。

一段时间后,弈虚因为水平比弈实高就觉得自己很了不起,小尾巴翘了起来,听讲的时候不用心,心里想着会飞来鸿鹄,自己可以拿弓箭把它射下来。

不久,弈实的水平大大地超过了弈虚。

同学们,听完这个故事,你有什么想对大家说的吗?生:下围棋时要专心,要不然就学不到真本领。

《计算机组成原理》课程设计_两个数的乘法运算

《计算机组成原理》课程设计_两个数的乘法运算

《计算机组成原理》课程设计报告课程设计题目:两个数的乘法运算小组成员:….完成日期:第十一周模型机设计实验一、实验目的综合运用所学计算机原理知识,设计并实现较为完整的模型计算机。

其功能为:输入两个数,进行两个正数(二进制4位)的乘法运算,输出结果。

二、实验内容编写程序,运行程序,观察并记录运行结果。

三、实验仪器1、ZY15CompSys12BB计算机组成原理及系统结构教学实验箱一台2、排线若干3、PC机一台四、预备知识1、数据格式8位,其格式如下:其中第7位为符号位,数值表示范围是:-1≤X<127。

2、指令格式模型机设计四大类指令共十六条,其中包括算术逻辑指令、I/O指令、访问存储器、转移指令和停机指令。

(1)算术逻辑指令规定:算术逻辑指令的名称、功能和具体格式见表2—3。

(2)访存指令及转移指令模型机设计2条访存指令,即存数(STA)、取数(LAD),2条转移指令,即无条件转移(负均可)本模型机规定变址寄存器RI指定为寄存器R2。

(3)I/O指令其中,在IN 指令中,addr=01,选中“输入”中的开关组作为输入设备,在OUT指令中,addr=10时,表示选中“输出单元”中的数码块作为输出设备。

(4)停机指令HALT指令,机器码为60H,用于实现停机操作。

3、指令系统复杂模型机共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入输出指令2条,其它指令1条。

表2-3列出了各条指令的格式、汇编符号、指令功能。

我们依然采用复杂模型机指令系统中的部分指令。

五、实验的机器指令程序如下:地址内容助记符说明00 14 IN R0 ; 作计数器用,00000001→R001 15 IN R1 ; 输入X的值,0000xxxx→R102 05 STA R1 ; X→22H03 2204 15 IN R2 ; 输入Y→R2,0000xxxx→R205 06 STA R2 ; R2→23H06 2307 42 CLR R2 ; R2清零08 06 STA R2 ; 存入结果R2→24H09 240A 02 LAD R2 ; 提取[23H]→R20B 230C 6A RRC R2,R2 ; R2带进位右循环一位→R2 0D 06 STA R2 ; 循环结果→23H0E 230F 02 LAD R2 ; 提取结果S,[24H]→R210 2411 0C BZC [15H] ; 有进位跳转到15H12 1513 08 JMP [18H] ; 无条件跳转到[18H]14 1815 01 LAD R1 ; 提取X→R116 2217 56 ADC R1,R2 ; R1+R2→R218 6A RRC R2,R2 ; R2带进位右循环一位→R219 06 STA R2 ; 循环结果→24H1A 241B70 RLC R0,R0 ; R0带进位左循环一位→R0 1C 0C BZC [20H] ; 有进位跳转到20H1D 201E 08 JMP [0AH] ; 无条件跳转到[0AH]1F 0A20 2A OUT R2 ; 输出R2中的结果21 60 HATL ; 停机22 XX23 XX24 XX六、程序机器指令和微程序以上程序的机器指令如下:$P0014 $P0115 $P0205 $P0322$P0416 $P0506 $P0623 $P0772$P0806 $P0924 $P0A02 $P0B23$P0C6A $P0D06 $P0E23 $P0F02$P1024 $P110C $P1215 $P1308$P1418 $P1501 $P1622 $P1756$P186A $P1906 $P1A24 $P1B70$P1C0C $P1D20 $P1E08 $P1F0A$P202A $P2160微程序如下$M00018108 $M0101ED82 $M0200C050$M0300A004 $M0400E098 $M0501B406$M06959B41 $M07298838 $M0801ED8A$M0901ED8C $M0A00A01E $M0B018001$M0C00201F $M0D019801 $M0E19880F$M0F019801 $M1001ED83 $M11001001$M12030401 $M13018016 $M143D9A01$M1501A205 $M16318207 $M1731820E$M18009001 $M19028401 $M1A05DB81$M1B0180DC $M1C018001 $M1D05DB8D$M1E070A08 $M1F068A09七、复杂模型机的数据通路框图WE图2-7复杂模型机数据通路框图八、复杂模型机实验接线图接到指令单元接到开关单元九、复杂模型机实验流程图十、课程设计总结1、成员总结体会…2、遇到的问题和解决的方法等1)寄存器不够用。

四年级数学下册《两个数相乘的乘法中的简便计算》教学设计PPT课件教案板书

四年级数学下册《两个数相乘的乘法中的简便计算》教学设计PPT课件教案板书

四年级数学下册《两个数相乘的乘法中的简便计算》教学设计PPT课件教案板书四年级数学下册《两个数相乘的乘法中的简便计算》教学设计PPT课件教案板书第十一课时:教学内容:P44例4(两个数相乘的乘法中的简便计算)教学目标:1.使学生理解和掌握把一个数乘两位数,改成连续乘两个一位数的简便算法。

2.培养学生分析、判断、推理的能力,增强使用简便算法的择优意识。

教学重点:简便算法的算理。

教学难点:把一个两位数改成两个合适的一位数相乘的方法。

教学过程:一、复习准备口算12×30 18×2024×40 15×4015=()×()24=()×()30=()×()36=()×()二、新授出示例4主题图什么是“一打”?引导学生观察主题图。

“一打”表示12个。

观察主题图,独立解决题目中的问题。

找三个代表性的解题方法进行板演。

板演:(1)25×12=300(元)(2)25×12=25×(3×4)=(25×4)×3=100×3=300(元)(3)12×25=12×(100÷4)=12×100÷4=1200÷4=300(元)第1种直接计算。

第2种把其中的一个两位数的因数改成了两个一位数相乘的形式。

引导学生观察三个算式及解决方法。

你喜欢哪种方法?在以后的解题过程中,你能应用自己喜欢的方法解决问题吗?第三种把其中的一个因数改成了两个数相除的形式,然后变成乘除混合运算,可以任意交换位置进行简便计算。

根据主题图,你还能提出什么问题?教师选择性地板书。

小组合作分工完成黑板上的题目。

小组内交流。

全班交流。

教师要注意学生在简算过程中,是否正确地采用了简便计算的方法。

三、小结学生谈收获,小结重点及应该注意的问题。

教师完善板书。

四、巩固练习P47/4、5板书设计:乘法中的简便计算12×25=300(元) 12×25 12×25 =(3×4)×25 =12×(100÷4)=3×(4×25) =12×100÷4=3×100 =1200÷4=300(元) =300(元)。

微机原理设计实验之两个数相乘

微机原理设计实验之两个数相乘

课程设计题目:两个数相乘一、实验目的1、领会汇编语言的编程思想;2、掌握汇编语言的指令,加深乘法指令与循环指令的用法;3、学会DOS功能的调用。

二、实验内容实现两个十进制数的乘法,被乘数与乘数均以ASCII码形式存放在内存中,乘积在屏幕上显示出来。

三、实验原理本实验设计A、B两个数相乘。

巧妙地运用了数学中的乘法原理,将B的低位与A的最低位相乘得到的数的低位存到AL中,这个数的进位存到AH中,再用B的低位与A的次低位相乘,得到一个数,这个数的低位与上一次的进位相加。

循环此过程直到到B与A的最高位相乘结束,并与上一次结果的进位相加,得到最后的结果。

四、程序设计流程图(此处画上就是实验纸上的流程图)五、实验程序DA TA SEGMENT ;定义数据段DA TA1 DB 32H,39H,30H,35H,34H ;用ASCII码表示被乘数45092DA TA2 DB 34H ;用ASCII码表示乘数 4MES1 DB '*','$'MES2 DB '=','$'BUF DB 'Result$'RESULT DB 6 DUP(00H) ;定义存放结果的数据缓冲区,6个字节长,初值为0DA TA ENDS ;数据段结束STACK SEGMENT ;定义堆栈段STA DB 20 DUP(?) ;为变量STA分配20个字节的空间TOP EQU LENGTH STA;返回利用DUP定义的数组元素的个数到TOP,TOP=20STACK ENDS ;堆栈段结束CODE SEGMENT ;定义代码段ASSUME CS: CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AX ;DS→AXMOV AX,STACKMOV SS,AX ;SS→STACKMOV SP,TOP ;栈顶指针指向TOPMOV DX,OFFESET BUFMOV AH,9 ;DOS功能号09H送AHINT 21H ;显示字符串‘please input ’LEA SI,DA TA1 ;被乘数首地址送SIMOV BX,05HL1: MOV AH,02H ;DOS功能号02H送AHMOV DL,[SI+BX-1] ;被乘数送DLINT 21H ; DOS功能号调用(显示器输出)DEC BXJNZ L1MOV AH,09H ; DOS功能号09H送AHLEA DX,MES1 ;MES1的偏移地址送DXINT 21H ; DOS功能号调用(显示字符串)LEA SI,DA TA2 ;乘数地址送SIMOV AH,02HMOV DL,[SI] ;乘数送DLINT 21H ;显示乘数MOV AH,09HLEA DX,MES2 ; MES2的偏移地址送DXINT 21HMOV SI,OFFSET DATA2MOV BL,[SI] ;DATA2中的乘数送BLAND BL,00001111B ;屏蔽乘数高4位,ASCII码转换为十六进制MOV SI,OFFSET DATA1 ;被乘数偏移地址送SIMOV DI,OFFSET RESULT ;运算结果偏移地址送DIMOV CX,05 ;设置循环次数LOOP1: MOV AL,[SI] ;被乘数送ALAND AL,00001111B ;屏蔽被乘数高4位,ASCII码转换为十六进制INC SIMUL BL ;AL * BL送AXAAM ;乘法十进制调整ADD AL,[DI] ;结果低位与前次计算的进位相加AAA ;BCD码加法十进制调整指令MOV [DI],AL ;计算结果低位送DIINC DIMOV [DI],AH ;计算结果高位进位送DI+1LOOP LOOP1 ;循环MOV CX,06MOV SI, DI ;计算结果送SIDISPL:MOV AH,02H ;调用DOS功能号02H送AHMOV DL,[SI]ADD DL,30H ;结果转换为ASCII码INT 21H ;显示一位数据DEC SI ;地址减一,继续后面的数据显示LOOP DISPL ;显示运算结果MOV AX,4C00H ;返回DOSINT 21H ;结束CODE ENDSEND START六、DOS功能调用在DOS软中断指令中最常用的就是系统功能调用(INT 21H),主要完成文件管理,输入/输出设备控制,系统参数操作等等。

《乘法运算定律》教案

《乘法运算定律》教案
举例:(2×3)×4=2×(3×4),通过实例让学生理解乘法结合律的应用。
(3)乘法分配律:a×(b+c)=a×b+a×c。重点在于让学生理解一个数乘以两个数的和,等于这个数分别乘以这两个加数,然后把乘得的积相加。
举例:5×(2+3)=5×2+5×3,通过实例让学生掌握乘法分配律的应用。
2.教学难点
3.成果展示:每个小组将向全班展示他们的讨论成果和实验操作的结果。
(四)学生小组讨论(用时10分钟)
1.讨论主题:学生将围绕“乘法运算定律在实际生活中的应用”这一主题展开讨论。他们将被鼓励提出自己的观点和想法,并与其他小组成员进行交流。
2.引导与启发:在讨论过程中,我将作为一个引导者,帮助学生发现问题、分析问题并解决问题。我会提出一些开放性的问题来启发他们的思考。
四、教学流程
(一)导入新课(用时5分钟)
同学们,今天我们将要学习的是《乘法运算定律》这一章节。在开始之前,我想先问大家一个问题:“你们在日常生活中是否遇到过需要交换物品位置或者分配物品的情况?”(如交换座位、分配零食等)这个问题与我们将要学习的内容密切相关。通过这个问题,我希望能够引起大家的兴趣和好奇心,让我们一同探索乘法运算定律的奥秘。
(3)乘法运算定律的综合运用:本节课的难点还在于让学生在实际计算中,能够灵活运用乘法交换律、结合律和分配律,简化计算过程。教师应设计综合性的练习题,帮助学生融会贯通。
举例:
-计算题:128×25,引导学生运用乘法交换律和结合律,将计算过程简化为32×4×25,再进一步计算得出结果。
-应用题:小明有3个苹果和2个香蕉,每个苹果和香蕉的价格分别为2元和1.5元,求小明买水果一共花了多少钱?引导学生运用乘法分配律,将问题转化为3×2+2×1.5,简化计算过程。

两位数与两位数相乘教学设计教案(精选五篇)[修改版]

两位数与两位数相乘教学设计教案(精选五篇)[修改版]

第一篇:两位数与两位数相乘教学设计教案教学准备1. 教学目标1.理解用因数十位上的数去乘,得数的末位和因数的十位对齐的道理。

2.掌握因数是两位数乘法的计算方法,并能正确地进行乘法笔算。

3.通过让学生亲历两位数乘两位分析过程,培养他们的算法思维。

4.在计算过程中,促使学生养成良好的计算习惯。

2. 教学重点/难点能正确计算两位数的乘法,根据数的特点灵活进行分拆。

3. 教学用具教学课件4. 标签教学过程一、新课导入师:每盒蛋糕12元,每人买一盒,一共用去多少元?列出算式。

生:12×4 师:我们碰到这样的乘法算式,可以用哪些方法来解决呢?生:分拆。

竖式。

横式。

师:今天我们就来研究乘法算式的计算方法。

出示课题:两位数与两位数相乘二、新课探索探究一每盒蛋糕14元,小丁丁小组共12人,每人买一盒,一共用多少元呢?师:你们可以用分折的方法很快得出结果。

(四人小组讨论)生①:14×12生②:14×12=14×10+14×2=5×12+9×12=140+28=60+108=168=168 生③:14×12生④:14×12=20×12-6×12=14×3×4=240-72=52×4=168=168 小结:利用分拆的方法可以使计算简便。

①两个因数相乘,可以把其中一个数拆成两个一位数相加或者相乘的形式。

②也可以将一个因数拆成整十数与一位数相加或相减的形式。

课内练习练习一师:用分拆方法计算47×7317×28=47×□+47×□=====探究二如果全班37人,买43角一块方巾,共多少角?师:列式计算(用你喜欢的方法计算)生①:43×37生②:43×37=40×37+3×37=50×37-7×37=1290+301=1850-259=1591=1591 小结:如果遇上这类数据通常采用把一个数拆成整数与另一个数相加或相减的形式。

微机原理实验程序

微机原理实验程序

第四章 软件实验部分实验一 两个多位十进制数相减实验一、实验要求:将两个多位十进制数相减,要求被减数,减数均以ASCII 码形式按顺序存放在以DA T AI和DA T A2为首的5个内存单元中(低位在前),结果送回DA T AI 处。

处。

二、实验目的:1.学习数据传送和算术运算指令的用法。

.学习数据传送和算术运算指令的用法。

2.熟悉在PC 机上建立、汇编、链接、调试和运行汇编语言程序的过程。

机上建立、汇编、链接、调试和运行汇编语言程序的过程。

三、实验步骤:连好实验箱后接通电源,连好实验箱后接通电源,打开上位机软件打开上位机软件88TE 进入软件调试界面:进入软件调试界面:点击点击点击“文件“文件\打开”打开”文文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm 。

具体操作如图所示:文件。

点击编译连接生成可执行的exe文件。

通过单步运行调试程序,打开寄存器查看其变量变化情况。

通过单步运行调试程序,打开寄存器查看其变量变化情况。

四、实验程序框图:五、实验程序:文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm DA DATA SEGMENT TA SEGMENT DA DATA1 TA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)第一个数据(作为被减数) DA DATA2 TA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)第二个数据(作为减数) MES1 DB '-','$' MES2 DB '=','$' DA DATA ENDS TA ENDS STACK SEGMENT ;堆栈段堆栈段 STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT TA,SS:STACK,ES:DA ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DAT T A START: MOV AX,DA TA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP ,AX MOV SI,OFFSET DATA1 MOV BX,05 CALL DISPL ;显示被减数显示被减数 MOV AH,09H LEA DX,MES1 INT 21H MOV SI,OFFSET DA T A2 MOV BX,05 ;显示减数显示减数 CALL DISPL MOV AH,09H LEA DX,MES2 INT 21H MOV SI,OFFSET DATA1 MOV DI,OFFSET DA T A2 CALL SUBA ;减法运算减法运算 MOV SI,OFFSET DA T A1 MOV BX,05 ;显示结果显示结果 CALL DISPL MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H 显示减数和被减数被减数和减数转换成十六进制数设 置 计 数 值 消除最低进位数 开 始制进位减 结果送被减数区调整偏移量 计数值-1=10 结果转换成ASCII 码字符串显示结果 结果INT 21H INT 21H MOV AX,4C00H INT 21H DISPL PROC NEAR ;显示子功能显示子功能DSI: MOV AH,02 MOV DL,[SI+BX-1] ;显示字符串中一字符显示字符串中一字符INT 21H DEC BX ;修改偏移量修改偏移量JNZ DSI RET DISPL ENDP SUBA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05 SU1: SUB BYTE PTR[SI+BX-1],30H SUB BYTE PTR[DI+BX-1],30H DEC BX ;将ASCII 码表示的数字串码表示的数字串 JNZ SU1 ;转化为十六进制的数字串转化为十六进制的数字串 MOV SI,DX MOV DI,BP MOV CX,05 ;包括进位,共5位CLC ;清进单位清进单位SU2: MOV AL,[SI] MOV BL,[DI] SBB AL,BL ;带进位相减带进位相减AAS ;非组合BCD码的减法调整码的减法调整 MOV [SI],AL ;结果送被减数区结果送被减数区 INC SI INC DI ;指向下一位指向下一位LOOP SU2 ;循环循环MOV SI,DX MOV DI,BP MOV BX,05 SU3: ADD BYTE PTR [SI+BX-1],30H ADD BYTE PTR [DI+BX-1],30H DEC BX ;十六进制的数字串转化ASCII码表示的数字串码表示的数字串 JNZ SU3 RET SUBA ENDP CODE ENDS END ST ART实验二 两个数相乘的实验一、实验要求:实现十进制数的乘法,实现十进制数的乘法,被乘数和乘数均以被乘数和乘数均以ASCII 码形式存放在内存中,码形式存放在内存中,算式结果在屏幕上显算式结果在屏幕上显示出来。

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

微机原理设计实验之两个数相乘
课程设计题目:两个数相乘
一、实验目的
1、领会汇编语言的编程思想;
2、掌握汇编语言的指令,加深乘法指令和循环指令的用法;
3、学会DOS功能的调用。

二、实验内容
实现两个十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,乘积在屏幕上显示出来。

三、实验原理
本实验设计A、B两个数相乘。

巧妙地运用了数学中的乘法原理,将B的低位和A的最低位相乘得到的数的低位存到AL中,这个数的进位存到AH中,再用B的低位和A的次低位相乘,得到一个数,这个数的低位和上一次的进位相加。

循环此过程直到到B与A的最高位相乘结束,并与上一次结果的进位相加,得到最后的结果。

四、程序设计流程图
(此处画上是实验纸上的流程图)
五、实验程序
DATA SEGMENT ;定义数据段
DATA1 DB 32H,39H,30H,35H,34H ;用ASCII码表示被乘数45092
DATA2 DB 34H ;用ASCII码表示乘数4
MES1 DB '*','$'
MES2 DB '=','$'
BUF DB 'Result$'
RESULT DB 6 DUP(00H) ;定义存放结果的数据缓冲区,6个字节长,初值为0
DATA ENDS ;数据段结束
STACK SEGMENT ;定义堆栈段
STA DB 20 DUP(?) ;为变量STA分配20个字节的空间TOP EQU LENGTH STA
;返回利用DUP定义的数组元素的个数到TOP,TOP=20
STACK ENDS ;堆栈段结束
CODE SEGMENT ;定义代码段
ASSUME CS: CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA
MOV DS,AX ;DS→AX
MOV AX,STACK
MOV SS,AX ;SS→STACK
MOV SP,TOP ;栈顶指针指向TOP
MOV DX,OFFESET BUF
MOV AH,9 ;DOS功能号09H送AH
INT 21H ;显示字符串‘please input ’
LEA SI,DATA1 ;被乘数首地址送SI
MOV BX,05H
L1: MOV AH,02H ;DOS功能号02H送AH
MOV DL,[SI+BX-1] ;被乘数送DL
INT 21H ; DOS功能号调用(显示器输出)
DEC BX
JNZ L1
MOV AH,09H ; DOS功能号09H送AH
LEA DX,MES1 ;MES1的偏移地址送DX
INT 21H ; DOS功能号调用(显示字符串)
LEA SI,DATA2 ;乘数地址送SI
MOV AH,02H
MOV DL,[SI] ;乘数送DL
INT 21H ;显示乘数
MOV AH,09H
LEA DX,MES2 ; MES2的偏移地址送DX
INT 21H
MOV SI,OFFSET DATA2
MOV BL,[SI] ;DATA2中的乘数送BL
AND BL,00001111B ;屏蔽乘数高4位,ASCII码转换为十六进制
MOV SI,OFFSET DATA1 ;被乘数偏移地址送SI
MOV DI,OFFSET RESULT ;运算结果偏移地址送DI
MOV CX,05 ;设置循环次数
LOOP1: MOV AL,[SI] ;被乘数送AL
AND AL,00001111B ;屏蔽被乘数高4位,ASCII码转换为十六进制 INC SI
MUL BL ;AL * BL送AX
AAM ;乘法十进制调整
ADD AL,[DI] ;结果低位与前次计算的进位相加
AAA ;BCD码加法十进制调整指令
MOV [DI],AL ;计算结果低位送DI
INC DI
MOV [DI],AH ;计算结果高位进位送DI+1
LOOP LOOP1 ;循环
MOV CX,06
MOV SI, DI ;计算结果送SI
DISPL:MOV AH,02H ;调用DOS功能号02H送AH
MOV DL,[SI]
ADD DL,30H ;结果转换为ASCII码
INT 21H ;显示一位数据
DEC SI ;地址减一,继续后面的数据显示
LOOP DISPL ;显示运算结果
MOV AX,4C00H ;返回DOS
INT 21H ;结束
CODE ENDS
END START
六、DOS功能调用
在DOS软中断指令中最常用的是系统功能调用(INT 21H),主要完成文件管理,输入/输出设备控制,系统参数操作等等。

它本身包含80多个子程序,每个字程序对应一个功能号,其编号为0~62H。

此次课程设计用到的几个常用DOS系统功能调用。

1)键盘显示并回显(01H号功能)。

此功能程序将扫描键盘并等待输入一个字符,直到按下一个键(输入一个字符),先检查是否有Ctrl+Break键,若是则退出,否则把字符的ASCⅡ码送入寄存器AL,并在屏幕上显示该字符。

2)在屏幕显示一个字符(02H号功能)。

该功能要求的入口参数为:将将要显示的字符的ASCⅡ码存入DL,功能号存入AH。

在执行INT 21H时,会把DL寄存器中的ASCⅡ码字符送到屏幕显示。

02H号功能可显示任意字符,如果DL。

09H号功能不能显示‘﹩’符号,所以02H号功能可作为09H号功能的补充。

3)字符串显示(09H号功能)。

09H号功能子程序将指定的内存缓冲区中的字符串送屏幕显示。

要现实的字符串必须事先存放在内存数据区中,且字符串以‘﹩’作为结束标志,除此之外,还需要把存放待显示字符串的内存首地址分
别存入DS和DX中。

也可以将非显示字符(如:回车,换行)的ASCⅡ码(如:0AH,0DH)插入字符串中。

4)读入字符串操作(0AH号功能)。

这个功能子程序入口参数是DS:DX=输入缓冲区首地址。

5)返回操作系统(4CH号功能)。

这个功能子程序无入口参数,结束当前正在执行的程序,并返回操作系统,屏幕上显示操作系统提示符。

七、部分指令介绍
1、AAA是对BCD码的加法十进制进行调整,用于对两个非组合的BCD 码相加的结果进行调整,产生一个非组合的BCD码。

2、AAM指令总是跟在乘法指令之后,对两个非组合BCD码相乘结果进行调整,最后得到一个正确的非组合BCD码结果。

3、EQU:标号赋值伪指令,代表数据、数据地址或程序地址。

4、DB:伪指令,是用来定义字节类型的伪变量
八、实验结果
九、实验总结及体会
通过此次实验,我查阅了相关资料,学习汇编语言,了解了汇编语言的编程思路,同时还学到一些DOS功能以及其调用方式。

从汇编语言的编程思路上来看,汇编的编程思路一般是基于最基础的原理,易理解,这样就会产生较清晰的编程思路,但是在编程上还是有些吃力。

一方面与自身编程经历少有关外,还有一方面就是没有很系统地掌握这门计算
机语言,对计算机内部运行机制的理解还不到位,感觉很简单,却不知道从何下手,知道如何实现部分功能,却不能系统地联系起来,可以说,只能写程序段,不熟悉怎么写程序。

此次实验最大的收获就是了解并学习了DOS功能。

这是我们上课没有涉及到的,感觉很新鲜,觉得这是汇编很关键的地方,可以大大减轻用户的编程负担,使用起来也很简单方便。

有了这些调用这些DOS功能号可使编写的程序简单,易读,代码紧凑,调试也方便。

而且,我们可以利用DOS的这些功能实现更便捷更广泛的功能。

例如,我们可以适当修改程序,增加一个键盘输入字符并显示的功能号,使得我们可以从键盘输入两个十进制数来实现这两个数的乘积,而不是每次要计算就要修改DARA1和DATA2中的数。

另外,此程序对溢出的结果无法显示,那么,我们可以修改程序,判断乘数被乘数的范围,如果溢出,屏幕显示的因溢出引起的错误,。

相关文档
最新文档