多字节十进制加法程序设计
多位十进制数加法器设计.

深圳大学实验报告课程名称:微机原理及应用实验实验项目名称:多位十进制数加法器设计学院:物理科学与技术学院专业:应用物理指导教师:报告人:学号:班级:应用物理班实验时间:2015-10-19实验报告提交时间:2015-11-02教务处制五、程序说明(预习)七、实验源程序清单(实验后以电子报告形式存储到指定位置)1.源程序路径及文件名:ADD2.ASM ADD1.ASM2.可执行程序路径及文件名:八、上机调试情况说明EMU8086:一:没有键盘录入1.结果显示如下:2.程序运行时的各段地址:3.两个子程序IP入口:4.改变两个加数数值5.子程序格式及其调用方法和宏汇编区别子程序格式:子程序名称PROC NEAR ; 子程序定义; …子程序内容RET ;子程序返回子程序名称ENDP ;子程序结束调用格式:CALL 子程序名称注意事项:1、子程序不能直接传递参数,需要自行定义变量。
2、注意保护现场和恢复现场。
宏汇编与子程序的区别:1、宏汇编有宏展开,子程序没有2、宏汇编可以传递参数。
二:键盘录入DOS:例如:250+250=500例如:62142+63123=125265九、实验结果与分析结果如下:十、实验总结(必备部分,评分重要依据之一)本次实验实则是对实验二的加强巩固基础上,进行更加友好的人机交互设计;通过本次实验不仅在程序中首先把两个加数固定,在实验二的基础上扩展位数,考虑到最高位进位的情况,并最终得出正确结果;后来又通过键盘录入两个加数,增加了人机交互的设计,如此一来,更加加深了对寄存器的使用,汇编语言宏定义,子程序调用以及DOS功能调用的学习。
同时,通过本次实验的学习,更加熟练了EMU8086工具的使用,也把理论课上学习到的汇编操作指令实际操作,对汇编语言的风格加深认识。
MOV DL,BLINT 21HCRLFJMP BEGINERROR:CRLFMOV AH,09H ;显示输入错误LEA DX,STRING3INT 21HCRLFJMP BEGINEXIT:CRLFMOV AH,09H ;显示成功退出LEA DX,STRING4INT 21HMOV AH,4CHINT 21HCODE ENDSEND START(2)请问你的程序能否处理加数和被加数都介于0~65535范围但计算结果超出该范围的情况?如何改进?可以,如图:主要考虑到最高位是否进位,可以设置一个进位变量加以判断。
多字节十进制加法

SI←1002 CX←3
AL← [SI] BL← [SI+3] AL←AL+BL+CF 十进制调整 [SI+7] ← AL
SI←SI-1
计数完成 [SI]←[SI]+00+CF
结束
• CODE SEGMENT
• ASSUME CS:CODE
•
ORG 0100H
• START:
• …………………………………
• CODE • END
ENDS START
程序调试及执行要求
• E命令修ห้องสมุดไป่ตู้3000:1000~3000:1005 • R命令修改DS=3000H • 以十进制调整指令(DAA )为断点,分段执行程序 • 检查寄存器 • G 断点地址
• T 单步执行(调整) • 检查AL和标志位 • 重复3次循环,检查中间结果 • G 将程序执行完 • 检查最后结果 D 1000 1010
实验三 多字节十进制加法
实验目的
• 掌握循环程序的设计 • 掌握标志位判断 • 带进位的加/减指令 • 十进制调整指令
实验内容
• 编程完成3字节10进制加法 • 程序放在0100H开始的单元 • 加数被加数和放在存储器中格式如下
最低一个字节相加
• CF初始为0
第二个字节相加
调整效果
程序流程图
[si+7],al si next byte ptr[si+7],00h 3 ends start
• code
• assume
• start:
•
mov
•
clc
•
mov
•
mov
多位十进制数加法实验报告

多位十进制数加法实验报告实验一两个多位十进制数相加的实验实验一两个多位十进制数相加的实验一、实验目的1、学习数据传送和算术运算指令的用法。
2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。
二、实验内容将两个多位十进制数相加。
要求被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。
三、程序框图四、程序清单CRLF MACROMOV DL,0DHMOV AH,02HINT21HMOV DL,0AHMOV AH,02HINT21HENDMDATA SEGMENTDATA1DB 33H,39H,31H,37H,34HDATA2DB 36H,35H,30H,38H,32HDATA ENDSSTACKSEGMENTSTA DB20 DUP(?)TOP EQU LENGTH STASTACKENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA2MOV BX,05CALL DISPLCRLFMOV SI,OFFSET DATA1MOV BX,05CALL DISPLCRLFMOV DI,OFFSET DATA2CALL ADDAMOV SI,OFFSET DATA1MOV BX,05CALL DISPLCRLFMOV AX,4C00HINT21HDISPLPROC NEARDS1: MOV AH,02MOV DL,[SI+BX-1]INT21HDEC BXJNZ DS1RETDISPLENDPADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05AD1: SUBBYTE PTR [SI+BX-1],30HSUBBYTE PTR [DI+BX-1],30HDECBXJNZAD1MOV SI,DXMOV DI,BPMOV CX,05CLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALINCSIINCDILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05AD3: ADDBYTE PTR [SI+BX-1],30H ADDBYTE PTR [DI+BX-1],30HDECBXJNZ AD3RETADDA ENDPCODE ENDSEND START五、实验要求1.读懂源程序,写出源程序注释。
多位十进制数加法器设计.

深圳大学实验报告课程名称:微机原理及应用实验实验项目名称:多位十进制数加法器设计学院:物理科学与技术学院专业:应用物理指导教师:报告人:学号:班级:应用物理班实验时间:2015-10-19实验报告提交时间:2015-11-02教务处制五、程序说明(预习)七、实验源程序清单(实验后以电子报告形式存储到指定位置)1.源程序路径及文件名:ADD2.ASM ADD1.ASM2.可执行程序路径及文件名:八、上机调试情况说明EMU8086:一:没有键盘录入1.结果显示如下:2.程序运行时的各段地址:3.两个子程序IP入口:4.改变两个加数数值5.子程序格式及其调用方法和宏汇编区别子程序格式:子程序名称PROC NEAR ; 子程序定义; …子程序内容RET ;子程序返回子程序名称ENDP ;子程序结束调用格式:CALL 子程序名称注意事项:1、子程序不能直接传递参数,需要自行定义变量。
2、注意保护现场和恢复现场。
宏汇编与子程序的区别:1、宏汇编有宏展开,子程序没有2、宏汇编可以传递参数。
二:键盘录入DOS:例如:250+250=500例如:62142+63123=125265九、实验结果与分析结果如下:十、实验总结(必备部分,评分重要依据之一)本次实验实则是对实验二的加强巩固基础上,进行更加友好的人机交互设计;通过本次实验不仅在程序中首先把两个加数固定,在实验二的基础上扩展位数,考虑到最高位进位的情况,并最终得出正确结果;后来又通过键盘录入两个加数,增加了人机交互的设计,如此一来,更加加深了对寄存器的使用,汇编语言宏定义,子程序调用以及DOS功能调用的学习。
同时,通过本次实验的学习,更加熟练了EMU8086工具的使用,也把理论课上学习到的汇编操作指令实际操作,对汇编语言的风格加深认识。
MOV DL,BLINT 21HCRLFJMP BEGINERROR:CRLFMOV AH,09H ;显示输入错误LEA DX,STRING3INT 21HCRLFJMP BEGINEXIT:CRLFMOV AH,09H ;显示成功退出LEA DX,STRING4INT 21HMOV AH,4CHINT 21HCODE ENDSEND START(2)请问你的程序能否处理加数和被加数都介于0~65535范围但计算结果超出该范围的情况?如何改进?可以,如图:主要考虑到最高位是否进位,可以设置一个进位变量加以判断。
实验二无符号数多字节十进制数加法实验

实验二无符号数多字节十进制数加法实验一、实验目的1.进一步掌握51系列单片机的仿真调试软件伟福V2.50软件模拟器的使用方法。
2.进一步练习程序的录入修改编译方法。
3.进一步练习程序的调试方法。
4.对程序进行仿真运行。
二、实验设备1.PC机(WINDOWS操作系统)。
2.HF-MC01实验实训开发综合装置。
3.伟福6000软件模拟器。
三、实验内容1.用汇编语言编写4字节无符号十进制数加法程序,被加数36101985放入(43H)--(40H)单元中。
加数12663459放入(53H)--(50H)单元。
2.编写主程序,分别用R0和R1作数区指针,R0指向被加数,并兼作"和"的指针。
R1指向加数,字节数存放到R2中作计数初值。
3.编写加法子程序,子程序适用于n字节的加法,只要在主程序中改变R2的初值即可。
四、实验步骤1.编写源程序按实验内容要求编写源程序(可参考实程序SY2.ASM)。
2.录入源程序录入步骤为:运行WAVE- 文件- 新建文件-录入程序- 保存-SY2.ASM(或关闭窗口- SY2.ASM- 保存)(注意:保存文件时必须加上扩展名.ASM)。
3.对编写的文件(SY2.ASM)进行编译编译步骤为:项目- 全部编译此时,系统将弹出‘信息窗口’;若编译完成,将显示生成的两个文件SY2.HEX和SY2.BIN,关闭‘信息窗口’。
若编译有错误,则在‘信息窗口’中出现错误提示;修改后再行编译。
4.执行及调试程序a. 点击执行- 复位:使程序执行指针指向第一条指令(CPU窗口指向0000H)。
b.为执行加法计算,进行仿真调试;运行程序前要分别把被加数(36101985)写入(43H)(最高位), (42H),(41H), (40H)(最低位)单元,加数(12663459)写入(53H)(最高位),(52H),(51H),(50H)(最低位)单元中。
c.装入的方法步骤:点击窗口- 数据窗口- DATA: 可以观看片内RAM 00H 到 FFH 中的内容。
十进制数的算术运算程序

INC
SI
INC
DI;准备高位相加
LOOP BCDADD1
MOV AL,0 ADC AL,0 MOV [DI],AL ;保存最高位的结果
POP DI POP CX POP AX RET BCDADD ENDP
;恢复现场
<>
1.2 十进制数的减法运算程序
转换原理:
减法运算可以通过求补码的形式转换为加法运算。求N位十BCDQB1: MOV AL,99H
SUB AL,[DI]
MOV [DI],AL ;保存结果
INC
DI
;准备高位求补
LOOP BCDQB1 ;X的十进制补码=99┅9A-X
POP
DI
POP
CX
POP
AX
RET
BCDQB ENDP
<>
汇编语言程序设计
可见,若能够求出减数的十进制补码,则可将减法运算变为加法运算。而一个 十进制数的补码,可由相应位数的9与该数相减,结果最后+1即可求得。最后+1 运算也可直接使个位为A(9┅9+1=9┅A)直接减去减数实现。
<>
运算程序
例9-4:编写一段子程序,实现两个压缩BCD码十进制数的减法。 设十进制的被减数与减数存放于SI、DI指示的存储器中,CX表示十进制数的位 数,结果存储于DI指示的连续存储空间中。子程序如下: ;程序功能:将两个十进制数(压缩BCD码表示)相减。 ;入口参数:CX存放十进制数的位数,SI指向被减数的地址指针,DI指向减数 的地址指针。
<>
运算程序
例9-3:编写一段子程序,实现两个压缩BCD码十进制数的加法。 设十进制的被加数与加数存放于SI、DI指示的存储器中,CX表示十进制数的位 数,结果存储于DI指示的连续存储空间中。子程序如下: ;程序功能:将两个十进制数(压缩BCD码表示)相加。 ;入口参数:CX存放十进制数的位数,SI指向被加数的地址指针,DI指向加数 的地址指针。
十进制加减法数字电路课程设计报告

