微机实验:两个多位十进制数相加
- 格式:doc
- 大小:28.00 KB
- 文档页数:3
用汇编编写的两个十进制数相加程序一、设计目的:对两个用ASCII码表示的十进制数直接相加,以得到它们的和.设被加数放在以SBCD1为首地址的单元中,加数放在以SBCD2为首地址的单元中。
二、实验设备:安装汇编软件的可操控计算机一台三、实验分析:需要注意的是如何用ASCII码表示十进制数,并且如何将一个数放入一个地址单元的首地址,而两个数的相加不是本设计的要点,着重在于解决以上两个问题。
在这里还有一个结果显示为两位数的问题,设计出的源程序在计算时其能显示的结果的最大值只能到9,无法显示十位数。
在随后改进的程序中加入了一个进位的子程序,首先对计算结果进行判断是否大于9,如果大于9则进入子程序。
从而使计算结果得以显示出一个十位数。
四、程序流程图:五、实验源程序六、实验程序:SSEG SEGMENT PARA STACK 'stack'dw 100h dup(0) ;初始化堆栈大小为100SSEG ENDSDSEG SEGMENTSBCD1 DB ?SBCD2 DB ?SBCD3 DB ?;数据段:在此处添加程序所需的数据DSEG ENDSESEG SEGMENT;附加段:在此处添加程序所需的数据ESEG ENDSCSEG SEGMENTassume cs:CSEG, ds:DSEG, es:ESEG, ss:SSEGMAIN PROC FAR ;主程序入口mov ax, dsegmov ds, axmov ax,esegmov es, axmov ah,1int 21hmov [SBCD1],almov bl,almov dl,'+'mov ah,2int 21hmov ah,1int 21hmov [SBCD2],aladd bl,alsub dl,dlmov dl,'='mov ah,2int 21hmov dl,blsub dl,48cmp dl,57mov bl,dljnz jinweimov dl,blmov ah,2int 21hjmp exitjinwei: mov dl,'1'mov ah,2int 21hsub bl,10mov dl,blmov ah,2int 21hjmp exitexit: mov ah,1int 21hmov ax, 4c00h ;程序结束,返回到操作系统系统int 21hMAIN ENDPCSEG ENDSEND MAIN。
数据传送及两个多位⼗进制数相加深圳⼤学实验报告课程名称:微机原理及应⽤实验实验项⽬名称:数据传送及两个多位⼗进制数相加学院:物理科学与技术学院专业:应⽤物理指导教师:李雄军报告⼈:学号:班级:实验时间:实验报告提交时间:⼀、实验⽬的(1)继续熟练掌握在PC机上建⽴、汇编、链接、调试和运⾏8088汇编语⾔程序的过程;(2)学习数据传送和算术运算指令的⽤法;(3)掌握⼦程序设计⽅法;(4)掌握宏汇编设计⽅法。
⼆、实验内容将两个多位⼗进制数(若为16位⼆进制表⽰的⽆符号数)相加。
要求被加数均以ASCII码形式各⾃顺序存放在以DATAl和DATA2为⾸的5个内存单元中(低位在前),结果送回DATAl处。
三、程序流程图开始显⽰加数和被加数加数和被加数以ASCⅡ码表⽰的数字串形式转化为由⼗六进制表⽰的数字串形式赋计数值给CX清除最低位进执⾏ADC带进位相加AAA调整结果送被加数区调整偏移量显⽰加数和被加数CX-1=0⼗六进制结果转化为ASCⅡ显⽰结果结束算法说明:以42136与12547相加为例,⾸先将两个数中的每⼀位都以ASCII码存⼊相应的内存单元,然后将每⼀位数都减去30H,并将被加数和加数相对应位相加(要考虑低位向⾼位的进位),存⼊相应的被加数存储单元中,最后将该单元中的每⼀位数转换成相应的ASCII码,调⽤DOS系统的显⽰字符指令,显⽰两数相加的结果。
四、源程序代码DATA SEGMENT ; 数据段DATA1 DB 31H,33H,31H,31H,33H ;定义DATA1为被加数DATA2 DB 33H,33H,33H,32H,33H ;定义DATA2为加数DATA ENDS ;STACK SEGMENT STACK ;堆栈段STA DB 64 DUP(0) ;SP_TOP DB 0 ;定义SP_TOP单元数值为0STACK ENDS ;堆栈段结束CODE SEGMENT ; 代码段ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK ; 指定段寄存器CFLF MACRO ;显⽰回车换⾏功能⽤宏定义CFLF实现,放在代码段最前⾯MOV DL,0DH ;回车(0DH为回车的ASCII 码)MOV AH,02H ; 送DOS 的中断调⽤功能号INT 21H ; DOS 的中断调⽤MOV DL,0AH ;⽤DOS功能调⽤实现换⾏,0AH为换⾏的ASCII 码MOV AH,02H ;显⽰字符到屏幕上INT 21H ;DOS中断调⽤CFLF ENDM ;结束宏定义START: MOV AX, DATA ;设置数据段MOV DS, AX ;数据段初始化MOV AX, STACK ;设置堆栈段MOV SS, AX ;堆栈段初始化MOV AL,SP_TOP ;设置栈顶指针MOV SI, OFFSET DATA1 ;显⽰被加数,并回车换⾏MOV BX,05 ;CALL DISPL ; 显⽰被加数,DISPL为显⽰⼦程序CFLF ; 回车、换⾏宏调⽤MOV SI, OFFSET DATA2 ;显⽰加数MOV BX,05 ;设置计数器赋值05CALL DISPL ;显⽰加数CFLF ;回车换⾏CALL ADDA ;调⽤加法运算⼦程序MOV SI,OFFSET DATA1 ;把DATA1的偏移量地址赋给SI MOV BX,05 ;CALL DISPL ; 显⽰结果CFLF ; 回车、换⾏MOV AX,4C00H ; 返回DOSINT 21H ;DOS中断调⽤DISPL PROC NEAR ;DISP为字符串显⽰⼦程序DSL: MOV AH,02 ;送显⽰功能号MOV DL,[SI+BX-1] ;显⽰字符串中⼀字符INT 21H ;DOS INT 21 功能调⽤DEC BX ;BX-1,修改偏移量JNZ DSL ;若BX不等于0,跳转到DSLRET ;返回DISPL ENDP ;⼦程序结束ADDA PROC NEAR ;加法⼦程序MOV SI, OFFSET DATA1 ;取被加数的偏移地址MOV DI, OFFSET DATA2 ;取加数偏移地址MOV AH,0 ;进位清零MOV CX,05 ;设置循环次数AD1:MOV AL,[SI] ;取被加数偏移量地址内容SUB AL,30H ;MOV BL,[DI] ;取加数偏移量地址内容SUB BL,30H ;ADD AL, BL ;ADD AL, AH ;加上进位MOV AH,0 ;进位清零AAA ;BCD⼗进制转换MOV [SI],AL ;存回DATA1的相应单元INC DI ;INC SI ;DEC CX ;JNZ AD1 ;CX未减到0继续跳转,重新执⾏次位相加MOV BX,05 ;MOV SI, OFFSET DATA1 ;AD2:ADD [SI+BX-1],30H ;相加之后转化为相应的ASCII码DEC BX ;改变循环次数JNE AD2 ;BX未减到0则跳转⾄AD2RET ;返回ADDA ENDP ;加法⼦程序结束CODE ENDS ;代码段与程序结束END START ;程序结束五、实验结果1.编译、连接⽣成可执⾏⽂件,分别在debug和Emu8086下调试该可执⾏⽂件在debug下运⾏:在emu8086下运⾏:2.给出程序运⾏时的各段地址(CS=?,DS=?SS=?ES=?)及两个⼦程序⼊⼝的IP. DISPL:IP=0054 ADDA:IP=0037CS=F400,DS=0710,SS=0711,ES=07003.试改变加数和被加数,如何从内存中观察结果的变化?4.总结⼦程序格式及其调⽤⽅法;结合本程序说明宏调⽤与⼦程序的区别。
微机原理加法练习题一、题目描述某计算机科学课程中,学生们正在学习微机原理中的加法运算。
为了加强学生们的练习,老师出了一些加法练习题。
现在请你根据以下题目描述,完成相应的加法练习题。
题目描述:给定两个十进制数,要求将其转换为二进制数,并进行二进制加法。
请根据以下步骤完成该题目。
1. 将题目给出的十进制数转换为二进制数;2. 将两个二进制数进行对齐,高位补零;3. 从低位开始,逐位进行二进制加法运算,并记录进位情况;4. 检查最高位的进位情况,若有进位,则在二进制结果前加上一个进位。
二、题目示例题目1:计算10 + 8的二进制加法。
解答过程:1. 将10转换为二进制数:1010;将8转换为二进制数:1000;2. 对齐两个二进制数:1010+ 10003. 逐位进行二进制加法运算:1 (进位)1010+ 1000-----------100104. 检查最高位的进位情况,无进位。
答案:10010题目2:计算7 + 5的二进制加法。
解答过程:1. 将7转换为二进制数:111;将5转换为二进制数:101;2. 对齐两个二进制数:111+ 10111 (进位)111+ 101----------11004. 检查最高位的进位情况,无进位。
答案:1100三、题目拓展根据以上的加法练习题,学生可以继续练习更复杂的加法运算。
可以尝试以下题目拓展。
题目拓展1:计算15 + 9的二进制加法。
解答过程:1. 将15转换为二进制数:1111;将9转换为二进制数:1001;2. 对齐两个二进制数:1111+ 10011 (进位)1111+ 1001-----------110004. 检查最高位的进位情况,有进位,结果前加上一个进位。
答案:111000题目拓展2:计算31 + 7的二进制加法。
解答过程:1. 将31转换为二进制数:11111;将7转换为二进制数:111;2. 对齐两个二进制数:11111+ 1113. 逐位进行二进制加法运算:1 (进位)11111+ 111-----------1000104. 检查最高位的进位情况,有进位,结果前加上一个进位。
两个十进制按位与的计算结果
"十进制按位与的计算结果,探索数字之间的奇妙交织"
在数字世界中,我们经常需要对数字进行各种运算,其中按位与运算是一种常见的操作。
当我们将两个十进制数字进行按位与运算时,我们会发现其中蕴藏着许多奇妙的数学现象和逻辑推理。
假设我们有两个十进制数字,27和18。
它们的二进制表示分别为11011和10010。
当我们对它们进行按位与运算时,我们会得到结果10,即2的十进制表示。
这个结果背后的数学原理值得我们深入探索。
首先,按位与运算是一种逻辑运算,它要求两个数字的对应位同时为1时,结果位才为1。
这意味着按位与运算能够帮助我们发现数字之间的共同特征和交集。
在我们的例子中,27和18的二进制表示中,只有第二位上同时为1,因此按位与的结果为2。
其次,按位与运算还有许多实际应用。
在计算机领域,按位与运算常常用于掩码操作和位操作,帮助我们对数据进行精确的处理和筛选。
通过深入理解按位与运算的原理和特性,我们能够更好地
应用它们于实际问题中,提高计算效率和数据处理精度。
最后,按位与运算的结果也反映了数字之间的奇妙交织。
在我们的例子中,27和18这两个数字看似毫无关联,但通过按位与运算,我们发现了它们之间的共同之处,这种数学上的交织和联系让我们对数字世界有了更深刻的理解。
因此,十进制按位与的计算结果不仅仅是一种数学运算,更是数字世界中的奇妙探索。
通过深入研究和理解按位与运算的原理和应用,我们能够更好地理解数字之间的关系,提高计算效率,拓展数学思维,从而更好地应对现实生活和工作中的挑战。
第一章ENIAC 的不足:运算速度慢、存储容量小、全部指令没有存放在存储器中、机器操作复杂、稳定性差 。
冯·诺依曼(Johe V on Neumman )提出了“存储程序”的计算机设计方案。
特点是: 1、采用二进制数形式表示数据和计算机指令。
2、指令和数据存储在计算机内部存储器中,能自动依次执行指令。
由控制器、运算器、存储器、输入设备、输出设备5大部分组成计算机硬件。
工作原理的核心是“存储程序”和“程序控制”。
一型计算机的分类字长:有4位、8位、16位、32位、64位微型计算机等 工艺:可分成MOS 工艺、双极型TTL 工艺的微处理器 结构类型:有单片机、单板机、位片机、微机系统等 用途:个人计算机、工作站/务器、网络计算机 体积大小:台式机、携机。
二.微型计算机的性能指标介绍位:这是计算机中所表示的最基本、最小的数据单元。
字长:是计算机在交换、加工和存放信息时的最基本的长度。
字节(Byte ):是计算机中通用的基本单元,由8个二进制位组成。
字:是计算机内部进行数据处理的基本单位。
主频:也称时钟频率,是指计算机中时钟脉冲发生器所产生的频率。
访存空间:是该微处理器构成的系统所能访问的存储单元数。
指令数:构成微型计算机的操作命令数。
基本指令执行时间:计算机执行程序所花的时间。
可靠性:指计算机在规定时间和条件下正常工作不发生故障的概率。
兼容性:指计算机硬件设备和软件程序可用于其他多种系统的性能。
性能价格比:是衡量计算机产品优劣的综合性指标。
微型计算机是以微处理器为核心,再配上存储器、接口电路等芯片构成的微型计算机系统由硬件系统和软件系统两大部分组成 :1.中央处理单元CPU (Control Processing Unit )是微型计算机的核心部件,是包含有运算器、控制器、寄存器组以及总线接口等部件的一块大规模集成电路芯片,俗称微处理器。
微处理器是微型计算机的核心,它的性能决定了整个微型机的各项关键指标。
第一章 微型计算机基础题1-1 计算机发展至今,经历了哪几代?答:电子管计算机、晶体管计算机、集成电路计算机、超大规模集成电路计算机、非冯诺伊曼计算机和神经计算机。
题1-2 微机系统由哪几部分组成?微处理器、微机、微机系统的关系是什么? 答:1、微机系统分硬件和软件,硬件包括CPU、存储器、输入输出设备和输入输出接口,软件包括系统软件和应用软件。
2、微处理器是指微机的核心芯片CPU;微处理器、存储器和输入输出设备组成微机;微机、外部设备和计算机软件组成微机系统。
题1-3 微机的分类方法包括哪几种?各用在什么应用领域中?答:按微处理器的位数,可分为1位、4位、8位、32位和64位机等。
按功能和机构可分为单片机和多片机。
按组装方式可分为单板机和多板机。
单片机在工业过程控制、智能化仪器仪表和家用电器中得到了广泛的应用。
单板机可用于过程控制、各种仪器仪表、机器的单机控制、数据处理等。
题1-4 微处理器有哪几部分组成?各部分的功能是什么?答:微处理器包括运算器、控制器和寄存器三个主要部分。
运算器的功能是完成数据的算术和逻辑运算;控制器的功能是根据指令的要求,对微型计算机各部分发出相应的控制信息,使它们协调工作,从而完成对整个系统的控制;寄存器用来存放经常使用的数据。
题1-5 微处理器的发展经历了哪几代?Pentium系列微处理器采用了哪些先进的技术?答:第一代4位或低档8位微处理器、第二代中高档8位微处理器、第三代16位微处理器、第四代32位微处理器、第五代64位微处理器、第六代64位高档微处理器。
Pentium系列微处理器采用了多项先进的技术,如:RISC技术、超级流水线技术、超标量结构技术、MMX技术、动态分支预测技术、超顺序执行技术、双独立总线DIB技术、一级高速缓冲存储器采用双cache结构、二级高速缓冲存储器达256KB或512KB、支持多微处理器等。
题1-6 何为微处理器的系统总线?有几种?功能是什么?答: 系统总线是传送信息的公共导线,微型计算机各部分之间是用系统总线连接的。
前言《微型计算机原理及应用》是一门实践性很强的专业技术基础课,因此,必须在课堂教学的基础上配以足够的实验或实践性教学环节,以便理论联系实际,使学生能深入理解课堂教学内容,加强学生动手能力,以加深对理论学习的理解和掌握,提高学生分析问题﹑解决问题的能力。
本实验指导书是《微型计算机原理及应用》一书的配套教材。
该实验指导书紧密结合教材内容,使用复旦大学科教仪器厂生产的FD-SJ8088A微机实验系统,合理安排了微机实验。
全书共分二部分。
第一部分汇编语言上机操作及程序调试方法及软件部分实验第二部分FD-SJ8088A微机实验系统介绍及硬件部分实验对于每一个实验都给出了实验目的﹑实验内容﹑预习要求﹑报告要求﹑实验提示﹑思考题。
实验提示部分我们仅给出部分文字提示和参考流程图,以作为学生自己编程时的参考。
我们主张学生在做实验前,必须要充分预习,充分准备,要依靠自己在实验前编出的程序,经过实验调试改正程序,得出正确的结果。
这样做实验,才能真正有收获,才能真正提高分析问题和解决问题的能力。
本实验指导书在编写的过程中,得到了本系的领导和老师的支持﹑指导和帮助,在此表示衷心的谢意。
由于编者水平有限,书中不妥或错误之处在所难免,欢迎大家在使用中提出宝贵意见。
编者2005年8月目录实验须知 (3)第一部分汇编语言上机操作及软件部分实验实验一汇编语言上机环境的熟悉和命令使用 (4)实验二利用D E B U G命令调试程序 (7)实验三利用中断指令进行输入输出程序设计 (9)实验四汇编语言综合编程实验 (11)第二部分硬件部分实验FD88调试软件 (12)实验五简单I/O接口控制实验 (21)实验六 8255 接口控制实验 (21)实验须知一、预习要求1.实验前认真阅读实验教程中有关内容,明确实验目的、内容和实验任务。
2.每次实验前做好充分的预习,对所需预备知识做到心中有数。
3.实验前应编好源程序,并对调试过程、实验结果进行预测。
实验一、两个多位十进制数相加的实验1、实验目的(1).学习数据传送和算术运算指令的用法。
(2).熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。
2、实验内容将两个多位十进制数相加。
要求被加数均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回DATAl处。
3、程序框图4、参考程序:DATAS SEGMENTDAT1 DB 5 DUP (0)DAT2 DB 5 DUP (0)DAT3 DB 6 DUP(0)JH DB'+','$'HX DB'_______','$';此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV DL,20H; 输入空格用以竖式对齐MOV AH,02HINT 21HLEA BX,DAT1MOV CX,5INADD1: MOV AH,01HINT 21HMOV [BX],ALINC BXLOOP INADD1MOV DL,0AH; 换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HLEA DX,JH; 输出加号MOV AH,09HINT 21HLEA SI,DAT2MOV CX,5INADD2: MOV AH,01HINT 21HMOV [SI],ALINC SILOOP INADD2MOV DL,0AH;换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HLEA DX,HX; 输出横线MOV AH,09HINT 21HMOV DL,0AH;换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21H;以下计算结果LEA BX,DAT1+4LEA SI,DAT2+4LEA DI,DAT3+5MOV CX,5CLC ;清除CF标志位L1: MOV AL,[BX]ADC AL,[SI]AAAPUSHFOR AL,30H; 将AL转换为ASCII码POPFMOV [DI],ALDEC DIDEC BXDEC SILOOP L1MOV CL,6;6位循环6次JNC OUT1;没有进位直接输出MOV byte ptr [DI],31H;有进位给最高位赋1 ;以下输出显示OUT1:MOV DL,[DI]INC DIMOV AH,02HINT 21HLOOP OUT1MOV AH,4CHINT 21HCODES ENDSEND START。
实验一两个多位十进制数相加实验一实验目的1学习数据传送及算术运算指令的用法2 进一步熟悉汇编语言上机过程二、实验要求1 独立完成每个实验项目2 按照程序流程图编好实验程序三程序框图Array加程序四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在软件上调试实验程序3 写出实验结果实验二将键盘输入的小写字母转换成大写字母一实验目的了解小写字母和大写字母在计算机内的表示方法,学习如何转换二、实验要求1 独立完成每个实验项目2三程序框架加程序四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在软件上调试实验程序3 写出实验结果实验三输入字符一实验目的1学习数据传送及算术运算指令的用法2 进一步熟悉汇编语言上机过程加程序四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在软件上调试实验程序3 写出实验结果实验四8255A并行口实验一、实验目的加深理解逐次逼近法模数转换器的特征和工作原理,掌握ADC0809的接口方法以及A/D输入程序的设计和调试方法。
二、实验要求1 理解实验程序2 掌握各个芯片的原理和使用方法。
三、实验原理PC口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。
拨动K1~ K8,PB口上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。
程序:CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0073HIOAPT EQU 0070HIOBPT EQU 0071HIOCPT EQU 0072HIOBDATA EQU 0500HCONTPORT EQU 00DFHDATAPORT EQU 00DEHDATA1 EQU 0640HSTART: J MP IOLEDIOLED: CALL FORMATCALL LEDDISPMOV DS,AXMOV AL,82HMOV DX,IOCONPTOUT DX,ALMOV DX,IOBPTIN AL,DXMOV BYTE PTR DS:[0501H],ALMOV DX,IOCONPTMOV AL,80HOUT DX,ALMOV DX,IOBPTMOV AL,DS:[0501H]OR AL,0F0HOUT DX,ALMOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY1IOLED0: MOV AL,10100101BMOV DX,IOCPTOUT DX,ALCALL DELAY1CALL DELAY1OR AL,0F0HOUT DX,ALMOV CX,8HIOLED1: MOV DX,IOBPTMOV AL,DS:[0501H]AND AL,10101111BOUT DX,ALCALL DELAY2OR AL,01010000BOUT DX,ALCALL DELAY2LOOP IOLED1MOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY2MOV AL,01011010BOUT DX,ALCALL DELAY1CALL DELAY1OUT DX,ALMOV CX,8HIOLED2: MOV DX,IOBPTMOV AL,DS:[0501H]AND AL,01011111BOUT DX,ALCALL DELAY2OR AL,10100000BOUT DX,ALCALL DELAY2LOOP IOLED2MOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY2JMP IOLED0DELAY1: PUSH AXPUSH CXMOV CX,0030HDELY2: CALL DELAY2LOOP DELY2POP CXPOP AXRETDELAY2: PUSH CXMOV CX,8000HDELA1: LOOP DELA1POP CXRETLEDDISP:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00 LED1: CMP BYTE PTR DS:[0600H],07H JA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+DATA1]MOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETFORMAT: MOV BX,0MOV WORD PTR DS:[BX+0640H],405BHADD BX,2MOV WORD PTR DS:[BX+0640H],4040HADD BX,2MOV WORD PTR DS:[BX+0640H],6D6DHADD BX,2MOV WORD PTR DS:[BX+0640H],7F5BHRETCODE ENDSEND START四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在实验机箱上连好实验线路3 观察实验现象4 分析实验结果实验五8259中断控制器实验一、实验目的1.掌握8259中断控制器的接口方法.2.掌握8259中断控制器的应用编程.二、实验要求1 理解实验程序2 掌握各个芯片的原理和使用方法。
实验一:输入输出实验实验环境PC机+Win 2010+emu8086 实验日期2016.6.3 一.实验内容1.熟悉emu8086仿真系统,清楚调试环境,能熟练的查看8086仿真系统的寄存器、内存、堆栈等相关内容。
2.设计并单步调试实现一位十进制数的加法运算。
例如:屏幕显示效果为3+2=5,其中,加数和被加数为键盘输入,其他为屏幕自动输出。
3.在实现了一位十进制数加法运算的基础上,尝试实现两位十进制加法运算、一位十进制数的四则运算以及十进制多位数运算等扩展要求。
二.理论分析或算法分析1、Emu8086的使用(1)打开桌面上的云端软件,选择微机原理分类,点击Emu8086的图标,,选择【新建】。
(2)选择COM模板,点击【确定】,软件出现源代码编辑器的界面在源代码编辑器的空白区域,编写如下一段小程序:代码编写结束,点击菜单【文件】【另存为……】,将源代码换名保存。
本例将源代码保存为.asm。
:(3)如果源程序无错误,则编译通过单击【单步运行】可以单步调试,程序将每执行一条指令便产生一次中断(建议使用)。
单击【后退一步】可以返回到上一条指令(这个功能也是一般调试器没有的)。
单击【运行】,程序将从第一句直接运行到最后一句。
2、设计并单步调试实现一位十进制数的加法运算。
(1)选择新建一个.COM类型的文件。
(2)在编辑界面中,键入代码。
(3)点击工具栏的【模拟】按钮,进入调试窗口,单步调试并观察寄存器的变化情况。
3、进一步完善上述程序,实现一位十进制数的加法运算。
4、在实现了一位十进制数加法运算的基础上,选择完成如下题目:两位十进制加法运算、一位十进制数的四则运算、十进制多位数运算等。
三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等)一位加法:org 100hmov ah, 1int 21hmov bl, al mov ah, 2 mov dl, '+' int 21hmov ah, 1int 21hand bl, 0fh and ax, 0fh add al, bl aaaor ax, 3030h mov bx, ax mov ah, 2 mov dl, '=' int 21h cmp bh, 30hje j1mov ah, 2 mov dl, bhint 21hj1:mov ah, 2 mov dl, blint 21hret 多位加法:org 100hmov ah, 1int 21hmov bh, al int 21hmov bl, al mov ah, 2mov dl, '+'int 21hmov ah, 1int 21hmov ch, al int 21hmov cl, aland bx, 0f0fh and cx, 0f0fh mov ax, cxadd ax, bxaaaor ax, 3030h mov bx, ax mov ah, 2mov dl, '='int 21h cmp bh, 30hje j1mov ah, 2mov dl, bhint 21hj1:mov ah, 2mov dl, blint 21hret一位减、乘、除:mov ah, 1int 21hand al, 0fhmov bl, al mov ah, 1int 21hmov dl, alint 21hand al, 0fhxor ah, ahcmp dl, '+'jne jp1add al, blaaajmp short jp4jp1:cmp dl, '-'jne jp2xchg al, blsub al, blaasjmp short jp4jp2:cmp dl, '*'jne jp3mul blaamjmp short jp4jp3:xchg al, bldiv blaam jp4:mov bx, axmov ah, 2mov dl, '='int 21hor bx, 3030h cmp bh, '1'jc j1mov dl, bhint 21hj1:mov dl, blint 21h四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)一位数加法:多位数加法:一位数减、乘、除法五.结论通过这次实验,我对EMU8086实验模拟环境有相应的了解,熟悉了基本的EMU8086的使用方法,同时也对mov这个指令有了深入的理解,并且知道了各个存储器里面的值得存储过程,为以后的的学习打下了坚实的基础。