微机原理程序设计
微机原理分支程序设计实验
微机原理分支程序设计实验微机原理是计算机科学与技术专业的核心课程之一、在这门课程中,学生需要学习计算机的基本原理和体系结构,并通过实验来巩固所学的知识。
本文将介绍一个关于分支程序设计的微机原理实验。
实验背景:分支程序是计算机中的一种非线性控制结构,它根据条件的不同选择不同的执行路径。
分支程序设计是计算机编程中非常重要的一部分,也是实际应用中经常会遇到的情况之一、通过这个实验,学生将学会如何使用分支结构来解决实际问题。
实验目的:1.了解分支程序设计的基本概念和原理。
2.掌握使用条件语句和循环语句来实现分支程序。
3.通过实际案例分析和编程实践,巩固所学的知识。
实验内容:本实验以学生成绩管理系统为例,通过判断学生的成绩等级来计算总评成绩,并输出等级信息。
分支程序设计的思路如下:1.输入学生的成绩。
2.根据成绩的范围判断学生的等级。
3.根据等级计算总评成绩。
4.根据总评成绩输出相应的等级信息。
实验步骤:1.在开发环境中创建一个新的项目,并新建一个名为“GradeManage”的源文件。
2.在源文件中定义一个成绩变量和一个等级变量,并使用输入函数从键盘读取学生的成绩。
3.使用条件语句根据成绩的范围判断学生的等级,并将等级赋值给等级变量。
4.使用条件语句根据等级计算总评成绩,并将结果赋值给一个总评成绩变量。
5.使用条件语句根据总评成绩输出相应的等级信息。
6.在屏幕上显示输出结果。
7.编译并运行程序,进行测试。
实验总结:通过本实验,我学会了如何设计并实现一个简单的分支程序。
在实验过程中,我深入了解了分支结构的原理和使用方法,并通过编程实践巩固了所学的知识。
分支程序设计在实际应用中非常广泛,掌握这一技能对于计算机科学与技术专业的学生来说非常重要。
在今后的学习和工作中,我将继续探索和学习更多关于分支程序设计和其他相关知识,以提高自己的编程能力。
微机原理第八章微型计算机的程序设计 ppt课件
mov ax, data
mov ds, ax
MOV AL, BYTE PTR W1
;AL=31H (+78H)
ADD AL, BYTE PTR W2 ;AL=A9H, CF=0,AF=0
DAA ;BCD数加法调整指令; AL=09H, CF=1
MOV SUM, AL
MOV AL, BYTE PTR W1+1 ; AL=89H (+56H)
MOV SUM, AL ;(SUM)=06H
MOV AL,AH; AL=09H
ADD AL, BYTE PTR W2+1 ; AL=09H+06H=0FH,属于第1种情况
MOV AH, 0
此句也可表达为MOV [SUM], AL; 见P151
AAA ; AL=05H, AH=01H
;第一种情况处理:AL=(AL+06H)&0FH, 因0FH+06H=15H,故 AL=05H,AH=AH+1=0+1=01H,所以AX=0105H
• W1
DW 8931H
• W2
DW 5678H
• SUM DB 3 DUP(0)
• data ends
• code segment
begin proc far
assume ss: stack, cs: code, ds:data
push ds
sub ax, ax
push ax
2020/9/18
10
2020/9/18
8
微机原理第八章微型计算机的程
序设计
AAA-----两个非压缩BCD数相加调 整指令
若(AL&0FH)>9或AF=1,则(AL+6)&0FH送AL,AH 加1且CF置1;
微机原理及程序设计
微机原理及程序设计微机原理及程序设计是一门结合了计算机硬件基础和软件编程技能的课程,它对于理解现代计算机系统的工作方式至关重要。
本课程旨在教授学生微机的基本组成原理、指令系统、存储结构以及程序设计的基本方法。
微机原理概述微机,即微型计算机,是一种体积小、价格低廉、功能相对单一的计算机系统。
它们广泛应用于个人计算、嵌入式系统、工业控制等领域。
1. 微机的基本组成:微机主要由中央处理器(CPU)、存储器、输入输出设备(I/O)等部分组成。
2. 中央处理器:CPU是微机的核心,负责执行程序指令。
它包括算术逻辑单元(ALU)、控制单元(CU)和寄存器组。
3. 存储器:存储器用于存储程序和数据。
主要分为随机存取存储器(RAM)和只读存储器(ROM)。
4. 输入输出设备:包括键盘、鼠标、显示器、打印机等,用于与用户进行交互。
指令系统与寻址方式1. 指令系统:是CPU可以执行的所有指令的集合。
指令系统的设计直接影响到微机的性能和功能。
2. 寻址方式:是CPU访问存储器中数据的方法。
常见的寻址方式包括直接寻址、间接寻址、基址寻址等。
存储结构1. 存储器的层次结构:通常包括高速缓存(Cache)、主存和辅助存储器。
2. 存储管理:涉及虚拟存储技术、内存分配和回收等。
程序设计基础1. 程序设计语言:包括汇编语言、高级语言等。
汇编语言与机器指令直接对应,而高级语言则更为抽象,易于编写和理解。
2. 程序结构:程序通常由数据定义、指令序列和控制结构组成。
3. 算法与数据结构:算法是解决问题的步骤,而数据结构是组织数据的方式。
程序设计方法1. 模块化设计:将程序分解为多个模块,每个模块完成特定的功能,易于管理和维护。
2. 面向对象编程:以对象和类为基础,强调数据和功能的封装、继承和多态性。
3. 程序调试:使用调试工具来查找和修复程序中的错误。
微机接口技术1. 总线接口:连接微机内部各部件的通信线路。
2. 外设接口:如串行接口、并行接口、USB接口等,用于连接外部设备。
微机原理简单程序设计实验流程图
微机原理简单程序设计实验流程图下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 实验目的:了解微机原理和程序设计的基本概念。
掌握使用汇编语言或高级语言进行程序设计的方法。
微机原理_汇编语言程序设计
汇编语言
汇编语言源程序
高级语言
面向算法、过程、对象,类似自然语言,可移植性 好,须经解释或翻译后才能被执行
程序设计的步骤和方法
程序设计的步骤 程序设计的方法 常用伪指令 汇编语言格式汇编言格式 指令格式:
标号:助记符 参数,参数;注释 名字 定义符 参数,…,参数;注释
伪指令格式:
转移指令和分支程序
控制转移类指令
无条件转移指令 条件转移指令 比较转移指令 循环转移指令 用cjne实现三分支 用 jmp @A+DPTR 实现多分支
分支程序
循环程序
循环程序结构 单循环程序
例1:多字节求和 例2:内部数据区清零
例3:50ms延时程序
微机原理及应用
MCS-51单片机
第七章 汇编语言程序设计
程序设计语言简介 程序设计的步骤和方法 转移指令和分支程序 循环程序 子程序及其调用 程序设计举例
程序设计语言简介
机器语言
计算机唯一能够识别和执行的语言 “符号语言”,用指令助记符代表机器语言指令 汇编
机器语言目标程序
• ASCII码二进制
• 以DPTR为指针 • 地址偏移量表 • 转向地址表
查表程序
• 以PC为指针
散转程序
• 转移指令表
多重循环程序
子程序及其调用
子程序调用与返回指令 子程序设计方法 子程序的调用过程与子程序嵌套 调用过程中的参数传递
通过寄存器传递 通过堆栈传递 通过数据指针(DPTR)传递
程序设计举例
算术运算程序
• 多字节加法 •多字节BCD码减法
微机原理 程序设计方法
入口参数:DX存放待转换的二进制数 CX存放待转换数的位数(8位或16位) DI存放ASCII码首地址 出口参数:转换后的字符串存放在以DI作指针的字节存贮区中 程序如下:
STACK SEGMENT STACK DB 200 DUP(0)
STACK ENDS
DATA SEGMENT
NUM8 DB NUM16 DW ASCBUF DB
93H 0ABCDH 20 DUP(0)
DATA ENDS
CODE START:
SEGMENT
ASSUME DS:DATA,CS:CODE, SS:STACK
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV DX,0
MOV DL,NUM8
;转换二进制数送DX
则,顺序执行。 说明:使用LOOP指令可代替两条指令:
DEC CX JNE 短标号
⑵.相等/为零循环指令LOOPE 语句格式:① LOOPE 短标号 ② LOOPZ 短标号 功能:(CX)-1 ≠0且ZF=1,则程序转移(循环);
否则,顺序执行。
⑶.不相等/不为零循环指令LOOPNE 语句格式:① LOOPNE 短标号
开始 X→AL AL×AL→AX AX-50→AX AX→Y 结束
【例】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序 排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放 在变量E中。编写程序如下:
DATA SEGMENT
TAB DB 80,85,86,71,79,96
DB 83,56,32,66,78,84
21H
MOV DX,NUM16
MOV CX,16 ;置位数16
微机原理微型计算机的程序设计
2024/9/30
43
例6.2
将内存(10050)单元旳内容拆成两段,每段4位,并将它 们分别 存入内存(10051)和(10052)单元。即(10050) 单 元 中 旳 低 4 位 放 入 ( 10051 ) 单 元 中 旳 低 4 位 , 而 (10050)单元中旳高4位放入(10052)单元中旳低4位。
INT 21H
2024/9/30
42
作业8.17 编写求输入算式’加数1+加数2’旳和并送显。
(加数及其和均为4位(即指压缩)BCD数,P262)
分析:要求先有屏幕显示输出‘加数1+加 数2:’,然后从键盘输入两个4个字节旳 BCD数,加完后送显。
用到旳变量:W1和W2因为从键盘输入,均 不拟定是几位十进制,故需拟定其最大位 数不超出要用
2024/9/30
12
MOV AX, W1
;AX=0809H,W2为0607H
ADD AL, BYTE PTR W2 ;AL=10H, CF=0,AF=1
AAA ; 属于第一种情况,故
; AL为(AL+06H)&0FH=10H+06H )&0FH
;
=16H&0FH=06H=AL;
;AH加1且CF置CF=1,所以AH=08H+1=09H,则AX=0906H
2024/9/30
34
2024/9/30
35
2024/9/30
36
2024/9/30
37
2024/9/30
38
作业8.4 编写求两个4位非压缩BCD数之和,
将和送显示屏显示旳程序。(P261)
分析:两加数各要4个字节单元,可觉得DD 类型;考虑到进位,和要5个字节单元,另 外,输出到显示器旳结束符号’$’需要一 个单元存放,故共需6个字节。 所以,数据段定义为:
微机原理课程设计
微机原理 课程设计一、课程目标知识目标:1. 让学生理解微机的基本原理和结构,掌握微处理器的工作机制。
2. 使学生掌握汇编语言的基本指令,能够阅读和编写简单的汇编程序。
3. 帮助学生了解微机系统中内存、I/O设备的基本原理及其与CPU的交互方式。
技能目标:1. 培养学生运用汇编语言进行程序设计的能力,能够实现基本的输入输出、逻辑判断和循环等操作。
2. 培养学生分析和解决微机系统常见问题的能力,如调试程序、处理硬件故障等。
3. 提高学生动手实践能力,通过课程设计项目,使学生能够独立完成一个简单的微机系统设计与实现。
情感态度价值观目标:1. 培养学生对微机原理及计算机科学的兴趣,激发他们探索精神和技术创新意识。
2. 培养学生团队协作精神,学会与他人共同分析问题、解决问题,提高沟通能力。
3. 引导学生认识到微机技术在国家经济发展和国防建设中的重要作用,增强学生的社会责任感和使命感。
课程性质:本课程为理论与实践相结合的课程,注重培养学生的实际操作能力和实际应用能力。
学生特点:学生已具备一定的电子技术和计算机基础知识,对微机原理有一定了解,但缺乏实践经验。
教学要求:教师需结合课程性质、学生特点,采用案例教学、项目驱动等教学方法,引导学生主动学习,提高学生的实践能力和综合素质。
在教学过程中,注重分解课程目标,确保学生能够达到预定的学习成果。
二、教学内容1. 微机原理概述:介绍微机的发展历程、基本结构及工作原理,重点讲解CPU、内存、I/O设备等核心组件的作用和相互关系。
相关教材章节:第一章 微机原理概述2. 汇编语言基础:讲解汇编语言的基本概念、语法和指令系统,使学生掌握汇编程序的编写和调试方法。
相关教材章节:第二章 汇编语言基础3. 微机系统编程:学习微机系统中的程序设计方法,包括顺序程序设计、分支程序设计、循环程序设计等。
相关教材章节:第三章 微机系统编程4. 内存与I/O设备:介绍内存管理、I/O设备控制原理,分析微机系统中内存、I/O设备的访问方法。
微机原理第五章 程序设计-dsh
INT
COSEG
21H
ENDS END START
第三节 分支程序
计算机可根据不同条件进行逻辑判断,从而选择不同 的程序流向。程序的流向是由 CS和 IP决定的,当程序 的转移仅在同一段内进行时,只需修改偏移地址 IP的 值;如果程序的转移是在不同的段之间进行,则段基 址 CS和偏移地址 IP均需要修改。 转移指令分为无条件转移指令和条件转移指令。 在进行分支程序设计时,首先要根据处理的问题用比 较、测试的方式,或者用算术运算、逻辑运算使标志 寄存器产生相应的标志位,根据转移条件选择转移指 令。
INC INC DEC JNZ
BX BX CX LOP ; ;控制部分
修改部分
MOV YY,AX MOV AH,4CH INT CODE ENDS 21H
END
START
一.循环的基本结构
1.先执行,后判断结构
流程图如右:
入口
初始化部分
循环体
修改部分
N
循环 结束? Y 出口
例2. 编程统计数据块中正数的个数,
Y
RS END (DX)
DATA
SEGMENT
D1
COUNT RS DATA CODE
DB,-1,-3,5,7,-9,·,-6 · ·
EQU DW ENDS SEGMENT ASSUME CS:CODE,DS:DATA $-D1 ?
START:
MOV
AX,DATA
MOV
MOV MOV MOV
DS,AX
JMP JUS2
BIGD: JG JUS1 ;x>0转移 ;x=0
MOV AL, 0
JMP
JUS1: JUS2:
JUS2
微机原理课程设计 完整版
微机原理课程设计题目基于8086的电子称设计指导教师姓名学号王华民************姓名学号赵儒桐************姓名学号孙敬周************专业11级电子信息工程教学单位物理与电子信息学院(盖章)二O一三年六月二十二日目录摘要及关键字 (1)1绪论 (1)2 总体设计及其框图 (1)2.1 电阻应变式传感器 (1)2.2 信号放大模块 (2)2.3重量显示及其控制模块 (2)3 硬件电路设计 (2)3.1数据采集电路 (2)3.2 放大校正电路 (3)3.3 ADC0809与8255的连接 (3)3.4 8086的可编程外设接口电路 (4)3.5 数据显示部分 (5)3.6 系统硬件原理图 (6)4系统软件流程图 (7)5总结 (8)参考文献 (8)基于8086电子称设计摘要本文介绍了一种基于8086微处理器的电子称系统,采用电子称传感器采集数据,用CPU控制重量值稳定在预设重量:当重量高于预设重量值时报警。
系统操作简便、自动化程度高、扩展方便且具有良好的人机交互的能力。
该系统通过实验,取得了较为满意的控制效果,可应用在一些精度要求不太高的系统中。
为了降低整个系统的成本,在满足性能的要求下,选择低成本器件,简化系统设计。
关键词微处理器;电阻应变式传感器;A/D转换器;控制系统一.绪论随着电子技术的发展,特别是大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么微型计算机控制技术的出现则是给现代工业控制测控领域带来了一次新的革命。
目前,微处理器8086在工业控制系统诸多领域得到了广泛的应用,由于它具有极好的稳定性,更快和更准确的运算精度。
当前,微机测控系统的发展非常迅速,应用也极为广泛,它由于体积小、功能强、性能稳定、价格低廉等优点,使其在工业控制系统诸多领域得到了极为广泛的应用。
在此基础上发展起来的智能仪器无论是在测量的准确度、灵敏度、可靠性、自动化程度、应用功能等方面或在解决测试技术问题的深度及广度方面都有了巨大的发展,以一种崭新的面貌展现在人们的面前。
微机原理软件实验报告
实验名称:汇编语言程序设计实验日期:2023年3月10日实验地点:计算机实验室实验者:张三一、实验目的1. 熟悉汇编语言的基本语法和指令系统。
2. 掌握汇编语言程序设计的基本方法。
3. 通过实验,加深对微机原理的理解。
二、实验内容本次实验主要涉及以下内容:1. 数据传送指令的应用2. 算术运算指令的应用3. 控制转移指令的应用4. 子程序设计三、实验步骤1. 编写一个简单的程序,实现以下功能:(1)将数据0x1234存入寄存器AX;(2)将数据0x5678存入寄存器BX;(3)计算AX和BX的乘积,并将结果存入寄存器DX;(4)将乘积的高16位和低16位分别存入寄存器CX和AX。
2. 编写一个程序,实现以下功能:(1)将数据0x1A2B3C4D存入内存单元[0x1000];(2)从内存单元[0x1000]开始,读取连续4个字节的数据;3. 编写一个程序,实现以下功能:(1)定义一个子程序,实现两个整数的加法运算;(2)在主程序中调用该子程序,实现两个整数的加法运算。
四、实验结果与分析1. 数据传送指令的应用(1)将数据0x1234存入寄存器AX;MOV AX, 0x1234(2)将数据0x5678存入寄存器BX;MOV BX, 0x5678(3)计算AX和BX的乘积,并将结果存入寄存器DX;MUL BX(4)将乘积的高16位和低16位分别存入寄存器CX和AX; MOV CX, DXMOV AX, DX2. 算术运算指令的应用(1)将数据0x1A2B3C4D存入内存单元[0x1000];MOV [0x1000], 0x1A2B3C4D(2)从内存单元[0x1000]开始,读取连续4个字节的数据; MOV AX, [0x1000]MOV BX, [0x1000+2]MOV CX, [0x1000+4]MOV DX, [0x1000+6]MOV AH, 0x0EINT 0x103. 控制转移指令的应用(1)定义一个子程序,实现两个整数的加法运算;ADD procedure:ADD AX, BXRET(2)在主程序中调用该子程序,实现两个整数的加法运算;MOV AX, 0x1MOV BX, 0x2CALL ADDMOV CX, AX五、实验心得通过本次实验,我深刻理解了汇编语言的基本语法和指令系统,掌握了汇编语言程序设计的基本方法。
微机原理课程设计电风扇程序设计
微机原理课程设计电风扇程序设计在微机原理课程设计中,电风扇程序设计是一项关键任务。
电风扇作为一种常见的家用电器,其控制程序的设计对于实现风速调节、温度控制等功能至关重要。
本文将针对微机原理课程设计中的电风扇程序进行详细讲解。
一、概述电风扇程序设计的目标是实现电风扇的风速调节和温度控制功能。
电风扇通常由电机、温度传感器、控制电路等组成。
通过合理的程序设计,可以实现对电机的速度控制以及通过温度传感器实时监测室内温度,并根据设定的温度范围调节风扇的运行状态。
二、程序设计流程1. 初始化在程序开始时,需要对相关硬件进行初始化。
包括初始化电机控制引脚、温度传感器引脚等。
同时,还需要设置初始的风速和温度参数。
2. 读取温度通过温度传感器获取室内温度数据。
通过相应的接口和控制指令,可以将温度传感器获取到的数据读入到微控制器。
3. 温度判断根据读取到的温度数据,判断是否需要调节电风扇的运行状态。
比如当室内温度超过设定的阈值时,需要启动电风扇的运行;当室内温度降低到一定程度时,需要停止电风扇的运行。
4. 风速调节根据温度判断的结果,选择合适的风速级别。
可以通过控制电机的转速和工作时间来实现不同的风速。
例如,当温度较高时,可以选择较高的风速级别,而当温度降低时,则可以选择较低的风速级别。
5. 程序循环以上步骤需要循环执行。
通过循环判断和实时监测温度,可以持续地对电风扇的运行状态进行调节,从而实现温度控制的目标。
三、程序设计要点1. 硬件接口设计在进行电风扇程序设计时,需要合理设计硬件接口,包括与电机的连接方式、温度传感器的引脚分配等。
合理的硬件接口设计可以简化程序设计的复杂性,提高程序的可靠性和稳定性。
2. 温度阈值设定根据实际需求,合理设定温度阈值。
阈值的选择应根据环境和电风扇的特性来确定,以实现较为精确的温度控制。
3. 风速级别划分根据电风扇的设计特性和风速控制要求,合理划分风速级别。
根据需求调整电机的转速和工作时间,以实现不同的风速效果。
微机原理:顺序、分支、循环、子程序设计
[公司名称]实验二顺序、分支、循环、子程序设计微机原理上机实验JonMMx 2000[日期]预习报告零、相关知识1,LEA指令和MOV指令的区别一、顺序结构计算m*n-w,最终结果保存在AX其中m=12, n=12, w=4最终结果为AX=008CH=140Dname "sequence strcture"org 100hMOV AX, 1000HMOV DS, AXMOV SI, 1000HMOV [SI], 12MOV [SI+1], 12MOV [SI+2], 4MOV AL, [SI]MOV BL, [SI+1]MUL BLMOV BX, 0MOV BL, [SI+2]SUB AX, BXHLT二、分支结构在DS数据段偏移地址为DATA开始的顺序80个单元中,存放着某班80个同学的微机原理考试成绩。
现欲编程序统计>=90、89~70、69~60和<60分的人数,并将统计的结果存放在当前数据段偏移地址为BUFFER的顺序单元中name “branch structure”START:MOV DX, 0000HMOV BX, 0000HMOV CX, 80LEA SI, DATALEA DI, BUFFERGOON:MOV AL, [SI]CMP AL, 90JC NEXT3INC DHJMP STORNEXT3:CMP AL, 70JC NEXT5INC DLJMP STOR NEXT5:CMP AL, 60JC NEXT7INC BHJMP STOR NEXT7:INC BL STOR:INC SILOOP GOON MOV [DI], DH MOV [DI+1], DL MOV [DI+2], BH MOV [DI+3], BL HLT三、循环结构在DS所决定的数据段,从偏移地址BUFFER开始顺序存放100个无符号16位数。
现欲编程序将这100个数按大小顺序排序(以下程序使用的是快速排序算法,也可以使用冒泡排序,嵌套两层循环)name “circle structure”LEA DI, BUFFERMOV BL, 99NEXT0:MOV SI, DIMOV CL, BLNEXT3:MOV AX, [SI]ADD, SI, 2CMP AX, [SI]JNC NEXT 5MOV DX, [SI]MOV [SI-2], DXMOV [SI], AXNEXT5:DEC CLJNZ NEXT3DEC BLJNZ NEXT0HLT四、子程序编写程序,完成将一组BCD数转换成16位二进制数。
微机原理实验(循环程序设计)
教
师
评
阅
教师签字年月日
备注:1.文件名命名方式为:学号+姓名+实验序号.DOC
2.将文件按附件形式添加后提交
DATA SEGMENT
DB 06H,12H,88H,82H,90H,22H,33H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV DI,0000H
MOV CL,[DI]
XOR CH,CH
MOV BL,CH
INC DI
A0: MOV AL,[DI]
TEST AL,80H
JE A2
INC BL
A2: INC DI
LOOPA0
MOV [DI],BL
MOV AX,4C00H
INT 21H
CODE ENDS
END START
实
验
步
骤
(1)用编辑软件如:EDIT,输入源程序,并保存,后缀名为.ASM。
-U ;先用反汇编来查看源程序装入的地址和数据段的地址
:
-G=xxxx:xxxx;从程序装入的地址处,开始运行程序
(5)查看实验结果。
(6)也可使用EMU8086软件进行调试
骤
实
验
分
析
与
总
结
1.通过实验掌握了宏汇编命令的基本格式及对循环结构的理解。
2.熟悉并掌握了循环结构程序设计的方法。
2.求某数据区内负数的个数。
设数据区的第一个单元存放数据的个数,从第二个单元开始存放数据,在最后一个单元存放结果。
微机原理 第4章 循环与分支程序设计
循环程序设计
循环程序的结构形式 循环初始状态 循环初始状态
循环控制条件
N
循环体
Y 循环体 N
循环控制条件
Y
第4章 循环与分支程序设计
循环程序设计方法 【例1】 试编制一个程序把BX寄存器内的二进制数用十六 进制数的形式在屏幕上显示出来。 1. 如何将二进制数转换为十六进制数?
第4章 循环与分支程序设计
循环程序设计方法 【例3】 在附加段中,有一个首地址为LIST和未经排序的 字数组。在数组的第一个字中,存放着该数组的长度,数 组的首地址已存放在DI寄存器中,AX寄存器中存放着一个 数。要求编制一程序:在数组中查找该数,如果找到此数, 则把它从数组中删除。
第4章 循环与分支程序设计
Z4 = X4 – Y4
结果存入Z数组。
第4章 循环与分支程序设计
【例 5】 解题思路
此题实际上是求10个型如 X ± Y 的表达式的值,最后将
存入相应的Z单元中。
1. 为简化操作,利用表达式的特点,可使用循环;
2. 关键的问题显然是如何确定加法或减法;
3. 同时注意到X、Y和Z的下标相同,可用同一个变量或
【例 2】 程序清单
循环与分支程序设计
mov cx, 0 repeat : test ax, 0FFFFH jz exit jns shift inc cx shift : shl ax, 1 jmp repeat exit : mov COUNT, cx main endp program ends end start
【例 5】 程序清单
第4章 循环与分支程序设计
循环程序设计方法 【例6】 试编制一程序:从键盘输入一行字符,要求第一个键 入的字符必须是空格符,如不是,则退出程序;如是,则开始 接收键入的字符并顺序存放在首地址为BUFFER的缓冲区(空 格符不存入),直到接收到第二个空格符时退出程序。
微机原理十进制减法实验程序
微机原理十进制减法实验程序一、十进制数相减程序设计实验DATA SEGMENTDATA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)MES1 DB '-','$'MES2 DB '=','$'DATA ENDSSTACK SEGMENT ;堆栈段STA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1MOV BX,05CALL DISPL ;显示被减数MOV AH,09HLEA DX,MES1INT 21HMOV SI,OFFSET DATA2MOV BX,05 ;显示减数CALL DISPLMOV AH,09HLEA DX,MES2INT 21HMOV SI,OFFSET DATA1MOV DI,OFFSET DATA2CALL SUBA ;减法运算MOV SI,OFFSET DATA1MOV BX,05 ;显示结果CALL DISPLMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HINT 21HMOV AX,4C00HINT 21HDISPL PROC NEAR ;显示子功能DSI: MOV AH,02MOV DL,[SI+BX-1] ;显示字符串中一字符INT 21HDEC BX ;修改偏移量JNZ DSIRETDISPL ENDPSUBA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05SU1: SUB BYTE PTR[SI+BX-1],30HSUB BYTE PTR[DI+BX-1],30HDEC BX ;将ASCII 码表示的数字串 JNZ SU1 ;转化为十六进制的数字串 MOV SI,DXMOV DI,BPMOV CX,05 ;包括进位,共5位CLC ;清进单位SU2: MOV AL,[SI]MOV BL,[DI]SBB AL,BL ;带进位相减AAS ;非组合BCD码的减法调整 MOV [SI],AL ;结果送被减数区INC SIINC DI ;指向下一位LOOP SU2 ;循环MOV SI,DXMOV DI,BPMOV BX,05SU3: ADD BYTE PTR [SI+BX-1],30HADD BYTE PTR [DI+BX-1],30HDEC BX ;十六进制的数字串转化ASCII码表示的数字串 JNZ SU3 RETSUBA ENDPCODE ENDSEND START二、十进制数排序程序设计实验;;;;;功能:冒泡排序服务程序;;;;;;DATA SEGMENTWORD DB 'Input numbers:',0DH,0AH,'$'BUF DB 100 DUP('$')DATA1 DB 0DH,0AH,'The result is:',0DH,0AH,'$' COUNT DB 0 DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:;;;;;;;;;;;;;;初始化;;;;;;;;;;;;;MOV AX,DATAMOV DS,AXLEA DX,WORDMOV AH,09HINT 21HLEA DX,BUFMOV AH,0AH ;输入字符到缓冲区INT 21H ;输入数据(0~99),每个数据空格隔开;;;;;;功能:计算键入数字个数;;;;;;;;;;;;;H1: MOV AL,DI[BUF+2]CMP AL,' ' ;是否为空格JNZ H2INC [COUNT] ;有数字,数量+1JMP H3H2: CMP AL,0DH ;是否为CRJZ H4H3: INC DIJMP H1H4: INC [COUNT];存放需要比较的个数;;;;;;;功能:冒泡排序服务程序;;;;;;;;;;;;; MOV CX,0MOV CL,BYTE PTR [COUNT];循环次数L1: PUSH CXMOV CL,BYTE PTR [COUNT]MOV DI,0;取首位数据L4: CALL COUNT1;调用判断数据位数子程序CMP BL,DL;比较位数的大小JA L5;前一个数比后一个数大的情况JNE L6CMP BL,1JNZ L7CALL XCH3;同为一位数的比较JMP L5L7: CALL XCH2;同为两位数的比较JMP L5L6: CALL XCH1;前一个数比后一个数位数少的情况L5: LOOP L4POP CXLOOP L1;;;;;;;;显示排序结果;;;;;;;;;;DISPLAY:LEA DX,[DATA1]MOV AH,09HINT 21H;显示提示信息LEA DX,[BUF+2]MOV AH,09HINT 21H;显示结果MOV AH,4CHINT 21H;返回结束;;;;;;;;判断数据位数;;;;;;;;;;COUNT1:MOV DX,0MOV BX,0J1: MOV AL,DI[BUF+2]CMP AL,' 'JZ J2CMP AL,0DHJZ J3INC BLINC DIJMP J1J2: MOV AL,DI[BUF+3]CMP AL,' 'JZ J3CMP AL,0DHJZ J3INC DLINC DIJMP J2J3: SUB DI,DXINC DIRET;;;前一个数比后一个数位数少的情况;;XCH1:MOV AL,DI[BUF] ;第一个数装入ALMOV BX,WORD PTR DI[BUF+2] ;第二个数装入BX MOV WORD PTR DI[BUF],BXMOV BL,20HMOV DI[BUF+2],BLMOV DI[BUF+3],ALINC DIRET;;;;;;;;;;同为两位数比较;;;;;;;;;XCH2:MOV BX,WORD PTR DI[BUF-1] ;第一个数装入BX MOVDX,WORD PTR DI[BUF+2] ;第二个数装入DX CMP BX,DX JAE L9 ;>=不交换MOV WORD PTR DI[BUF-1],DXMOV WORD PTR DI[BUF+2],BXL9: RET;;;;;;;;;;同为一位数的比较;;;;;;;;XCH3:MOV DL,DI[BUF] ;第一个数装入DLMOV DH,DI[BUF+2];第二个数装入DHCMP DL,DHJAE L10 ;>=不交换MOV DI[BUF],DHMOV DI[BUF+2],DLL10: RETCODE ENDSEND START三、8255输入输出实验;//***************************************************** ;文件名: 8255IO for 8088;功能: 8255输入、输出实验;接线: 用导线连接8255模块的CS_8255到CPU模块的200H;; 8255模块的JD3C到八位逻辑电平输出模块的JD1E。
微机原理与汇编语言程序设计实验一
实验一汇编语言上机环境及基本操作一、实验目的及要求1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、实验内容1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。
设定源程序的文件名为ABC。
DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSSTACK SEGMENT STACK ’STACK’STA DB 10 DUP(?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。
图1 用EDIT编辑ABC.AS M程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
微机原理与程序设计
微机原理与程序设计微机原理与程序设计是计算机科学与技术专业的一门重要课程,它是培养学生计算机基础知识和编程实践能力的关键课程之一。
本文将介绍微机原理与程序设计的基本概念、主要内容和学习方法,帮助读者更好地理解和掌握这门课程。
一、微机原理微机原理是微机系统的基础理论,它主要研究微机硬件系统的组成、工作原理和设计方法。
微机系统由中央处理器(CPU)、存储器、输入输出设备和系统总线等组成,它们之间通过总线进行数据和信号的传输。
微机原理研究的重点包括微机的结构、指令系统、中断系统、时序控制和总线结构等内容。
1. 微机的结构微机的结构主要包括中央处理器(CPU)、存储器和输入输出设备。
中央处理器是微机的核心部件,它包括运算器、控制器和寄存器等。
存储器用于存储程序和数据,包括随机存储器(RAM)和只读存储器(ROM)等。
输入输出设备用于与外部设备进行数据的输入和输出。
2. 指令系统指令系统是微机硬件的基本功能之一,它定义了微机执行的基本操作和指令格式。
指令系统包括数据传输指令、算术逻辑指令、控制转移指令等,通过这些指令可以实现数据的读写、运算和控制等功能。
3. 中断系统中断是微机系统中的一种重要的事件处理机制,它可以使微机在执行程序的同时响应外部事件。
中断系统包括中断源、中断控制器和中断处理程序等,通过中断可以实现对外部事件的及时响应和处理。
4. 时序控制时序控制是微机系统中的重要环节,它用于控制微机硬件的时序和操作的顺序。
时序控制包括时钟信号的产生和分配、指令的执行周期和时序、总线的访问和时序等。
5. 总线结构总线是微机硬件系统中各个部件之间进行数据和信号传输的通道,它包括地址总线、数据总线和控制总线等。
总线结构的设计和实现直接影响着微机系统的性能和扩展性。
二、程序设计程序设计是微机原理的重要应用领域,它是指根据问题需求和算法设计程序,并通过编程语言实现。
程序设计的关键是理解问题需求、选择合适的算法和数据结构,并用编程语言将算法转化为可执行的程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XX理工大学微机原理程序设计-----------------------------------------------------------实验一实验要求:试编写一个程序,要求比较数组ARRAY中的三个16位补码数,并根据比较结果在显示终端上显示如下信息:(1)如果三个数都不相等则显示0;(2)如果三个数有两个相等则显示1;(3)如果三个数都相等则显示2。
程序流程图:开始初始化显示数组中的三个补码数结束显示0显示2显示1i=0i=1i=2三数两两比较并记相等的个数i显示“请连续输入三个三位数:”调用程序,使输入的三个三位数转换为补码形式,并分别保存在数组ARRAY 中程序清单:DATA SEGMENTARRAYDW1,2,3DATA ENDS CODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,ARRAY MOV BX,ARRAY+2 MOV CX,ARRAY+4 CMP AX,BX JE LCMPBX,CXJE L1CMP AX,CXJE L1MOV DL,30HJMP EXITL: CMP BX,CXJNE L1MOV DL,32HJMP EXITL1: MOV DL,31HEXIT: MOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START运行结果:ARRAY中三个数互不不相等:ARRAY中三个数有两个相等:ARRAY中三个数都相等:实验二实验要求:从键盘输入一系列字符(以回车符结束),并按字母、数字及其它字符分类计数,最后显示出这三类计数结果。
程序流程图:开始宏定义输入并显示一串字符将字符串各字符转换为ASCII码按ASCII码表判断各字符并归类字符按分类显示结束程序清单:DATA SEGMENTCOUNT_OF_LETTER DB 'the number of letter is :','$' COUNT_OF_NUMBER DB ' the number of number is :','$' COUNT_OF_CHARACTER DB' the number of charater is :','$' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BH,0MOV BL,0MOV CL,0NEXT:MOV AH,1INT 21HCMP AL,0DHJE EXITCMP AL,30HJB COUT_OF_CHARATER_ADDCMP AL,39HJBE COUT_OF_NUMBER_ADDCMP AL,41HJB COUT_OF_CHARATER_ADDCMP AL,5AHJBE COUNT_OF_LETTER_ADDCMP AL,61HJB COUT_OF_CHARATER_ADDCMP AL,7AHJBE COUNT_OF_LETTER_ADDCOUT_OF_CHARATER_ADD:INC CLJMP NEXTCOUT_OF_NUMBER_ADD:INC BLJMP NEXTCOUNT_OF_LETTER_ADD:INC BHJMP NEXTEXIT:CALL CRLFLEA DX,COUNT_OF_LETTERMOV AH,09INT 21HMOV AL,BHCALL BIN_DECCALL CRLFLEA DX,COUNT_OF_NUMBERMOV AH,09INT 21HMOV AL,BLCALL BIN_DECCALL CRLFLEA DX,COUNT_OF_CHARACTER MOV AH,09INT 21HMOV AL,CLCALL BIN_DECCALL CRLFRETCRLF PROC NEARMOV AH,02MOV DL,0DHINT 21HMOV AH,02MOV DL,0AHINT 21HRETCRLF ENDPBIN_DEC PROC NEARPUSH BXPUSH CXAND AX,00FFHMOV CX,0MOV BX,0MOV DL,10ROTATE:DIV DLMOV BL,AHAND AX,00FFHPUSH BXINC CXCMP AX,10JAE ROTATEMOV BX,AXPUSH BXINC CXCONTINUE:POP BXADD BL,30HMOV DL,BLMOV AH,02HINT 21HLOOP CONTINUEPOP CXPOP BXRETBIN_DEC ENDPCODE ENDSEND START运行结果:实验三实验要求:假设已编制好五个歌曲程序,它们的段地址和偏移地址存放在数据段的跳转表SONGLIST 中。
试编一程序,根据从键盘输入的歌曲编号1~ 5 ,转去执行五个歌曲程序中的一个。
程序流程图:开始宏定义SONGLIST的地址等显示SONGLIST歌曲名使键盘1,2,3,4,5分别指向这5首歌的地址显示”请输入歌曲编号(范围:1-5)“显示输入歌曲编号播放所点歌曲是判断是否继续否结束程序清单:DATA SEGMENTSONGLIST DW MUSIC1,MUSIC2,MUSIC3,MUSIC4,MUSIC5 DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXREADLIST:MOV AH,1INT 21HSUB AL, '0'CMP AL,0JE EXITCMP AL,5JA READLISTDEC ALMOV BX,0MOV BL,ALADD BX,BXJMP SONGLIST[BX]JMP READLIST MUSIC1:MOV DL, '1'MOV AH,2INT 21HJMP EXITMUSIC2:MOV DL, '2'MOV AH,2INT 21HJMP EXITMUSIC3:MOV DL, '3'MOV AH,2INT 21HJMP EXITMUSIC4:MOV DL, '4'MOV AH,2INT 21HJMP EXITMUSIC5:MOV DL, '5'MOV AH,2INT 21HJMP EXITEXIT:MOV AX,4C00HINT 21HCODE ENDSEND START运行结果:实验四实验要求:试编写一个程序,从键盘接收一个个位数N,然后响铃N次。
(响铃的ASCII码为07H)。
程序流程图:开始宏定义显示“请输入响铃次数:”结束N>0?输入一个数nN--输出响铃1次是否程序清单:DATA SEGMENTTIP DB 'PLEASE INPUT A NUMBER:','$'DATA ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASTART :MOV AX,DATAMOV DS,AXLEA DX,TIPMOV AH,09HINT 21HMOV AH,01HINT 21HAND AX,01HMOV CX,AXBE:MOV DL,07HMOV AH,02HINT 21HLOOP BECODES ENDSEND START运行结果:输入数字后听到对应次数的响铃实验五实验要求:从键盘输入一系列以$ 为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。
程序流程图:开始结束暗字符串顺序判断字符是否为数字宏定义显示“请输入字符串,以$结尾:”对字符串处理,并记录字符个数n计数i (初值为0)++显示”非数字字符数为:i “n>0?n--是否是否程序清单:DATA SEGMENTS1 DB 0DH,0AH,'PLEASE INPUT : $'S2 DB 0DH,0AH,'TOTAL NON_DIGITAL ARE:$' NUM DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART :PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXLEA DX,S1MOV AH,9INT 21H NEXT:MOV AH,01INT 21HCMP AL,'$'JE DOWNCMP AL,'0'JB NO09CMP AL,'9'JA NO09JMP NEXT NO09:INC NUMJMP NEXT DOWN:LEA DX,S2MOV AH,9INT 21HMOV AL,NUMMOV AH,0MOV DL,100DIV DLCALL DISP_PMOV AL,AHMOV AH,0MOV DL,10DIV DLCALL DISP_PXCHG AH,ALCALL DISP_PRETDISP_P PROC NEARPUSH AXMOV DL,ALADD DL,30HMOV AH,2INT 21HPOP AXRETDISP_P ENDPCODE ENDSEND START运行结果:实验六实验要求:试编制一个程序,把AX中存放的16进制数转换为ASCII码,并将对应的ASCII 码依次存放在MEM数组中的四个字节中。
例如:当(AX)= 2A49H时,程序执行完后,MEM中的四个字节的内容为39H,34H,41H,32H。
程序流程图:开始宏定义输入一个16进制数并送给AX将AX中数转换为ASCII码形式将各ASCII码由低位依次送给MEM四个字节显示MEM中的内容结束程序清单:DATA SEGMENTMEM DB 4 DUP (?)N DW2A49HDATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:PUSH DSSUB AX, AXPUSH AXMOV AX, DATAMOV DS, AXBEGIN:MOV CH, 4MOV CL, 4MOV AX, NLEA BX, MEMROTATE:MOV DL, ALAND DL, 0FHADD DL, 30HCMP DL, 3AHJL NEXTADD DL, 07HNEXT:MOV[BX], DLINC BXROR AX, CLDEC CHJNZ ROTATERETCODE ENDSEND START运行结果:实验七实验要求:设有十个学生的成绩分别是76,69,84,90,73,88,99,63,100,80分,试编制一个子程序统计60 ~ 69分,70 ~ 79分,80 ~ 89分,90 ~ 99分和100分的人数,分别存放在S6,S7,S8,S9和S10单元中。