设计名称:设计一个一位十进制加减法器 设计内容:1、0-9十个字符和“+”“-”分别对应一个按键,用于数据输入。
2、用一个开关控制加减法器的开关状态。
3、要求在数码显示管上显示结果。
设计目的与要求:1、学习数字逻辑等电路设计方法,熟知加减法器、编码器、译码显示的工作原理及特点;2、培养勤奋认真、分析故障和解决问题的能力。
设计环境或器材、原理与说明:环境:利用多功能虚拟软件Multism8进行电路的制作、调试,并生成文件。
器材:74LS283或者4008, 4个异或门(一片74LS86)(减法);74LS08,3输入或门(加法)设计原理:图1分析:如图1所示,第一步置入两个四位二进制数(要求置入的数小于1010),如(1001)2和(0111)2,同时在两个七段译码显示器上显示出对应的十进制数9和7;第二步通过开关选择运算方式加或者减;第三步,若选择加运算方式,所置数送入加法运算电路进行运算,同理若选择减运算方式,则所置数送入减法运算电路运算;第四步,前面所得结果通过另外两个七段译码器显示。
设计过程(步骤)或程序代码: 实验电路:1:减法电路的实现:(1):原理:如图1所示(如下),该电路功能为计算A-B 。
若n 位二进制原码为N 原,则与它相对应的补码为N 补=2n -N 原,补码与反码的关系式为N 补=N 反+1,A-B=A+B补-2n=A+B反+1-2n(2):因为B○+1= B非,B○+0=B,所以通过异或门74LS86对输入的数B求其反码,并将进位输入端接逻辑1以实现加1,由此求得B的补码。
加法器相加的结果为:A+B反+1,(3):由于2n=24=(10000)2,相加结果与相2n减只能由加法器进位输出信号完成。
当进位输出信号为1时,它与2n的差为0;当进位输出信号为0时,它与2n差值为1,同时还要发出借位信号。
因为设计要求被减数大于或等于减数,所以所得的差值就是A-B差的原码,借位信号为0。
汇编语言课程设计-十进制加减法

目录课程设计任务书 (2)1 问题描述 (3)2 前期分析 (3)3 课程设计 (3)3.1 总体设计 (3)3.2 模块设计 (4)3.2.1 求和模块 (4)3.2.2 输入十进制数模块 (5)3.2.3 存储器清零模块 (6)3.2.4 减法模块 (7)4 程序源代码 (7)5 调试与分析 (13)6 测试结果 (13)7 经验与体会 (15)评分表 (16)课程设计任务书学生姓名:毛习均专业班级:计算机1004班指导教师:许毅工作单位:计算机科学与技术学院题目: 十进制加减计算器初始条件:理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。
实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。
具体的设计任务及要求:1)编写程序实现十进制数的加减法;2)将计算结果在屏幕上显示;3)程序采用子程序结构,结构清晰;4)友好清晰的用户界面,能识别输入错误并控制错误的修改。
在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。
阅读资料:1)《IBM—PC汇编语言程序设计实验教程》实验2.42)《IBM—PC汇编语言程序设计(第2版)》例6.11时间安排:设计安排一周:周1、周2:完成系统分析及设计。
周3、周4:完成程序调试,和验收。
周5:撰写课程设计报告。
指导教师签名:年月日系主任(或责任教师)签名:年月十进制加减法计算器1问题描述用汇编语言编写一个十进制加减法计算器,此程序要求将结果显示在屏幕上,并且友好清晰的用户界面,能识别输入错误并且控制修改。
在此程序中采用子结构程序使结构清晰。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验报告
班级:11050641X 姓名:张超
学号:19
指导教师:赵英亮
实验一多字节十进制加法程序设计1.实验目的
1.熟悉仿真器的软件使用环境及单片机汇编语言编程;
2.掌握多字节十进制加法的程序设计及实现方法。
2.实验设备
CPU挂箱、8031CPU模块、Keil C51软件
3.实验内容
编写多字节十进制加法程序( P49 ),实现下式运算:
4574+6728=11302
要求:被加数在片内RAM区20H、21H单元;
加数在片内RAM区30H、31H单元;
结果在片内RAM区20H(最高位进位)、
21H(高位)、22H(低位)单元。
4.实验程序
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:MOV A,20H
ADD A,30H
DA A
MOV 22H,A
MOV A,21H
ADDC A,31H
DA A
MOV 21H,A
CLR A
MOV R3,00H
ADDC A,R3
MOV 20H,A
END
5.实验步骤
开机启动Keil C51软件进入μVision2 集成开发环境,确认89C51处于软件仿真状态。
完成程序的设计、编辑、编译、连接。
进入DEBUG方式,打开存储器Memory 1窗口,在窗口Address栏键入D:20H;点击鼠标右键,选择最后一项Modify Memory ,输入被加数;在窗口Address栏键入D:30H;点击鼠标右键,选择最后一项Modify Memory ,输入加数。
调试和运行程序并记录存储器Memory 1窗口实验结果。
6.实验结果
得出了正确的结果
7.实验图片。