武汉理工微机原理数字累加求和课设报告(DOC)

合集下载

武汉理工大学《学科基础课群课设》数字电流源报告【管理资料】

武汉理工大学《学科基础课群课设》数字电流源报告【管理资料】

课程设计任务书学生姓名:专业班级:通信1104班指导教师:艾青松工作单位:信息工程学院题目: 数控直流电流源初始条件: Protel软件,电路基础,通信原理基础,模拟电子技术基础要求完成的主要任务:设计并制作数控直流电流源。

输入交流200~240V,50Hz;输出直流电压≤10V。

要求;1)输出电流范围:200mA~2000mA;2)可设置并显示输出电流给定值,要求输出电流与给定值偏差的绝对值≤给定值的1%+10 mA;3)具有“+”、“-”步进调整功能,步进≤10mA;4)改变负载电阻,输出电压在10V以内变化时,要求输出电流变化的绝对值≤输出电流值的1%+10 mA;5)纹波电流≤2mA;时间安排:指导教师签名:年月日系主任(或责任教师)签名:年月日摘要 (1)Abstract (2)1绪论 (3) (3) (3) (3)2相关理论知识 (4) (4)系统介绍 (5)AT89C52芯片介绍 (6)3 硬件设计 (9)恒流源模块 (9)单片机模块 (9)AT89C52 硬件电路设计 (9)键盘模块 (11)MM74C922 (9)键盘电路 (9)显示模块 (10)1602LCD显示 (10)LCD显示硬件电路 (10)A/D模块 (11)芯片MAX1241 (11)A/D模块电路 (12)D/A模块 (12)存储模块 (13)芯片24C02C (13)存储模块电路 (14) (14)4 软件仿真 (16)软件仿真 (16)5 个人小结 (18)6 参考文献 (19)附录程序代码..................................................................................................... 错误!未定义书签。

本系统由单片机程控设定数字信号,经过D/A转换器AD5320输出模拟量,控制输出功率管的基极,随着功率管基极电压的变化而输出不同的电流。

微机原理+课程设计++武汉理工

微机原理+课程设计++武汉理工
微机原理课程设计
设计报告格式:按教务处要求. 设计报告内容: 1) 原理图,要求使用Protel或其它软件绘制. 2) 系统资源分配表(地址分配表). 3) 基本原理说明. 4) 程序流程框图. 5) 源程序清单.
使用芯片: 使用芯片:CPU---8088, RAM---6116(2K*8), ROM---27256(32K*8), 定时/计数器 定时 计数器---8253, 计数器 中断控制器---8259A, 中断控制器 并行接口---8255A 并行接口 串行接口—8251A 串行接口 锁存器---74LS373, 锁存器 基本门电路---74LS32, 74LS04 等. 基本门电路
ROM:27256(32K*8) RAM:6116(2K*8) 0000:7FFFH
译码器
ROM
0000:0800H 0000:07FFH
RAM
0000:0000H
3)译码器的设计: 8088的20位地址总线
A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

设:有一输入方波信号f0(<1 MHz),要求输出信号: f1= ,要求输出信号: = f0/N, N通过键盘输入.(可不用中断) 通过键盘输入.(可不用中断) , 通过键盘输入.(可不用中断 提示:通过设置 的计时初值实现. 提示:通过设置8253的计时初值实现. 的计时初值实现
3. 微秒计时器的分析与设计
第三题:1. 描述本设计中的微秒计时原理. 2. 本设计中显示器是如何设计的? 3. 本设计中8253的计数采用的是什么码制? 4. 本设计中I/O接口的地址是怎样设计的? 第四题:1. 描述本设计中的可编程定时器的工作原理. 2. 本设计中8253工作在工作方式几上?为什么? 3. 本设计中8253的各寄存器地址是怎样确定的? 4. 定时时间到后,通过何种方式通知CPU? 第五题:1. 描述本设计中的串口的工作原理. 2. 本设计中8251A工作在工作方式几上? 3.本设计中A系统的数据发送靠什么触发的? 4. 本设计中B系统依据什么知道A系统正在发送数据?

微机原理实验报告-两个多位十进制数相加的实验等.doc

微机原理实验报告-两个多位十进制数相加的实验等.doc

微机原理实验报告-两个多位十进制数相加的实验等微机原理实验报告班级:学号:姓名:实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

三、程序流程图图3-1四、参考程序清单DATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H;被加数DATA1END E QU $-1DATA2 DB 34H,35H,30H,38H,32H;加数DATA2END EQU $-1SUM DB 5 DUP(?)DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE 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 DATA1ENDMOV DI,OFFSET DATA2ENDCALL ADDAMOV AX,4C00HINT 21HADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30HSUB BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05HCLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALDEC SIDEC DILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30HADD BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ A D3RETADDA ENDP CODE ENDSEND S TART五、实验结果分析我们计算的结果是:84256他们结果是一样的。

课设

课设
(1)以K1-K8接8255的A口做为电子琴的键盘分别输入静音、do、re、mi、fa、sol、la、si的音,以8255的B口作为输出。用8253定时器产生频率控制扬声器发生。
(2)以8255接八个开关K1-K8,做电子琴按键输入。
(3)以8253控制扬声器,发出相应的音阶。
============================================================
MOV DX,12H
MOV AX,348CH
DIV DI;(DI)=频率
OUT 42H,AL;42H为8253的通道2端口
MOV AL,AH
OUT 42H,AL
(4)送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PB1位和定时器的输出信号同时作为与门的输入,PB0和PB1位可由程序决定为0还是为1。显然只有PB0和PB1都是1时,才能使扬声器发出声音。
在掌握基本的微机原理与接口技术专业知识的基础上,完成课程设计任务,并可以灵活运用相关知识自主创新,真正做到将知识运用于实践,将知识转化为自身能力。
1.2设计内容
1、从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:
1)掌握汇编语言程序设计的基本方法。
2)进一步理解各种接口电路的应用。
3)掌握利用PC机扬声器发出不同频率声音的方法。
通过微机原理的课程设计我深刻体会到,大学应该关注自学能力,课堂时间有限老师教授的这也只能是大概内容,具体指示还要自己课下翻阅资料补充,学习就是不但补充不断摸索的过程。
总的来说,这次的课程设计让我受益匪浅,既锻炼了自我能力,磨练了意志,有培养了我的兴趣,让我慢慢的尝试独立分析问题解决问题,这对我以后的学习和工作都是非常重要的,我会珍惜以后的课设机会,不断完善自己。

微机原理综合实训报告

微机原理综合实训报告

通过本次微机原理综合实训,使学生掌握微型计算机的基本组成、工作原理以及常用接口技术,培养学生动手实践能力、分析问题和解决问题的能力。

具体目标如下:1. 熟悉微型计算机的硬件组成,了解各部件的功能和相互关系。

2. 掌握微机原理与接口技术的基本知识,如总线、中断、DMA等。

3. 学会使用常用接口芯片,如8255、8259、8253等。

4. 能够进行简单的微机原理设计与实现。

二、实训内容1. 微型计算机硬件组成实验(1)了解微型计算机的基本组成,包括中央处理器(CPU)、存储器、输入输出设备、总线等。

(2)学习CPU的内部结构,了解指令系统、寻址方式等。

(3)了解存储器的分类、容量、速度等参数,学习存储器扩展技术。

(4)学习输入输出设备的工作原理,掌握常用接口芯片的使用方法。

2. 微机原理与接口技术实验(1)学习总线、中断、DMA等基本概念,了解其工作原理。

(2)学习8255并行接口芯片的应用,实现LED显示、按键输入等功能。

(3)学习8259中断控制器芯片的应用,实现中断处理。

(4)学习8253定时/计数器芯片的应用,实现定时功能。

3. 系统设计与实现(1)根据实训要求,设计一个简单的微机系统。

(2)确定系统硬件组成,选择合适的接口芯片。

(3)编写系统软件,实现系统功能。

(4)进行系统调试,确保系统稳定运行。

1. 实验准备(1)了解实验目的、内容和方法。

(2)查阅相关资料,掌握实验所需知识和技能。

(3)准备实验仪器和设备,如示波器、逻辑分析仪等。

2. 实验操作(1)按照实验步骤进行操作,观察实验现象。

(2)记录实验数据,分析实验结果。

