深 圳 大 学 实 验 报 告
课程名称: 微机原理及应用实验
实验项目名称: 多位十进制数加法器设计
学院: 物理科学与技术学院
专业: 应用物理
指导教师:
报告人: 学号: 班级: 应用物理班
实验时间: 2015-10-19
实验报告提交时间: 2015-11-02
教务处制
-1-
一、 实验名称: 多位十进制数加法器设计 二、实验目的 (1)继续熟练掌握在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程; (2)学习数据传送和算术运算指令的用法; (3)掌握子程序设计方法; (4)掌握宏汇编设计方法; (5)掌握键盘输出的DOS功能调用方法。 三、实验内容 (1)将两个多位十进制数相加。要求被加数、加数均以ASCII码形式各自按高位高地址的规律分别顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回结果变量DATA3处,并屏幕显示结果。 (2)在以上程序基础上,设计一个多位十进制数加法器,键盘输入十进制加数和被加数,将输入和输出结果以竖式形式显示在屏幕。 四、实验任务分析与算法分析(软件实验)或实验电路及连线(硬件实验) 实验及报告要求: 1) 要求画出完整的程序流程图。 2) 根据流程图和部分提示代码,编写完整的汇编代码源文件(特别是以上红字部分),并存入合适目录,要求补充写出所有未注释的伪指令和指令的注释; 3) 编译、连接生成可执行文件,分别在debug和Emu8086下调试该可执行文件,给出程序运行时的各段地址(CS=?,DS=?SS=?ES=?)及两个子程序入口的IP; 试改变加数和被加数,如何从内存中观察结果的变化?总结子程序格式及其调用方法;结合本程序说明宏调用与子程序的区别。 4) 写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的主要依据。 5) 实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法、汇编指令及汇编语言编程方法、微机原理学习方法作出总结。 实验任务1. 将两个多位十进制数相加。要求被加数、加数均以ASCII码形式各自按高位高地址的规律分别顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回结果变量DATA3处,并屏幕显示结果。 算法分析: 定义两个加数,并分别存至两个变量之中;分别取变量中的对应万千百十个位上的数,由ASCII码转换成数值后,对应位相加(使用带进位的加法命令),得到的数值保存至结果变量的对应位上,并调用DOS屏幕显示字符功能显示。 功能: 将被加数和加数分别显示,接着运行加法运算,然后将结果显示出来。 算法说明: ① 定义数据段:定义被加数和加数,且要使其用ASCII码以十六进制之间的转换; ② 定义堆栈段,并给SP_TOP单元赋初值0; ③ 定义代码段,并将源代码放在里面 首先,编写主程序; 接着,编写显示、回车换行和加法运算的子程序。 ④程序结束。 所用到的寄存:AX、SS 、CS 、DS、 ES、SI、SP、DI
-2-
五、程序说明(预习) -3-
六、源程序清单及其每句的注释 1.没有键盘录入的源程序 CRLF MACRO ;回车换行宏定义 MOV AH,02 MOV DL,0DH INT 21H MOV AH,02 MOV DL,0AH INT 21H ENDM DATA SEGMENT ; 数据段 DATA1 DB 35H,34H,33H,32H,35H ;代表12345 DATA2 DB 30H,32H,34H,36H,38H ;代表86420 DATA3 DB 6 DUP(0), '$' CARY DB 0 DATA ENDS STACK SEGMENT STACK ; 堆栈段 STA DB 64 DUP(0) STACK_TOP DB 0 STACK ENDS CODE SEGMENT ; 代码段 ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK START: ; 程序开头必须要有的五条指令 MOV AX, DATA MOV DS, AX ; 设置数据段 MOV AX, STACK MOV SS, AX ; 设置堆栈段 LEA SP, STACK_TOP ; 设置栈顶指针 ;--------------------------------------- ; 程序的中间部分 LEA BX,DATA1 ;加数1送至BX,传至子程序DISP的形参 CALL DISP ;调用显示字符串子程序,将第一个加数显示到屏幕 LEA BX,DATA2 ;加数2送至BX,传至子程序DISP的形参 CALL DISP ;调用显示字符串子程序,将第一个加数显示到屏幕 LEA BX, DATA1 ;加数1送至BX MOV SI,0 ;定义指针SI依次指向变量单元的下一个数据,相当指针 MOV CX,5 ;设置循环次数5 NEXT1: SUB BYTE PTR [BX][SI],30H ;将BX里面的对应存储单元的字符串ASCII码转换为对应二进制 -4-
相关推荐: