微机原理简单程序设计
微机原理分支程序设计实验
微机原理分支程序设计实验微机原理是计算机科学与技术专业的核心课程之一、在这门课程中,学生需要学习计算机的基本原理和体系结构,并通过实验来巩固所学的知识。
本文将介绍一个关于分支程序设计的微机原理实验。
实验背景:分支程序是计算机中的一种非线性控制结构,它根据条件的不同选择不同的执行路径。
分支程序设计是计算机编程中非常重要的一部分,也是实际应用中经常会遇到的情况之一、通过这个实验,学生将学会如何使用分支结构来解决实际问题。
实验目的: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接口等,用于连接外部设备。
微机原理 程序设计方法
入口参数: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个字节。 所以,数据段定义为:
微机原理实验报告(两个32位无符号数乘法程序以及码制转换程序设计)
微机原理实验报告(两个32位无符号数乘法程序以及码制转换程序设计)----05f17e0a-6eb2-11ec-86e4-7cb59b590d7d微机原理实验报告姓名:班级:学号:时间:实验名称:基本汇编语言程序设计实验1:两个32位无符号数乘法程序实验2:代码系统转换程序设计<1>十六进制到ascii<2>从二进制到ascii一、程序流程图1、两个32位无符号数乘法程序:2.十六进制到ASCII二、程序的实现:1、实验一程序:名称32位多数据段mulnumdw0000,0ffffh,0000,0ffffh,4dup(?)dataendsstack'stack'db100dup(?)斯塔克恩兹codesegment假设:代码,ds:data,ss:stack,es:datastartprocfarbegin:pushdsmovax,0pushaxmovax,datamovds,axmoves,axleabx,mulnummulu32:movax,[bx]movsi,[bx+4]movdi,[bx+6]乳化液mov[bx+8],axmov[bx+0ah],dxmovax,[bx+2]mulsiaddax,[bx+0ah]adcdx,0mov[bx+0ah],axmov[bx+0ch],dxmovax,[bx]muldiaddax、[bx+0ah]adcdx、[bx+0ch]mov[bx+0ah]、axmov[bx+0ch]、DXFmovax,[bx+2]muldipopfadcax,[bx+2]adcdx,0mov[bx+0ch],axmov[bx+0eh],dxretSTARTENDPCODENDSENDSTART2、实验二的程序:1)名称HEX_uu更改为uuidatasegmentl1dw2stringdb34h,98hl2dw?缓冲区db2*2dup(?)数据端stacksegmentparastack'stack'db100dup(?)stackends代码段assumecs:code,ds:data,es:data,ss:stackstartprocfarbegin:pushdsmovax,0pushaxmovax,datamovds,axmoves,axmovcx,l1leabx,stringleasi,buffermovl2,cxmovcx,ax再次:moval,[bx]movdl,alandal,0fhcallchangemoval,dlpushcxmovcl,4shral,clpopcxcallchangeincbxretstartendpchangeproccmpal,10jladd_0addal,'a'-'0'-10add_0:addal,'0'mov[si],alincsiretchangeendpcodeendsendstart2)namebinary_to_acsiidatasegmentnumdw4f78hstringdb16dup(?)dataendsstack'stack'db100dup(?)斯塔克恩兹codesegment假设:代码,ds:data,ss:stack,es:datastartprocfarbegin:pushdsmovax,0pushaxmovax、数据MOVDS、axmoves、axleadi、字符串movcx,lengthstringpushdipushcxmoval,30h;repstowpopcxpopdimoval,31hmovbx,numagain:rclbx,1jncnextmov[di],alnext:incdiloopagainretstartendpcodeendsendstart三、实验感想:在实验过程中,我根据书慢慢理解了这些代码的含义,并纠正了代码中的错误。
微机原理第五章 程序设计-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在工业控制系统诸多领域得到了广泛的应用,由于它具有极好的稳定性,更快和更准确的运算精度。
当前,微机测控系统的发展非常迅速,应用也极为广泛,它由于体积小、功能强、性能稳定、价格低廉等优点,使其在工业控制系统诸多领域得到了极为广泛的应用。
在此基础上发展起来的智能仪器无论是在测量的准确度、灵敏度、可靠性、自动化程度、应用功能等方面或在解决测试技术问题的深度及广度方面都有了巨大的发展,以一种崭新的面貌展现在人们的面前。
微机原理程序设计
XX理工大学微机原理程序设计-----------------------------------------------------------实验一实验要求:试编写一个程序,要求比较数组ARRAY中的三个16位补码数,并依照比较结果在显示终端上显示如下信息:(1)若是三个数都不相等那么显示0;(2)若是三个数有两个相等那么显示1;(3)若是三个数都相等那么显示2。
程序流程图:程序清单:DATA SEGMENTARRAY DW 1,2,3DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX,DATAMOV DS,AXMOV AX,ARRAYMOV BX,ARRAY+2MOV CX,ARRAY+4CMP AX,BXJE LCMP BX,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 中。
微机原理实验程序
第四章 软件实验部分实验一 两个多位十进制数相减实验一、实验要求:将两个多位十进制数相减,要求被减数,减数均以ASCII 码形式按顺序存放在以DA T AI和DA T A2为首的5个内存单元中(低位在前),结果送回DA T AI 处。
处。
二、实验目的:1.学习数据传送和算术运算指令的用法。
.学习数据传送和算术运算指令的用法。
2.熟悉在PC 机上建立、汇编、链接、调试和运行汇编语言程序的过程。
机上建立、汇编、链接、调试和运行汇编语言程序的过程。
三、实验步骤:连好实验箱后接通电源,连好实验箱后接通电源,打开上位机软件打开上位机软件88TE 进入软件调试界面:进入软件调试界面:点击点击点击“文件“文件\打开”打开”文文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm 。
具体操作如图所示:文件。
点击编译连接生成可执行的exe文件。
通过单步运行调试程序,打开寄存器查看其变量变化情况。
通过单步运行调试程序,打开寄存器查看其变量变化情况。
四、实验程序框图:五、实验程序:文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm DA DATA SEGMENT TA SEGMENT DA DATA1 TA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)第一个数据(作为被减数) DA DATA2 TA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)第二个数据(作为减数) MES1 DB '-','$' MES2 DB '=','$' DA DATA ENDS TA ENDS STACK SEGMENT ;堆栈段堆栈段 STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT TA,SS:STACK,ES:DA ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DAT T A START: MOV AX,DA TA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP ,AX MOV SI,OFFSET DATA1 MOV BX,05 CALL DISPL ;显示被减数显示被减数 MOV AH,09H LEA DX,MES1 INT 21H MOV SI,OFFSET DA T A2 MOV BX,05 ;显示减数显示减数 CALL DISPL MOV AH,09H LEA DX,MES2 INT 21H MOV SI,OFFSET DATA1 MOV DI,OFFSET DA T A2 CALL SUBA ;减法运算减法运算 MOV SI,OFFSET DA T A1 MOV BX,05 ;显示结果显示结果 CALL DISPL MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H 显示减数和被减数被减数和减数转换成十六进制数设 置 计 数 值 消除最低进位数 开 始制进位减 结果送被减数区调整偏移量 计数值-1=10 结果转换成ASCII 码字符串显示结果 结果INT 21H INT 21H MOV AX,4C00H INT 21H DISPL PROC NEAR ;显示子功能显示子功能DSI: MOV AH,02 MOV DL,[SI+BX-1] ;显示字符串中一字符显示字符串中一字符INT 21H DEC BX ;修改偏移量修改偏移量JNZ DSI RET DISPL ENDP SUBA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05 SU1: SUB BYTE PTR[SI+BX-1],30H SUB BYTE PTR[DI+BX-1],30H DEC BX ;将ASCII 码表示的数字串码表示的数字串 JNZ SU1 ;转化为十六进制的数字串转化为十六进制的数字串 MOV SI,DX MOV DI,BP MOV CX,05 ;包括进位,共5位CLC ;清进单位清进单位SU2: MOV AL,[SI] MOV BL,[DI] SBB AL,BL ;带进位相减带进位相减AAS ;非组合BCD码的减法调整码的减法调整 MOV [SI],AL ;结果送被减数区结果送被减数区 INC SI INC DI ;指向下一位指向下一位LOOP SU2 ;循环循环MOV SI,DX MOV DI,BP MOV BX,05 SU3: ADD BYTE PTR [SI+BX-1],30H ADD BYTE PTR [DI+BX-1],30H DEC BX ;十六进制的数字串转化ASCII码表示的数字串码表示的数字串 JNZ SU3 RET SUBA ENDP CODE ENDS END ST ART实验二 两个数相乘的实验一、实验要求:实现十进制数的乘法,实现十进制数的乘法,被乘数和乘数均以被乘数和乘数均以ASCII 码形式存放在内存中,码形式存放在内存中,算式结果在屏幕上显算式结果在屏幕上显示出来。
简单程序设计(微机原理)
微机原理及应用
实验报告
实验一
实验题目:简单程序设计
指导老师:XXXXXX
专业班级:XXXXXX
姓名:XXXXXXXXX
2012年10月12日
实验类型__验证__ 实验室_2502__
一、实验题目
简单程序设计
二、实验目的和要求
1)熟悉汇编语言上机环境;
2)掌握汇编程序编辑程序(Edit)、汇编程序(Masm)、连接程序(Link)的步骤;
三、实验内容
汇编程序下两个数求和。
四、实验代码
DATAS SEGMENT
TWO DB 2
DATAS ENDS
STACKS SEGMENT
DB 128 DUP (?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AL,TWO
ADD AL,3
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
五、运行结果:
汇编程序结果:
连接程序结果:
运行程序结果:
求和结果:
六、实验总结:
通过此次实验,我学会了在汇编语言上机环境下进行编辑程序(Edit)、汇编程序(Masm)、连接程序(Link)等。
掌握了在MASM环境下的基本指令的调用,会进行简单的编程,熟悉了机器指令的一些简单操作。
微机原理程序设计
微机原理课程设计设计一:从键盘输入十六进制数并显示出二进制值设计二:字符串匹配设计设计三:字符和数据显示的设计设计四:键盘输入小写字母转换成大写字母设计五:计算N!的设计2011-7-6设计一:从键盘输入十六进制数并显示出二进制值实验目的:掌握接收键盘数据的方法,并了解数据显示时须转换为ASCII码的原理。
实验内容:将键盘接收到的4位十六进制数据转换为等值的二进制数,再显示在屏幕终端上。
流程图:程序源代码:CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDA TA SEGMENTMARK DB ?MESS DB 'INPUT THE NUMBER! Press Enter to Transition,Press Space to Exit!',0DH,0AH,'Input:$'ERROR DB 0DH,0AH, 'Input Error!',0DH,0AH,'$'DA TA ENDSSTACK SEGMENTSTA DW 32 DUP(?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DA TA,SS:STACKSTART: MOV AX,DA TAMOV DS,AXMOV ES,AXMOV SP,TOPHEAD: CRLFMOV MARK,0MOV AH,09HLEA DX,MESSINT 21H ;显示提示输入的信息CALL GETNUM ;接收键入数值送DXCMP MARK,01HJE HEADMOV CX,0010H ;16位MOV BX,DXTTT: ROL BX,1 ;循环左移1位MOV DL,BLAND DL,01H ;屏蔽掉高7位ADD DL,30HMOV AH,02HINT 21H ;显示二进制位对应的ASCII字符LOOP TTTJMP HEADFINI: MOV AH,4CHINT 21H ;返回DOSGETNUM PROC NEAR ;子程序,接收键入数值送DX PUSH CXXOR DX,DXGGG: MOV AH,01HINT 21HCMP AL,0DH ;输入为回车,则进行转换JE PPPCMP AL,20H ;输入为空格,则退回DOSJE FINICMP AL,30HJB KKKSUB AL,30HCMP AL,0AHJB GETSCMP AL,11HJB KKKSUB AL,07HCMP AL,0FHJBE GETSCMP AL,2AHJB KKKCMP AL,2FHJA KKKSUB AL,20HGETS: MOV CL,04SHL DX,CLXOR AH,AHADD DX,AXJMP GGGKKK: MOV AH,09HMOV DX,OFFSET ERRORINT 21HMOV MARK,01HPPP: PUSH DXCRLFPOP DXPOP CXRETGETNUM ENDPCODE ENDSEND START运行结果设计二:字符串匹配设计实验内容:编写程序实现两个字符串比较。
微机原理十进制减法实验程序
微机原理十进制减法实验程序一、十进制数相减程序设计实验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. 让学生掌握微机的基本原理,包括CPU的结构与功能、内存的工作原理、输入输出设备的作用。
2. 使学生理解微机系统的组成,包括硬件和软件的协调工作方式。
3. 让学生了解微机的发展历程,掌握不同时期微机技术的特点。
技能目标:1. 培养学生运用所学的微机原理,分析并解决简单微机系统问题的能力。
2. 提高学生动手实践能力,能够组装和调试简单的微机系统。
3. 培养学生查阅相关资料,了解微机技术最新发展的能力。
情感态度价值观目标:1. 培养学生对微机技术的兴趣,激发他们探索未知、勇于创新的热情。
2. 培养学生的团队协作意识,使他们在学习过程中学会分享、交流和合作。
3. 引导学生认识到微机技术在国家发展和个人生活中的重要性,培养他们的责任感和使命感。
本课程针对的学生特点是具有一定电子技术基础,好奇心强,喜欢探索新知识。
在教学过程中,要注重理论与实践相结合,充分调动学生的主观能动性,培养他们的问题解决能力和创新意识。
通过本课程的学习,期望学生能够掌握简单微机原理,为今后的学习和工作打下坚实基础。
二、教学内容本课程教学内容主要包括以下几部分:1. 微机概述:介绍微机的发展历程、应用领域及发展趋势。
- 教材章节:第一章 微机概述2. 微机硬件系统:讲解CPU、内存、输入输出设备等硬件组成部分的工作原理及相互关系。
- 教材章节:第二章 微机硬件系统3. 微机软件系统:介绍操作系统、编程语言等软件组成部分的基本概念和应用。
- 教材章节:第三章 微机软件系统4. 微机组装与调试:指导学生动手组装微机系统,并进行调试。
- 教材章节:第四章 微机组装与调试5. 微机故障分析与维修:分析常见微机故障现象,讲解故障诊断与维修方法。
- 教材章节:第五章 微机故障分析与维修6. 微机新技术与发展趋势:探讨当前微机领域的热点技术,如人工智能、物联网等,并展望未来发展。
- 教材章节:第六章 微机新技术与发展趋势教学内容安排与进度:1. 微机概述(1课时)2. 微机硬件系统(2课时)3. 微机软件系统(2课时)4. 微机组装与调试(2课时)5. 微机故障分析与维修(2课时)6. 微机新技术与发展趋势(1课时)在教学过程中,要注重理论与实践相结合,结合教材内容,有针对性地进行讲解和实操演示,使学生在掌握基本原理的同时,提高动手实践能力。
微机原理与汇编语言程序设计实验一
实验一汇编语言上机环境及基本操作一、实验目的及要求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)若程序中使用了宏指令,则汇编程序将展开宏指令。
微机原理课程设计_进制转换程序设计
课程设计任务书学生姓名:易杨专业班级:电信 0802 指导教师:曾刚工作单位:信息工程学院题目:进制转换程序设计初始条件:具备数字电路的理论知识;具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、程序实现二进制、十进制、十六进制之间的转换2、在命令提示下输入相应进制数,回车后进行转换3、输入错误时应声响报警并拒绝输入4、程序采用汇编语言在PC机上完成5、完成符合学校要求的设计说明书时间安排:一周,其中2天程序设计,2天程序调试,1天完成课程设计报告书及答辩指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)1原理分析 (1)2程序设计流程 (3)2.1程序流程图 (3)2.2设计思路 (4)3程序设计 (5)3.1堆栈段数据段程序设计 (5)3.2主程序设计 (5)3.3输入二进制程序 (7)3.4输入十进制程序 (8)3.5输入十六进制程序 (8)3.6输出二进制程序 (9)3.7输出十进制程序 (9)3.8输出十六进制程序 (11)3.9回车键确定程序 (11)3.10报警程序 (12)4运行结果 (13)5心得体会 (15)参考文献 (16)摘要日常生活与实际应用中,往往需要计算机处理的信息是多种多样的,如各种进位制的数据,不同语种的文字符号和各种图像信息等。
但在计算机内部采用的是二进制计数制,这种进制表达方法对于人们研究分析是不那么方便的。
本次课程设计将通过所学的微机原理知识理论,用汇编语言编写程序,实现二进制、十进制与十六进制之间的相互转换,并在MF2KP软件上演示。
关键词:汇编程序进制转换MF2KP1 原理分析进位计数制是人们利用符号来计数的方法。
一种进位计数制包含一组数码符号和两个基本因素。
数码是用不同的数字符号来表示一种数制的数值,这些数字符号称为”数码”。
微机原理简单程序设计
一、实验目的(1).学习汇编语言上机操作过程,汇编程序的汇编、编辑、连接、运行、DEBUG、调试方法。
(2)、加深理解汇编语言程序设计方法(3)、学习使用DOS调用方法二、实验内容:(1)、在内存单元TAB开始的连续10个有符号字节数据中找出最小数据并显示结果(2)、在内存单元TAB开始的连续10个有符号字节数据中找出最大数据并显示结果三、实验设备及环境:1.计算机2.MASM汇编四、实验方案:五、实验步骤:1.用记事本编写源程序;2.在“开始”—“运行”里键入“cmd”命令启动ms—dos;3.在命令行中输入cd\masm5\回车;4.输入masm 程序名.asm;5.输入link 程序名;6.输入程序名回车运行程序;7. 更改源程序找出最大值六、源程序: dseg segmentTAB db 2H ,5H,6H,3H,7H,8H,9H,81H,,0C3H,0F4HCOUNT db $-TABdseg endssseg segmengt stackSDAT db 50 dup(?)TOP equ length SDATsseg endscode segmentassume cs:code , ds:dseg, ss:ssegstart: mov ax,dsegmov ds,axmov ax,ssegmov ss,axmov ax,TOPmov sp,axmov cx,COUNTDEC cxmov sl, OFFSET TABmov al,[sl]NEXT: INC alcmp al ,[sl]JL L1mov al, [al]L1 :LOOP NEXTmov bl,almov cl,4and al,0f0hshr al,clor al,30hmov dl,almov ah,2int 21hand bl,0fhor bl,30hmov ah,2int 21hmov ah,4chint 21hcode endsend start七、实验调试结果截图:八、实验总结通过本次汇编语言上机操作过程,进一步学习了汇编语言中语法结构和控制指令所实现的结果任务,在进行编程时应首先定义一个数据段、然后对程序中的变量、常量进行声明定义,在声明时注意带有字符的量(比如:0C31H 只能把变成0C31H,而不能编成C31H);并且在DOC中①应根据需要的的功能调用设置入口参数②把功能调用号送入AH寄存器③在程序末尾应该编入中断指令:”INT 21H”④可根据有关功能调用的说明取得出口参数。
微机原理与程序设计
微机原理与程序设计微机原理与程序设计是计算机科学与技术专业的一门重要课程,它是培养学生计算机基础知识和编程实践能力的关键课程之一。
本文将介绍微机原理与程序设计的基本概念、主要内容和学习方法,帮助读者更好地理解和掌握这门课程。
一、微机原理微机原理是微机系统的基础理论,它主要研究微机硬件系统的组成、工作原理和设计方法。
微机系统由中央处理器(CPU)、存储器、输入输出设备和系统总线等组成,它们之间通过总线进行数据和信号的传输。
微机原理研究的重点包括微机的结构、指令系统、中断系统、时序控制和总线结构等内容。
1. 微机的结构微机的结构主要包括中央处理器(CPU)、存储器和输入输出设备。
中央处理器是微机的核心部件,它包括运算器、控制器和寄存器等。
存储器用于存储程序和数据,包括随机存储器(RAM)和只读存储器(ROM)等。
输入输出设备用于与外部设备进行数据的输入和输出。
2. 指令系统指令系统是微机硬件的基本功能之一,它定义了微机执行的基本操作和指令格式。
指令系统包括数据传输指令、算术逻辑指令、控制转移指令等,通过这些指令可以实现数据的读写、运算和控制等功能。
3. 中断系统中断是微机系统中的一种重要的事件处理机制,它可以使微机在执行程序的同时响应外部事件。
中断系统包括中断源、中断控制器和中断处理程序等,通过中断可以实现对外部事件的及时响应和处理。
4. 时序控制时序控制是微机系统中的重要环节,它用于控制微机硬件的时序和操作的顺序。
时序控制包括时钟信号的产生和分配、指令的执行周期和时序、总线的访问和时序等。
5. 总线结构总线是微机硬件系统中各个部件之间进行数据和信号传输的通道,它包括地址总线、数据总线和控制总线等。
总线结构的设计和实现直接影响着微机系统的性能和扩展性。
二、程序设计程序设计是微机原理的重要应用领域,它是指根据问题需求和算法设计程序,并通过编程语言实现。
程序设计的关键是理解问题需求、选择合适的算法和数据结构,并用编程语言将算法转化为可执行的程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的
(1).学习汇编语言上机操作过程,汇编程序的汇编、编辑、连接、运行、DEBUG、调试方法。
(2)、加深理解汇编语言程序设计方法
(3)、学习使用DOS调用方法
二、实验内容:
(1)、在内存单元TAB开始的连续10个有符号字节数据中找出最小数据并显示结果
(2)、在内存单元TAB开始的连续10个有符号字节数据中找出最大数据并显示结果
三、实验设备及环境:
1.计算机
2.MASM汇编
四、实验方案:
五、实验步骤:
1.用记事本编写源程序;
2.在“开始”—“运行”里键入“cmd”命令启动ms—dos;
3.在命令行中输入cd\masm5\回车;
4.输入masm 程序名.asm;
5.输入link 程序名;
6.输入程序名回车运行程序;
7. 更改源程序找出最大值
六、源程序: dseg segment
TAB db 2H ,5H,6H,3H,7H,8H,9H,81H,,0C3H,0F4H
COUNT db $-TAB
dseg ends
sseg segmengt stack
SDAT db 50 dup(?)
TOP equ length SDAT
sseg ends
code segment
assume cs:code , ds:dseg, ss:sseg
start: mov ax,dseg
mov ds,ax
mov ax,sseg
mov ss,ax
mov ax,TOP
mov sp,ax
mov cx,COUNT
DEC cx
mov sl, OFFSET TAB
mov al,[sl]
NEXT: INC al
cmp al ,[sl]
JL L1
mov al, [al]
L1 :LOOP NEXT
mov bl,al
mov cl,4
and al,0f0h
shr al,cl
or al,30h
mov dl,al
mov ah,2
int 21h
and bl,0fh
or bl,30h
mov ah,2
int 21h
mov ah,4ch
int 21h
code ends
end start
七、实验调试结果截图:
八、实验总结
通过本次汇编语言上机操作过程,进一步学习了汇编语言中语法结构和控制指令所实现的结果任务,在进行编程时应首先定义一个数据段、然后对程序中的变量、常量进行声明定义,在声明时注意带有字符的量(比如:0C31H 只能把变成0C31H,而不能编成C31H);并且在DOC中①应根据需要的的功
能调用设置入口参数②把功能调用号送入AH寄存器③在程序末尾应该编入中断指令:”INT 21H”④可根据有关功能调用的说明取得出口参数。
其次是在堆栈段和代码段的定义之后,进行程序段的编写,编完之后要按照程序操作步鄹进行正确连接,最后通过调试对实验的结果进行验证。
最后通过程序的整体性和局部性声明了解到汇编语言源程序的模块化,并且每个模块都有开始和结束成对出现的控制指令,并且在实验前应对实验程序进行整体语法的构思,大致确定程序的语法结构,最后整理程序所用到的控制指令。