(3)针对实验过程中遇到的问题,查阅资料、请教老师,解决问题。

3. 系统设计与实现(1)根据实训要求,确定系统设计方案。

(2)进行硬件选型,设计电路图。

(3)编写系统软件,实现系统功能。

(4)进行系统调试,确保系统稳定运行。

四、实训成果1. 完成微型计算机硬件组成实验,掌握微型计算机的基本组成和工作原理。

武汉理工大学课程设计报告

武汉理工大学课程设计报告

目录1 技术指标 (1)1.1初始条件 (1)1.2 技术要求 (1)2 设计方案及其比较 (1)2.1 模拟电路方案 (1)2.1.1 方案一 (1)2.1.2 方案二 (3)2.1.3 方案比较 (4)2.2 数字电路方案 (4)2.2.1 方案一 (4)2.2.2 方案二 (8)2.2.3 方案比较 (10)3 实现方案 (10)3.1 模拟电路方案 (10)3.1.1 电路器件说明及反相器电路 (10)3.1.2 电路原理分析 (11)3.2数字电路方案 (12)3.2.1 电路器件说明 (12)3.2.2 电路原理分析 (15)3.2.3 电路参数设计 (15)4 调试过程及结论 (16)4.1 模拟部分 (16)4.2 数字部分 (16)5 心得体会 (17)6 参考文献 (18)自动循环调光灯电路的设计和模拟信号运算电路的设计1 技术指标1.1初始条件直流可调稳压电源一台、以集成电路运算放大器LF353、NE555和CD4017集成电路、三极管9013、万用表一块、面包板一块、元器件若干、剪刀、镊子、导线等必备工具。

1.2 技术要求1)模拟部分以集成电路运算放大器LF353为主,设计一种模拟信号运算电路。

具体包括加法运算电路和减法运算电路,要求能够实现两路可调模拟信号的加法运算和减法运算。

2)数字部分以NE555和CD4017集成电路为主芯片,设计一种调光灯电路。

可以使灯在熄灭—微亮—较亮—最亮四种状态下循环。

要求灯光变化的循环速度可以进行调节。

2 设计方案及其比较2.1 模拟电路方案2.1.1 方案一1)加法器方案一加法器原理图如图1所示。

图1 方案一加法器原理图规定:R1端输入电压为v i1,通过的电流为i 1;R2输入电压为v i2,通过的电流为i 2;RF 通过的电流为i f ;输出电压为v 0。

根据“虚短”和“虚地”得知放大器两输入端接地,电压0。

列N点节点电流方程有:{i 1=vi1R 1i 2=v i2R 2i 3=v 0R f 因为: i 1≈0。

微机原理与接口技术课程设计报告加减计数器完整版

目录1课程设计题目 (1)2. 课程设计任务及要求 (1)3. 总体方案与设计说明 (1)4. 硬件电路设计及描述 (3)5. 软件设计流程及描述 (6)6. 源程序代码 (8)7. 系统调试 (12)&结论与说明 (13)9 .课程设计体会 (13)10.参考文献 (13)一.课程设计题目加减计数器设计二.课程设计任务及要求通过键盘输入0到9之间的数字,可以在LED灯上显示出来;通过键盘进行简单的9之内的加减运算;运算过程和结果在LED灯上显示出来。

三.总体方案与设计说明3.1通过小键盘做加减运算。

七段数码管显示器作输入数据和结果数据的显示。

3.2数字用小键盘0~9, R, P, M G作功能键R 开始运算(包括撤销运算),显示‘ 0'P+m-g=E 退出返回dos3.3运算顺序:a. 输入一原始数据显示器跟随显示b. 按+或-显示器内容不变c. 再输入一数据,显示器跟随显示。

d. 按=显示器显示结果数据,当超出能显示的最大值,显示 F (溢出)e. 按R重新开始运算f. 按E,结束退出LED 显示器上。

设计思路:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序实现2位十 进制数以内的及减法运算。

运算完成后将运算的结果储存并显示到 四.硬件电路设计及描述(含所需器件、硬件原理图)4.1 硬件电路键盘输入及LED 数码管通过8255A 接口与系统总线连接,键盘的16个按键组成8*2矩 阵,其中8根矩阵线作为8255A 的输出线与PB& PBO 连接,2根矩阵线作为8255A 的输入 线与PC7 PC6连接。

键盘采用逐次扫描原理,16个按键中0〜9座位数字健,+、-、=作为 加、减和等号功能键,C 为清零键。

4.2 键盘输入模块键盘是常用信息输入元件, 其实键盘也是由一个个按钮组成, 如果是独立按钮的话必须 要需要一个 I/O 口对它进行检测, 而键盘往往这需要键盘按钮数一半的 I/O 口数对它进行检 测,也许对一个比较简单的系统 I/O 口数一般不是问题,但对于一个大型、复杂的系统来说 I/O 资源就显得非常珍贵了,尽量减少 I/O 使用是非常利于降低成本,另外一方面键盘比用 独立按键要美观。

微机原理课程设报告

微机原理课程设计设计报告一、设计目的1、对微机原理课程中所学的理论知识进行进一步巩固和加深。

2、学会查阅相关手册与资料,培养独立分析与解决问题的能力。

3、学会使用屏幕编辑程序—MASM对汇编程序的编写,调试和运行。

4、了解对系统中DOS和BIOS的使用,弄懂汇编程序的上机过程以及如何运用DEBUG软件进行汇编程序的调试。

二、设计内容本次为期一周的课程设计,主要编写调试了5个程序,题目如下:1、字符串匹配设计为掌握提示信息的设置方法及读取键入信息的方法。

编写程序实现两个字符串比较。

如相同,则显示“MATCH”,否则,则显示“NO MATCH”。

2、从键盘上输出数据并显示为掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理。

编写程序,将键盘接收到的四位十六进制数据转换为等值的二进制数,再显示在终端上。

3、字符和数据的显示设计为掌握字符和数据的显示方法,编写程序,先显示信息:INPUT STRING,THE END FLAG IS$,再接收字符。

如为0-9,则计数器加1,并显示数据;如为非数字,则直接显示,但不计数4、学生成绩名次表设计为进一步熟悉排序方法。

编写程序,将0-100之间的30个成绩存入首址为1000H的存储区中。

1000H+i表示学号为i的学生成绩。

编写程序使得在2000H 开始的区域排除名次表。

2000H+i为学号i的学生的名次。

三、具体设计程序设计一:字符串匹配设计为掌握提示信息的设置方法及读取键入信息的方法。

编写程序实现两个字符串比较。

如相同,则显示“MATCH”,否则,则显示“NO MATCH”。

流程图程序DATA SEGMENTDAT1 DB 'INPUT STRING1:','$' ;$保持当前地址DAT2 DB 'INPUT STRING2:','$'DAT3 DB 'MATCH!',0AH,0DH,'$' ;0DH为回车ASCII码,0AH为换行ASCII码DAT4 DB 'NOT MATCH!',0AH,0DH,'$'STRING1 DB 50 ;最长长度DB ? ;实际长度DB 50 DUP(?) ;存储空间STRING2 DB 50DB ?DB 50 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATA ;数据段设置MOV DS,AXMOV ES,AXMOV AH,09H ;字符串显示,显示DAT1,显示DS:DX MOV DX,OFFSET DAT1INT 21HMOV AH,0AH ;字符串缓冲输入,接收输入字符串MOV DX,OFFSET STRING1INT 21HMOV DL,0AH ;输出换行MOV AH,02HINT 21HMOV AH,09HMOV DX,OFFSET DAT2 ;显示DAT2INT 21HMOV AH,0AHMOV DX,OFFSET STRING2INT 21HMOV DL,0AH ;输出换行MOV AH,02HINT 21HLEA SI,STRING1 ;比较LEA DI,STRING2ADD SI,2 ;串1首字符[SI+2]ADD DI,2 ;串2首字符[DI+2]CLD ;DF=0MOV CX,50REPZ CMPSB ;CX≠0或ZF=1时重复,DS:SI和ES:DI所指的两个字节相同则继续比较,如果比较相等,ZF=1,则继续比较下一个字节,DI和SI分别加1(DF=0时),CX-1JZ MATCHNMATCH:MOV AH,09HMOV DX,OFFSET DAT4 ;输出不匹配INT 21HJMP NEXTMATCH: MOV AH,09HMOV DX,OFFSET DAT3 ;输出匹配INT 21HNEXT: MOV AH,4CHINT 21HCODE ENDSEND START小结在设计过程中,我把程序分成了宏定义显示回车,数据段定义,初始化,开始比较,匹配时再比较,不匹配时SI指向串1首字符,DI指向新字符重新开始比较等模块。

微机原理课程设计

课程设计任务书学生姓名:专业班级:指导教师:工作单位:自动化学院题目: 图形变换程序设计(要程序加扣扣二五九零其物流而肆意)初始条件:掌握8086汇编语言程序设计方法,设计一个图形变换显示程序。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 程序运行后,键盘输入不同进行不同处理:(1)输入‘Q’,显示‘Thank You !’并结束程序;(2)输入‘E’,显示一个用不同颜色填充且带有边框的矩形图案;输入‘F’,显示一个用不同颜色填充的圆形图案。

2. 撰写课程设计说明书。

内容包括:摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

时间安排:12月30日-----12月31日查阅资料及方案设计1月2日-----1月3日编程1月6日调试程序1月7日-----1月8日撰写课程设计报告指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要................................................................................................................................................. I 图形变换程序设计. (1)1 设计意义 (1)2 设计内容 (1)2.1程序的内容与要求 (1)2.2 程序运行条件 (1)3 方案设计 (1)3.1 设计思路 (1)3.1.1 显示字符程序 (1)3.1.2 显示圆形 (2)3.1.3 显示矩形 (2)3.2 程序流程图 (3)4 程序分解 (3)4.1 字符显示程序 (3)4.2 圆形显示程序 (3)4.3 矩形程序显示 (5)4.4 产生颜色的子程序 (6)4.5 屏幕初始化子程序 (6)5 运行结果显示 (6)5.1 矩形输出显示 (6)5.2 圆形输出显示 (7)5.3 字符串输出显示 (7)6 设计过程中的问题 (8)心得体会 (9)致谢 (10)参考文献 (11)附录 (10)成绩评定表 (11)摘要进入21世纪,信息社会发展的脚步越来越快,对人才的的需求也呈现新的变化趋势。

计算器-微机原理课设_武汉理工

目录摘要 (1)1.设计目的 (2)2.设计思想及主要功能 (3)2.1设计思想 (3)2.2实现的主要功能 (3)3.设计流程图 (4)3.1主程序流程图 (4)3.2子程序流程图 (5)4.程序代码 (7)5. 程序运行与调试 (12)5.1界面初始化 (12)5.2数据输入输出错误 (13)5.3加法运算 (14)5.4减法运算 (14)5.5乘法运算 (15)5.6除法运算 (15)7、设计总结体会 (18)8.参考文献 (19)摘要汇编语言是联系C等高级语言到机器语言的重要编程语言,其指令是机器指令的一种符号表示,具有很强的机器相关性;也正基于此,可以实现起执行效率的很大提高。

此次课程设计使学生加深对所学的微机原理知识的理解,培养学生的专业素质,提高其利用微机原理知识处理问题的能力,为今后专业课程的学习、毕业设计和工作打下良好的基础。

使学生能比较扎实地掌握微机原理的基础知识和基本理论,掌握控制系统及有关设备的分析、开发等基本技能,受到必要工程训练、初步的科学研究方法训练和实践锻练,增强分析问题和解决问题的能力,了解微机原理和接口技术的新发展。

本次课设是基于汇编语言的计算器设计,通过编写相应的程序代码实现一个简单计算器设计。

其能够实现实现10进制整数的加减乘除计算,通过键盘输入两个数据及选择运算符,回车输出10进制的结果。

关键词:计算器汇编语言 10进制计算器的设计1.设计目的汇编语言是计算机能够提供给用户使用的最快而又最有效的语言。

同时,汇编语言也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

因而,对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。

至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可。

由于汇编语言如此地接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。

用汇编语言编写的程序速度通常要比高级语言快几倍、几十倍、甚至成百上千倍,解释语言其程序速度更无法与汇编语言程序同日而语。

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

目录摘要............................................................... 11 实验任务......................................................... 21.1 实验题目..................................................... 21.2 要求:....................................................... 22题目分析及方案选择............................................... 23方案流程图....................................................... 33.1 方案分析..................................................... 33.2 流程图....................................................... 44.程序设计及分析................................................... 64.1 输入程序..................................................... 64.2 求数字累加之和程序........................................... 84.3 输出程序................................................... 105.运行结果及分析................................................. 116 心得体会....................................................... 127 参考文献....................................................... 13附录............................................................. 14摘要最近几十年,随着电子计算机的诞生和高速发展,社会和科技提到了前所未有的高度。

计算机技术的发展所带来的信息技术的飞速发展,给人类社会带来了进步,给人们的生活生产发生了巨大深刻的变化。

微机技术,在计算机发展过程中发挥了重要的作用。

计算机在保持速度和性能的基础上,使得机器更加小巧。

典型代表是PC机普及到各行各业的各个领域。

而在工程领域,在微机基础上使用汇编语言程序可以基本地实现计算机控制工程的运行状况。

同时可以实现自动的检验计算机从系统中采集的信息以判断系统是否处于稳定的工作状态并发出命令进行调试。

从而实现采集信息,辨别信息,执行命令一体化,形成多功能的控制终端。

作为电气工程自动化的学生,微机原理是我们的专业课,学好和灵活应用微机技术对我们来说有着十分重要的意义。

学习了微机原理和接口技术,对微机有了初步的了解。

学习结束后,为提高和巩固专业知识,我们进行了微机原理课程设计,程序设计是指为计算机编写能够接受并执行、且具有实际意义的语句序列。

汇编语言程序设计就是运用汇编语言进行程序设计。

汇编语言程序设计有以下几种结构形式,有顺序结构,分支结构,循环结构,子程序调用个,系统功能调用等。

根据结果要就需进行合理的选择才能建立正确的程序,子并且画出流程图进而完成题目任务。

关键词:微机汇编程序流程图1 实验任务1.1 实验题目数字求和汇编语言程序设计1.2 要求:(1)屏幕提示输入一个数字N(2位数);(2)计算S=1+2+3+…+N的和并输出求和结果S;(3)可连续输入数字进行计算,直至单击“Q”或“q”键退出程序。

2题目分析及方案选择本次课设是在键盘中输入一个1到99的数,然后求出其累加之和,并显示出来。

显然,在设计汇编程序过程中,程序代码要包括输入提示语句、求数字累加之和、将结果输出三个部分。

考虑到我们用到的是16为汇编语言,而且寄存器有限,本题在编程序过程中会比较麻烦。

在进行课设之前,思路如下:图1思路流程图所以,开始编程序前做出了两个方案。

方案一:由于本题要求是输入一个数,然后算出累加结果,我们可以先输入的值n 后,通过累加算出从1加到n的值。

此种方案程序计算量大,但程序简单。

方案二:在启动程序后,先将1到99的累加之和算出来,此处设为值A1,存在一定的位置,当得到输入n的之后,通过计算算出n到99的累加之和,此处设为值A2再通过A1减去A2得出加之和。

此种方案计算量小,但程序复杂。

两种方案都可行,经过思考,由于我们需要重复进行输入输出操作,程序可重复利用,让程序简单易懂且程序小运行快,我们选择第一种方案。

3方案流程图3.1 方案分析1、由于我们所选的方案是要将1到n的阶数之和给求出来,所以,我们需要先在汇编程序代码中实现可输入功能,即人机交互模式。

这要求程序代码中有输入提示部分的程序。

2、由于n是介于1到99之间的数,那么我们程序必须可以判断输入的n 是否超出了计算范围,这就要求我们的程序中有一部分可以判断n是否处于计算范围内,且在超出范围时输入界面提醒用户输入错误。

3、由于题目要求可连续输入,那么程序必须可以做到键入退出按键才能实现退出功能,否则视为继续输入计算。

这就需要程序中设定退出功能以及可重复工作功能,实现用户使用时简单且方便。

而在设置错误判断部分我们又有两种方案:① 、通过累加求和后判断结果是否大于4050或者小于55.因为10加到n(10<n<99)的结果为55到4050之间,如果结果结果大于4050或者小于55那么则说明n的输入范围错误。

②、通过直接判定n是否处于10到99之间判定错误。

而第一种方案需要占用的内存较大,且可使用的程序指令复杂,较少,不灵活。

造成整体程序的设计工作量大,容易出现逻辑错误。

而使用第二种方案主要原理为采用变量偏移地址内存进行比较判定是否出错。

我们采用第二种方案。

3.2 流程图根据所设计好的方案和计划,设计出流程图。

输入流程图如下:图 2 输出流程图要求能够连续的输入数据进行计算,在此循环跳转。

对输入数据进行了判断,符合要就在10~99内则进行计算,并在屏幕上显示出计算结果,不在此范围内的输入报错,若为Q或q则直接退出程序,结束任务。

图3主程序流程图图4输出流程图设计好流程图后,成功将程序的过程理清楚,给程序设计和调试带来了方便。

4.程序设计及分析4.1 输入程序根据报告要求和设计的方案需要,设计了输入10到99的累加和程序段,并且判断是否出错的程序段,程序如下如下:lea dx,message ;输入提示语句mov ah,09hint 21hmov ah,07hint 21hcmp al,'Q' ;判定是否为Qje exit ;若是Q执行跳转cmp al,'q' ;判定是否为qje exit ;若是q执行跳转lea dx,inputmov ah,09hint 21hmov bl,0ffhmov ibuf+5,bl ;将ibuf里第三位数置为0ffhlea dx,ibufmov ah,0ahint 21hmov si,dxmov bl,[si+5]cmp bl,0ffh ;与第三位进行比较判断是否有三位存在jne error ;判定是否出错mov bl,[si+2] ;判定输入是否为小于10的数cmp bl,30h ;十位跟零比较jna error ;小于等于0就跳到错误cmp bl,3ah ;大于9就会错误jnb errormov bl,[si+3] ;个位跟零比较cmp bl,2fh ;小于0就错误jna errorcmp bl,3ahjnb errorjmp correcterror:lea dx,ERROR_MESS ;出错提示int 21hjmp startexit: mov ah,4chint 21h此段程序主要是将输入的数字移动到ibuf这个变量里然后进行判断输入的数字是否在允许计算范围内。

si+5表示第三位,si+2表示第一位,si+3表示第二位,分别与这三位进行比较判定是否错误。

4.2 求数字累加之和程序为求累加求和,设计了一下代码段:correct:mov cl,ibuf+1xor ch,chmov si,offset ibuf+2mov ax,0 ;循环运算前的初始化again: ; (((0*10 * a0)*10 + a1)*10 + a2)mov dx,10mul dx ;在做乘法的过程中不用考虑dx,因为输入的数为0~99,所以dx总是为0mov bl,byte ptr [si] ;取出该字符的ASCLL码sub bl,30h ;将其减去30H得到数值add al,bladc ah,0 ;在做加法是要考虑是否有进位inc siloop againmov cx,axmov ax,0loop2: add ax,bxinc bxloop loop2;这个循环就实现了sum = 1 + 2 + ... + n的操作了mov bx,offset obuf+7mov byte ptr [bx],'$';将最后一个字节赋值为'$'以便将数字字符串输出出来。

mov cx,10jmp loop1loop1 : mov dx,0div cx ;(ax <- ax/10) ax 中存放的是商,汇编中16进制就可以当做10进制来运算add dl,30h ; dl中存放的是余数dec bx ;将指针前移一个字节mov [bx],dl ;将余数放在字符串的末尾or ax,ax ;当ax为0时结束jnz loop1 ;当ZF==0时跳转,jump not zerodec bxmov byte ptr [bx],0dhdec bxmov byte ptr [bx],0ah ;在字符串的前面加上回车换行。

此部分主要为计算1加到n的算法程序,而程序解释已写入代码中。

4.3 输出程序根据题目的要求,设计一下输出程序,程序段如下:lea dx,output ;输出提示mov ah,09hint 21hmov dx,bxmov ah,09hint 21h ;显示字符串bxjmp start而为了进行可连续重复计算所以最后加入jmp start指令。

5.运行结果及分析将设计好的程序放在MFPCI98中运行,得到结果,满足任务书上的要求。

相关文档
最新文档