微机原理与接口技术软件实验报告
微机原理及接口技术实验报告
《微机原理与接口技术》实验报告姓名:学号:班级:专业:电气工程及其自动化学院:电气与信息工程学院目录实验一数据传送 (2)实验二算术运算 (4)实验三代码转换 (6)实验四程序的基本结构 (9)1、分支程序 (9)2、循环程序 (13)3、子程序 (16)实验五中断实验(8259) (19)实验六并行接口实验(8255) (25)实验七定时器/计数器实验(8235) (31)实验八D/A接口实验 (36)实验九A/D接口实验 (40)实验十串行通信实验 (43)实验一数据传送一、实验目的1. 掌握与数据有关的不同寻址方式。
2. 继续熟悉实验操作软件的环境及使用方法。
二、实验设备PC微机一台、TD-PIT + 或TD-PIT ++ 实验系统一套。
三、实验内容本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
四、实验步骤(1) 运行Tdpit 集成操作软件,编写实验程序。
(2) 编译连接无误后,进入调试环境,进行程序的调试。
按F8 键单步运行程序,执行完MOV DS,AX 语句后,观察DS 寄存器中出现的段地址。
如图1-1所示可以看出DS数据段中MSR源数据串"HELLO,WORLD!$"。
图1-1 进入调试环境(3)继续单步运行程序,执行MOV ES,AX 语句后,可以看数据段出现的段地址,用同样的方法可以查看ES:0000 的数据。
数据传输还没开始进行,此时ES 段的数据为空,如图1-1所示。
继续单步运行程序如图1-2可以看出数据正在逐渐的进入ES段中。
图1-2 DS源数据段数据(4)直到数据传输完毕,可以看到ES 数据段中目的数据串MSD 已经被写入了数据串"HELLO,WORLD!$"。
如图1-3所示。
图1-3 根据ES值查看附加段的数据实验二算术运算一、实验目的1. 掌握运算类指令编程及调试方法。
2. 掌握运算类指令对各状态标志位的影响及测试方法。
微机原理与接口技术软件实验报告
第一篇软件实验实验一存储器块操作实验一、实验目的1. 熟悉KEIL集成调试环境和汇编程序的调试方法。
2. 掌握存储器读写方法;3. 了解内存块的移动方法;二、实验说明实验1 指定某存储器的其实地址和长度,要求能将其内容赋值。
通过该实验学生可以了解单片机读写存储器的方法,同时也可以了解单片机编程、调试方法。
块移动是单片机常用操作之一,多用于大量的数据复制和图像操作。
例程2给出起始地址,用地址加1方法移动块,将指定源地址和长度的存储块移到指定目标为起始地址的单元中去。
移动3000H起始的256个字节到4000H起始的256个字节。
三、实验内容1. 试编程将片内RAM中的数据依次复制到片外RAM。
假设源数据区的首地址为40H,目的数据区的首地址为1000H,数据块长度为10H。
流程图:程序:运行结果:Memory显示,片内RAM中40H开始数据为03 00 29 00 00 00 71 00 AB 00 00 00 1E 00 00 FF,说明测试数据已经成功输入片内RAM。
从片外RAM中1000H位置开始记录为03 00 29 00 00 00 71 00 AB 00 00 00 1E 00 00 FF,说明片内RAM从40H开始的数据已经成功复制到片外从1000H开始的地址。
2. 两个16位无符号二进制数分别存放在片外RAM首址为2000H和2002H单元内,将它们相加,结果存入RAM 30H(低8位)、31H(高8位)。
程序(以0506H+CDEFH为例):0506H和CDEFH已存入片外单元,运算结果D2F5已存入30H和31H中。
四、思考题1. 如何将存储块的内容置成某固定值(例全填充为0FFH)?请用户修改程序,完成此操作。
答:将源程序中的MOV A, #01H 改为MOV A,#0FFH即可。
2. 若源块地址和目标地址有重叠,该如何避免?答:先执行一次数据转移操作将源块地址中的数据先暂存入一块地址与目标地址和源块地址均不重叠的存储区,再执行一次数据转移操作将暂存区的数据移入目标地址区域。
微机原理与接口技术实验报告一
微机原理与接口技术实验报告(一)实验内容一:1、实验目的: 考察对内存寻址方式、8086指令的理解内存中的数据排列如上表所示,各寄存器内容如下DS=2100H ES=2111H SS=2000H BX=106H CX=3H SI=106H DI=12H BP=1100H SP=1100HFR=3402H (FR 标志寄存器,FR 中的DF -字符串操作方向位为1)在执行下列指令后,写出寄存器AX中的内容 0) pop ax; AX= 1) mov ax,bx; AX= 2) mov ax,[bx];AX= 3) mov ax,102H;AX= 4) mov ax,[102H];AX= 5) mov ax,6[SI];AX= 6) lea ax,6[BX][DI];AX= 7) mov ax,[BP+DI];AX= 8) rep lodsw;AX= , 还需写出SI=2、实验内容: (1)开始菜单下选择运行,输入cmd 回车,在开启的窗口中输入debug 后回车,进入程序输入环境(2)利用r 指令显示当前各寄存器储值并按照上文中的寄存器值进行修改 结果如下:物理地址 内容(字节) 物理地址 内容(字节)21100H BEH 21110H 99H 21101H 02H 21111H 00H 21102H 01H 21112H E8H 21103H 8BH 21113H 7EH 21104H 44H 21114H E0H 21105H 02H 21115H 74H 21106H 29H 21116H 06H 21107H 44H 21117H E8H 21108H 04H 21118H 17H 21109H 9CH 21119H 01H 2110AH 50H 2111AH ACH 2110BH E6H 2111BH EBH 2110CH 99H 2111CH 34H 2110DH C6H 2111DH 00H 2110EH 06H 2111EH 30H 2110FHE8H2111FH0BH(3)d指令查看21100H——2111FH内存单元的内容(4)e指令对该段内存单元进行赋值(5)a指令按顺序输入要求中列出的指令(6)u指令进行反汇编(7)t指令(跟踪命令)逐条运行指令,观察记录指令运行结果3、实验结果0) pop ax; AX=02be1) mov ax,bx; AX=01062) mov ax,[bx];AX=44293) mov ax,102H;AX=01024) mov ax,[102H];AX=8b015) mov ax,6[SI];AX=c6996) lea ax,6[BX][DI];AX=011e7) mov ax,[BP+DI];AX=7ee88) rep lodsw;AX=4429, SI=0108实验内容二:1、实验目的:熟悉masm for windows 软件的应用,体会汇编程序的编写、编译、执行及调试等各个环节。
微机原理与接口技术实验报告
微机原理与接口技术实验报告引言微机原理与接口技术是计算机科学与技术专业的一门重要课程,通过实验的方式来深入理解微机原理和接口技术的原理和应用。
本实验报告将详细介绍我们在实验中所学到的内容和实验结果。
一、实验目的微机原理与接口技术实验的主要目的是让学生通过实验来了解和掌握微机系统的结构与工作原理,以及接口技术的基本原理和应用。
通过实验,我们可以加深对微机原理和接口技术的理解,并能够熟练操作相应的实验设备和软件。
二、实验内容本次实验主要包括以下几个方面的内容:1. 微机系统的组成与原理:了解微机系统的基本组成部分,包括微处理器、存储器、输入输出设备等,并学习它们的工作原理和相互之间的联系。
2. 微机系统的调试与测试:学习使用调试工具和测试设备来验证微机系统的正确性和稳定性,通过调试和测试来发现和排除系统中的问题。
3. 接口技术的原理与应用:了解各种接口技术的原理和应用,包括并行接口、串行接口、USB接口等,学会设计和实现简单的接口电路。
4. 接口电路的设计与调试:通过实际设计和调试接口电路,加深对接口技术原理的理解,并能够解决实际问题。
三、实验过程及结果在实验中,我们首先学习了微机系统的基本结构和工作原理,并通过实际操作,搭建了一个简单的微机系统。
通过调试和测试,我们验证了系统的正确性和稳定性。
接着,我们学习了各种接口技术的原理和应用。
我们以并行接口为例,设计了一个简单的并行接口电路,并通过实验验证了其正确性。
同时,我们还学习了串行接口和USB接口的原理,并了解了它们在实际应用中的重要性。
在接口电路的设计和调试过程中,我们遇到了一些问题,例如信号传输的稳定性、接口电路的兼容性等。
通过分析和调试,我们逐步解决了这些问题,并取得了令人满意的实验结果。
四、实验总结通过本次实验,我们深入了解了微机原理和接口技术的基本原理和应用。
通过实际操作和调试,我们不仅掌握了微机系统的组成和工作原理,还学会了设计和实现简单的接口电路。
微机原理与接口技实验报告
微机原理与接口技术实验报告学院: 核技术与自动化工程学院专业: 电气工程及其自动化班级: XXXXXX学号: XXXXX姓名: XXX指导老师: XXX完成时间: 2012、11、14实验一 EMU8086软件的使用一、实验目的1、了解EMU 8086软件的基本使用步骤和各个工作区的功能,在能力方面主要是学以致用,将理论知识运用于实际的设计,从设计的完整和缺陷中找到新的突破口,以便温故而知新,从而提升自己的实际操作技能,能够通过自我想象与思考做出很多有价值的设计。
2、在系统的学习了微机原理与接口技术后,主要针对8086,利用emu8086软件设计一些程序,熟悉了解此款软件的运行过程中各个步骤寄存器内容及地址的变化。
3、在理论方面,基础软件实验部分共有六个实验组成,通过对这些实验程序的编写、调试,使学生熟悉8086/8088的指令系统等,了解程序设计过程,掌握汇编程序设计方法以及如何使用实验系统提供的各种调试、分析手段来排除程序错误。
二、实验仪器及设备PC设备、EMU8086软件平台、EMU8086软件仿真平台三、实验内容双击EMU8086图标,打开程序。
此时会弹出welcome窗口,见图1.1所示,可将该窗口关闭直接进入编辑状态;也可点击它的new按钮,则会弹出代码模板选择框供用户选择(可选择EXE模板),见图1.2所示,一般点击Cancel按钮,直接进入编辑状态。
在编辑窗口,可直接将源程序输入,见图1.3所示。
图1.1 welcome窗口图1.2 模板选择图1.3编辑窗口输入源程序点击compile(编译)按钮则进行汇编和链接,生成.EXE文件,并提示存盘。
点击emulate(仿真)按钮则可进入8086仿真器界面,见图1.4所示。
界面中提供了寄存器窗口、内存单元窗口及反汇编窗口,下方一行按钮则提供了虚拟屏幕、源代码观察、复位、辅助工具、变量、DEBUG、堆栈及FLAGS(标志寄存器)观察等功能。
微机原理与接口技术实验报告
微机原理与接口技术实验报告实验目的:本次实验旨在熟悉并掌握微机原理与接口技术的相关知识,通过实例操作和分析实验数据,加深对微机原理与接口技术的理解。
一、实验器材与软件1. 硬件器材:计算机主机、外设设备2. 软件工具:操作系统、编程软件二、实验步骤及结果分析1. 实验1:计算机开机自检在实验中,通过开机启动计算机,观察计算机进行自检的过程。
根据显示屏上的自检信息,可以判断计算机硬件的工作状态。
2. 实验2:串口通信测试在本实验中,通过串口通信实现计算机与外设设备之间的数据传输。
首先,将串口接口连接到计算机主机,然后进行相应的设置,包括波特率、数据位、停止位和校验位等。
在实验中,通过编写相应的程序,实现计算机与外设设备之间的数据交互。
通过观察实验结果,判断串口通信是否正常。
3. 实验3:并口通信测试本实验旨在通过并行口通信实现计算机与外设设备之间的数据传输。
首先,将并行口接口连接到计算机主机。
然后,根据实验要求进行相应的设置,包括数据总线的宽度、传输模式等。
通过编写程序,实现计算机与外设设备之间的数据交互。
观察实验结果,判断并口通信是否正常。
4. 实验4:USB接口测试在本实验中,通过USB接口实现计算机与外设设备之间的数据传输。
首先,将USB接口连接到计算机主机。
然后,在计算机中安装相应的驱动程序。
通过编写程序,实现计算机与外设设备之间的数据交互。
观察实验结果,判断USB接口是否正常工作。
5. 实验5:网络接口测试本实验旨在通过网络接口实现计算机之间的数据传输。
首先,将计算机连接到局域网中的其他计算机。
然后,进行相应的设置,包括IP地址、子网掩码等。
通过编写程序,实现计算机之间的数据交互。
观察实验结果,判断网络接口是否正常工作。
三、实验总结通过本次实验,我对微机原理与接口技术有了更深入的了解,掌握了串口、并口、USB接口和网络接口等常用接口的使用方法。
通过实验的操作和分析,我对接口通信的原理和实现方式有了更详细的了解,对计算机与外设设备之间的数据传输有了更清楚的认识。
微机原理与接口技术实验报告_5
实验二初级程序的编写与调试实验一、实验目的1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序.2、深入了解数据在存储器中的存取方法,及堆栈中数据的压入与弹出.3、掌握各种寻址方法以及简单指令的执行过程.二、实验内容1.设堆栈指针SP=2000H,AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换.请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试.程序:MOV AX,3000MOV BX,5000MOV SP,2000PUSH AXPUSH BXPOP AXPOP BXHLT2.设DS=当前段地址,BX=0300H,SI=0002H请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入OAH,OBH,OCH,ODH,OEH.在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?-E 300 0A,0B,0C,0D,0E-AMOV BX,0300MOV SI,0002MOV AX,BXMOV AX,0304MOV AX,[0304]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI] HLT3.设AX=0002H,编一个程序段将AX的内容乘10,要求用移位的方法完成. 程序:MOV AX,0002MOV BX,AXMOV CL,2SHL AX,CLADD AX,BXMOV CL,1SHL AX,CLHLT实验四加法及判断程序的编写与调试一、实验目的1.熟练掌握编写汇编语言源程序的基本方法和基本框架.2.学会编写顺序结构,分支结构和循环结构的汇编程序3.掌握程序中数据的产生与输入输出的方法.二、实验内容1.用汇编语言编写一个加法程序:1325+9839请用ASCII码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加结果显示输出.程序:DATA SEGMENTDATA1 DB '5','2','3','1'DATA2 DB '9','3','8','9'DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 200 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXLEA SI,DATA1LEA DI,DATA2MOV CX,4MOV AH,0 NEXT:MOV AL,[SI]ADC AL,[DI]ADC AL,AHMOV AH,0AAAADD AL,30HMOV [DI],ALINC DIINC SILOOP NEXTMOV CX,5ADD AH,30HMOV [DI],AH NEXT1:MOV DL,[DI]MOV AH,02INT 21HDEC DILOOP NEXT1MOV AH,4CHINT 21H CODE ENDSEND START2.假设有一组数据:5,-4,0,3,100,-51,请编写一程序,判断:每个数是否大于0?等于0?还是小于0?并输出其判断结果,即即:1当X>0Y=0当X=0-1 当X<0程序:DATA SEGMENTDATA1 DB 5, -4, 0 ,3,100,-51STRING1 DB'Y=1','$'STRING2 DB'Y=0','$'STRING3 DB'Y=-1','$'DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 200 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXLEA SI,DATA1MOV CX,6NEXT: MOV AL,[SI]CMP AL,0JZ NEXT1JNS NEXT2JS NEXT3NEXT1: MOV DX,OFFSET STRING2MOV AH,09HINT 21HJMP NEXT4NEXT2: MOV DX,OFFSET STRING1MOV AH,09HINT 21HJMP NEXT4NEXT3: MOV DX,OFFSET STRING3MOV AH,09HINT 21HNEXT4: INC SILOOP NEXTMOV AH,4CHINT 21HCODE ENDSEND START实验五大小写字母互换程序的编写与调试一、实验目的进一步熟悉汇编语言源程序的编写方法及宏汇编程序的使用方法二、实验内容设内存数据区有大小写混合英文ASCII码字母: ‘AbCdEfGChinaAgriculturalUniversity’。
微机原理与接口技术实验报告二
微机原理与接口技术实验报告(二)1、实验内容一:实验目的:(1) 阅读《实验操作.ppt》, 学习汇编工具的使用(2) 学习附录的程序代码, 理解并输入、编译和查错3) 学习利用编译错误信息进行附录的程序修改;(程序包含一个语法错误和一个逻辑错误)4)学习程序流程控制: (条件跳转指令ja jb (call指令, 观察程序执行时堆栈的变化(学会用debug –g命令设置断点);5 )学习程序中有限的寄存器的使用。
2.实验内容:(1)打开masm for windows软件, 在其中输入实验要求附给的程序, 保存后运行, 程序报错:(2)经分析发现, “noneeded”没有定义, 改为“notneeded”后正常运行(3)运行过程中发现当字母或数字个数达到两位数时, 统计结果的各位与十位对调了。
如下图, 字母数应为13, 但显示为31(4)经检查, 发现第80行程序有误, inc指令应改为dec指令。
运行后程序正常, 调试完毕。
如下图程序框图如下:实验内容二:1.实验目的及内容:编写完整程序, 实现功能:统计以下字符串STR中空格的数目, 结果保存在COUNT中, 并把个数在屏幕上显示出来。
STR DB ' AB CDE FG H I J K L MNOPQ RST UV W XYZ 12 34 56 78 9'L EQU $-STRCOUNT DB ?(字符串STR可以从这里直接拷贝到程序中)实验结果:程序如下:dispmsg macro messgemov ah,9lea dx,messgeint 21hendmDATA segmenttishi db 0dh,0ah,'the original string is:' string db ' AB CDE FG H I J K L MNOPQ RST UV W XYZ 12 34 56 78 9' STRINGLEN= $-stringnewline db 0dh,0ahNspace db 0dH,0aH,'Number of char space is:',?,?Nsp db ?,'$'DATA endsSTACK segment stack 'stack'sta db 100 dup(?)stack endsCODE segmentASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,seg DATAMOV DS,AXxor cx,cxxor dl,dlmov cl,stringlenlea bx,stringcnt:mov al,[bx]cmp al,' 'jz yesspinc blloop cnt jmp shijinzhiyessp:inc dlinc blloop cntjmp shijinzhishijinzhi:lea bx,Nspmov ah,02hint 21hcall char2asc dispmsg tishiMOV AH,4CHINT 21Hchar2asc procmov dl,10 next: xor ah,ahdiv dladd ah,'0'mov [bx],ahdec bxor al,aljnz nextretchar2asc endpcode endsend startEND START运行结果如下:程序流程图如下:实验中遇到的问题及解决方法:1.汇编语言中寄存器有限, 在使用时注意是否保存寄存器中原有的值, 防止在使用寄存器时将原值改变。
微机原理与接口技术实验报告参考
微机原理与接口技术实验报告实验一显示程序实验一、实验目的1. 掌握在PC机上以十六进制形式显示数据的方法;2. 掌握部分DOS功能调用使用方法;3. 熟悉Tddebug调试环境和Turbo Debugger的使用。
二、实验所用设备1. PC微机一台。
三、实验内容一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。
本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。
实验中可使用DOS功能调用(INT 21H)。
(1) 显示单个字符输出入口:AH=02H调用参数:DL=t出字符(2) 显示字符串入口:AH=09H调用参数:DS:DX串地址,’$'为结束字符(3) 键盘输入并回显入口:AH=01H返回参数:AL=t出字符(4) 返回DO系统入口:AH=4CH调用参数:AL=M回码四、实验步骤1. 运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示;2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;3. 使用Rmrun菜单中的Run,运行程序,观察运行结果;4. 使用Rmrun菜单中的Debug调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;5. 更改数据区中的数据,考察程序的正确性。
图1-1显示程序实验流程图五、程序清单DATA SEGMENTMES DB 'laoshihao:', 0AH,0DH,'$' SD DB 'b'DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV DX, OFFSET MESMOV AH, 09HINT21HMOV DI, OFFSET SDMOV AL, DS:[DI]AND AL, 0F0HSHR AL,4CMP AL, 0AHJB L1ADD AL, 07HL1: ADD AL, 30HMOV DL, ALMOV AH, 02HINT21HMOV AL, DS:[DI]AND AL, 0FHCMP AL, 0AHJB L2ADD AL, 07HL2: ADD AL, 30HMOV DL, ALMOV AH, 02HINT21HMOV AX, 4C00HINT21HCODE ENDSEND START六、实验调试过程调试过程中出现警告,显示没有使用堆栈段。
微机原理与接口技术实验报告
微机原理与接口技术实验报告实验一,微机原理实验。
1. 实验目的。
本实验旨在通过对微机原理的实验,加深学生对微机原理相关知识的理解,提高学生的动手能力和实验技能。
2. 实验内容。
本实验主要包括微机原理的基本知识、微处理器的结构和功能、微机系统的总线结构、存储器与I/O接口。
3. 实验步骤。
(1)了解微机原理的基本知识,包括微处理器的分类、功能和工作原理。
(2)学习微机系统的总线结构,掌握总线的分类、功能和工作原理。
(3)了解存储器与I/O接口的基本概念和工作原理。
(4)进行实际操作,通过实验板进行微机原理实验,加深对微机原理知识的理解。
4. 实验结果。
通过本次实验,我深刻理解了微机原理的基本知识,掌握了微处理器的结构和功能,了解了微机系统的总线结构,以及存储器与I/O接口的工作原理。
通过实际操作,我对微机原理有了更深入的认识,提高了自己的动手能力和实验技能。
实验二,接口技术实验。
1. 实验目的。
本实验旨在通过对接口技术的实验,加深学生对接口技术相关知识的理解,提高学生的动手能力和实验技能。
2. 实验内容。
本实验主要包括接口技术的基本知识、接口电路的设计与调试、接口技术在实际应用中的作用。
3. 实验步骤。
(1)了解接口技术的基本知识,包括接口的分类、功能和设计原则。
(2)学习接口电路的设计与调试,掌握接口电路设计的基本方法和调试技巧。
(3)了解接口技术在实际应用中的作用,包括各种接口的应用场景和实际案例。
(4)进行实际操作,通过实验板进行接口技术实验,加深对接口技术知识的理解。
4. 实验结果。
通过本次实验,我深刻理解了接口技术的基本知识,掌握了接口电路的设计与调试方法,了解了接口技术在实际应用中的作用。
通过实际操作,我对接口技术有了更深入的认识,提高了自己的动手能力和实验技能。
总结。
通过微机原理与接口技术的实验,我对微机原理和接口技术有了更深入的理解,提高了自己的动手能力和实验技能。
希望通过今后的学习和实践,能够更加深入地掌握微机原理与接口技术的知识,为将来的工作和研究打下坚实的基础。
微机原理及接口技术-小灯闪烁仿真实验实验报告
实验报告
课程名称微机原理及接口技术
实验名称实验报告(一):小灯闪烁仿真实验
实验目标:利用Keil的仿真实验环境,编程实现使连接到P1.0引脚的小灯亮灭闪烁。
请图文结合详细描述实验流程与实验结果,给出带注释的源代码以及实验结论等。
1.实验流程
·新建一个工程项目文件,并取名为“led闪烁”,同时选择目标器件AT89C51。
由于是汇编语言,故而选择“否”
·将文件添加到项目中并键入程序
创建文件,保存为“led闪烁.asm”,并将文件添加到项目中。
将程序键入。
·为工程项目设置软硬件调试环境并生成.hex文件。
·程序文件的编译·软件仿真、调试
在调试窗口调试,观察P1观察口。
运行程序可观察到P1窗口闪烁变化。
2. 实验结果
·编译结果
·P1.0引脚的小灯亮灭闪烁结果
3. 带注释的源代码
4. 实验结论、建议和意见
实验结论:
利用Keil的仿真实验环境,可以通过设置延时来编程实现并观察到P1.0引脚的小灯亮。
微机原理及接口技术实验报告
微机原理及接口技术实验报告一、实验目的本实验旨在通过掌握微机原理和接口技术的实验操作,实践相关理论知识,加深对微机原理和接口技术的理解。
二、实验设备和材料1.计算机主机2.操作系统3.接口卡4.编程软件三、实验原理微机原理是指通过学习微机的结构、功能和工作原理,从硬件层面掌握微机的基本知识。
接口技术是指连接不同设备之间的通信和数据交换技术,通过学习接口技术可以实现设备的互联和数据的传输。
四、实验步骤1.将接口卡插入计算机主机的扩展槽中。
2.启动计算机,并加载操作系统。
3.打开编程软件,编写实验程序。
4.将编写好的程序烧录到接口卡中。
5.连接外部设备和接口卡,并确认连接正确无误。
6.运行程序,并观察外部设备和接口卡之间的数据交互情况。
7.分析实验结果,并记录实验数据。
8.关闭程序和计算机。
五、实验结果及分析通过实验我们成功连接了外部设备和接口卡,并实现了数据的传输和交互。
在程序运行过程中,我们观察到外部设备正常工作,并且与接口卡之间的通信稳定可靠。
根据实验数据分析,我们可以得出接口卡的性能良好,并且能够满足实际应用需求。
六、实验心得通过这次实验,我对微机原理和接口技术有了更深入的理解。
实践操作让我加深了对硬件设备和软件编程的认识,掌握了实现设备互联和数据传输的基本方法。
在实验过程中,我遇到了一些问题,如接口卡的插入和连接问题,但通过查阅资料和请教老师同学,最终成功解决了这些问题。
我发现实验不仅帮助我巩固了理论知识,也提高了我的实践能力和解决问题的能力。
总结起来,微机原理和接口技术是计算机相关专业的基础课程之一,通过实验的方式学习可以更好地将理论知识与实际应用相结合。
我相信通过不断的实践和学习,我会在微机原理和接口技术方面有进一步的提高和发展。
微机原理与接口技术实验报告
微机原理与接口技术实验报告实验目的,通过本次实验,掌握微机原理与接口技术的基本知识,了解并掌握微机接口技术的应用方法。
实验仪器与设备,微机实验箱、接口卡、示波器、电源等。
实验原理,微机接口技术是指微机与外部设备进行数据交换的技术。
它是微机与外部设备之间的桥梁,通过接口技术可以实现微机与外部设备之间的数据传输和通信。
实验内容与步骤:1. 实验一,串行通信接口实验。
a. 将串行通信接口卡插入微机实验箱的接口槽中;b. 连接示波器和外部设备,并进行数据传输测试;c. 观察并记录数据传输的波形和数据传输情况。
2. 实验二,并行通信接口实验。
a. 将并行通信接口卡插入微机实验箱的接口槽中;b. 连接外部设备,并进行数据传输测试;c. 观察并记录数据传输的情况。
3. 实验三,AD转换接口实验。
a. 将AD转换接口卡插入微机实验箱的接口槽中;b. 连接外部模拟信号源,并进行模拟信号转换测试;c. 观察并记录模拟信号转换的波形和数据传输情况。
实验结果与分析:1. 串行通信接口实验结果分析:通过实验发现,在串行通信接口实验中,数据传输的波形稳定,数据传输速度较快,适用于对数据传输速度要求较高的应用场景。
2. 并行通信接口实验结果分析:在并行通信接口实验中,数据传输稳定,但数据传输速度相对较慢,适用于对数据传输速度要求不高的应用场景。
3. AD转换接口实验结果分析:经过实验发现,AD转换接口可以将模拟信号转换为数字信号,并且转换精度较高,适用于对信号转换精度要求较高的应用场景。
实验总结与展望:通过本次实验,我们深入了解了微机原理与接口技术的基本知识,掌握了串行通信接口、并行通信接口和AD转换接口的应用方法。
同时,也发现不同接口技术在数据传输速度、稳定性和精度方面各有优劣,需要根据实际应用场景进行选择。
未来,我们将继续深入学习和探索微机接口技术的应用,为实际工程项目提供更好的技术支持。
结语:通过本次实验,我们对微机原理与接口技术有了更深入的了解,实验结果也验证了接口技术在数据传输和信号转换方面的重要作用。
微机原理与接口技术软件试验报告
微机原理与接口技术软件试验报告一. 目的1. 进一步掌握子程序的设计2. 进一步掌握分支程序的设计3. 掌握循环程序的设计;4. 掌握中断程序设计方法;5. 练习数据格式的转换;6. 使用DEBUG 调试复杂程序;3. 掌握使用DOS 系统功能调用进行输入/输出.二. 内容设计一个除法器。
被除数可以为任意一个16位带符号十进制数,除数可为任意一个8位带符号十进制数.三. 作业要求1. 利用DOS 1号功能调用,顺序从键盘输入被除数、除运算符“/”及除数与回车. 要求:✓ 输入的数若为负数,则前面应冠以“-”号, 如-65;✓ 输入时若出现以下任一种情况,则显示“Input error!” (之后程序须提示重新输入):⏹ 输入的被除数在范围]32767,32768[-之外. ⏹ 被除数之后紧跟的不是除运算符“/”.⏹ 输入的除数在范围]127,128[-之外. 2. 若正确输入,则屏幕应显示除法运算的结果, 即商及余数. 例如若输入: 56/9则屏幕下一行应显示: 56/9=6, remainder=2.此时, 如果所输入的除数值为(你所在班级的最后两位数字 + 你在该班内的班内序号), 则程序显示完运算结果后结束并返回DOS. 否则,如果程序开始运行以来已连续5次进行了正确的输入并给出结果,则程序结束并返回DOS; 否则程序继续提示输入.3. 如果被除数为0,则显示错误信息: “Divided by 0!”,之后立即返回DOS.4.除法运算操作须使用除法指令IDIV (除数为0时可以例外), 当结果(商)超出范围[ 时, 显示错误信息: “Overflow!”, 之后立即返回DOS.,128]127***注: 应通过是否引起0号中断来判断除法运算是否溢出, 且0号除法溢出中断服务程序必须放在代码段偏移地址为0100H开始的地方.5.显示运算结果的商或余数前,必须先进行带符号补码表示的数到对应的十进制ASCII码数字串的转换. 该转换工作必须写成一个子程序, 且该子程序有如下要求:; 子程序功能:将一个(字节)带符号补码表示的数转换成对应的十进制ASCII码数字串,并以'$'结束; 入口参数: AL = 待转换的带符号数(一个字节长,最高位为符号位); 出口参数: DI = 存放相应结果ASCII码串的首地址; 例如: 若入口参数AL = 93H, 则子程序返回时,DS:DI所指处将存有如下字符串: '-109$'.注: 该作业必须最迟在实验验收前一周上交.四.实验要求(现场演示, 程序编辑除外)1.编辑前述作业三完成的8086汇编源程序,然后进行汇编及连接以生成可执行文件.2.执行程序, 演示如下各种输入情况:(a)被除数与除数均为正数(b)被除数与除数均为负数(c)被除数与除数的符号位不同(d)输入如下特殊情况: -128/1; 12345/11; 23/0; 1134/127; 1145/128;32768/12345; -32769/126.(e)输入的除数值为: 你所在班级的最后两位数字+ 你在该班内的班内序号.3.调用DEBUG软件对该可执行文件进行调试,并顺序完成如下所提要求或回答相关问题:(a)设置相关断点,在输入完被除数并转换成等效的带符号二进制数后停下,指出所输入的被除数存放位置.(b)设置相关断点,在输入完除数并转换成等效的带符号二进制数后停下,指出所输入的除数存放位置.(c)设置相关断点, 在执行除法运算指令IDIV 之前停下,解释当前堆栈内容.(d)输入合适的被除数与除数以便能引起0号除法溢出中断, 在执行到溢出中断服务程序的第一条指令前停下,检查并解释当前堆栈内容. DATA SEGMENTinput1 DB 50 DUP(?)input2 DB 50 DUP(?)COUNT1 DB ? ;计算被除数负号输入次数COUNT2 DB ? ;计算除数负号输入次数COUNT DB ? ;计算/输入次数C5 DB ? ;5次SUM1 DW ? ;存放被除数的大小SUM2 DB ? ;存放除数的大小cbei DW ? ;被除数位数cchu DW ? ;除数位数f1 DB ? ;beif2 DB ? ;-f3 DB ? ;chuYICHU DB ? ;溢出标志位CZ DB ? ;位数SEGDATA DW ?OFFDATA DW ?STRING1 DB 'Input error!',0DH,0AH,'$'STRING2 DB 0DH,0AH,'Divided by 0!',0DH,0AH,'$' STRING3 DB 0DH,0AH,'Overflow!',0DH,0AH,'$' STRING4 DB 'Please input again!',0DH,0AH,'$' STRING5 DB 0DH,0AH,'OVER',0DH,0AH,'$' STRSHOW DB 40 DUP('$')STRIN DB 50 DUP('$')STRHELP DB 0DH,0AH,'$' ;换行STRHELP1 DB ',remainder=','$'STR5 D B 'Times=5','$'DATA ENDSSTACK SEGMENT STACK 'STACK'DB 1000 DUP (0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA ORG 100HINT00 PROC FARPOP CXADD CX,2PUSH CXMOV SEGDATA,SEG STRING3MOV OFFDATA,OFFSET STRING3CALL F AR PTR DISPMOV YICHU,1IRETINT00 ENDPDISP PROC FAR ;显示子程序PUSH AXPUSH DXPUSH DSMOV AH,09H ;显示字符串MOV DX,SEGDATAMOV DS,DXMOV DX,OFFDATAINT 21HPOP DSPOP DXPOP AXRETDISP ENDPSHOW PROC FARMOV CZ,0MOV DI,OFFSET STRSHOWCMP A L,0BJ1: JS BJ3JNS BJ4BJ3: JNO FU ;最高位是1,次高位是1 JO ZHENG ;最高位是1,次高位是0BJ4: JO FU ;最高位是0,次高位是1 JMP ZHENG ;最高位是0,次高位是0 FU: NEG AL ;负数的绝对值PUSH DXMOV DL,2DH ;-号MOV [DI],DLPOP DXINC DIZHENG: MOV AH,0MOV BL,0AHDIV BL ;AL...AHMOV DH,AHMOV DL,0ADD DH,30HPUSH DXINC CZCMP A L,0 ;若商为不零,继续重复JNZ ZHENGMOV CL,CZMOV CH,0LOOP10: POP DXMOV [DI],DHINC DILOOP LOOP10PUSH DXMOV DL,24HMOV [DI],DLPOP DXRETSHOW ENDPSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV C5,5HLOOPA: MOV COUNT1,1MOV COUNT2,1MOV COUNT,1MOV SUM1,0MOV SUM2,0MOV f1,1 ;beiMOV f2,1 ;-MOV f3,1 ;chuMOV SI,OFFSET input1MOV DI,OFFSET input2MOV cbei,0MOV cchu,0MOV YICHU,0MOV BX,OFFSET STRININPUT: MOV AH,1INT 21HCMP A L,1BH ;检测是否按下ESC退出键JNZ A1JMP OUTALL2A1: CMP AL,2DH ;若不是-号,跳到A JNZ A;-号的处理CMP f1,1JZ GCMP f2,0JZ DE: MOV SEGDATA,SEG STRHELPMOV OFFDATA,OFFSET STRHELPCALL D ISPMOV SEGDATA,SEG STRING1 MOV OFFDATA,OFFSET STRING1CALL D ISPMOV SEGDATA,SEG STRING4MOV OFFDATA,OFFSET STRING4CALL D ISPJMP STARTG: CMP C OUNT1,1 ;被除数是否只有一个- JNZ EDEC COUNT1MOV [BX],ALINC BXJMP INPUTD: CMP f3,1JNZ ECMP C OUNT2,1 ;000JNZ EDEC COUNT2MOV [BX],ALINC BXJMP INPUTE3: JMP EA: CMP A L,2FH ;若不是/号,跳到B JNZ B;/的处理CMP f1,0JNZ E3CMP f2,1JNZ E3CMP f3,1JNZ E3CMP C OUNT,1JNZ E3DEC COUNTDEC f2MOV [BX],ALINC B XJMP INPUTB: CMP A L,0DH ;若不是回车,跳到F JNZ F;回车的处理CMP f1,0JNZ E2CMP f2,0JNZ E2CMP f3,0JNZ E2PUSH DXMOV DL,3DH ;=号MOV [BX],DLINC BXMOV DL,24H ;$MOV [BX],DLPOP DXJMP OUT1F: CMP A L,30H ;判断输入的是不是数字JL E2CMP A L,39HJG E2CMP f2,1JNZ chushubeichu: MOV f1,0MOV [SI],ALINC SIMOV [BX],AL;INC BXINC cbeiJMP INPUTchushu: MOV f3,0MOV [DI],ALINC DIMOV [BX],ALINC BXINC cchuJMP INPUT;JMP OUT1E2: JMP E3OUT1: CMP c bei,5JG E2JL I ;被除数小于5位,在合理范围内,跳到IH: MOV SI,OFFSET input1 ;输入的被除数是5位MOV AL,[SI]SUB AL,30HCMP A L,3 ;判断5位被除数是否超出范围JG E2JL IMOV AL,[SI+1]SUB AL,30HCMP A L,2JG E2JL IMOV AL,[SI+2]SUB AL,30HCMP A L,7JG E2JL IMOV AL,[SI+3]SUB AL,30HCMP A L,6JG E2JL IMOV AL,[SI+4]SUB AL,30HCMP A L,7JLE ICMP A L,8JG E2CMP C OUNT1,0JNZ E2I: CMP c chu,3JG E1JL J ;除数小于3位,在合理范围内,跳到JMOV DI,OFFSET input2 ;输入的除数是3位MOV AL,[DI]SUB AL,30HCMP A L,1 ;判断3位除数是否超出范围JG E1JL JMOV AL,[DI+1]SUB AL,30HCMP A L,2JG E1JL JMOV AL,[DI+2]SUB AL,30HCMP A L,7JLE JCMP A L,8JG E1CMP C OUNT2,0JNZ E1JZ JE1: JMP E2J: MOV CX,cbeiMOV SI,OFFSET input1LOOP1: MOV BL,[SI] ;求出输入被除数的值SUB BL,30HMOV BH,0MOV AX,SUM1PUSH CXMOV CL,3SHL AX,CLSHL SUM1,1ADD SUM1,AXADD SUM1,BXPOP CXINC SILOOP LOOP1;CMP SUM1,0;JZ OUT0MOV CX,cchuMOV DI,OFFSET input2LOOP2: MOV BL,[DI] ;求出输入除数的值SUB BL,30HMOV AH,SUM2PUSH CXMOV CL,3SHL AH,CLSHL SUM2,1ADD SUM2,AHADD SUM2,BLPOP CXINC DILOOP LOOP2CMP S UM2,0 ;除数为零时,显示“Divided by 0!”JZ OUT0JMP OUTDOSOUT0: MOV SEGDATA,SEG STRING2MOV OFFDATA,OFFSET STRING2CALL D ISPJMP OUTALLOUTDOS: CMP C OUNT1,0JNZ K ;被除数为正数NEG SUM1 ;被除数为负数,求补K: CMP C OUNT2,0JNZ L ;除数为正数NEG SUM2 ;除数为负数,求补L: STI ;允许中断MOV AL,0MOV AH,35HINT 21HPUSH ESPUSH BXPUSH DSMOV AX,SEG INT00MOV DS,AXMOV DX,OFFSET INT00MOV AL,0MOV AH,25HINT 21HPOP DSMOV AX,SUM1 ;计算出商和余数MOV BL,SUM2IDIV BL ;AL???AHPOP DXPOP CXPUSH DSPUSH AXMOV DS,CXMOV AL,0MOV AH,25HINT 21HPOP AXPOP DSCMP Y ICHU,1JZ OUTALL1MOV SEGDATA,SEG STRHELPMOV OFFDATA,OFFSET STRHELPCALL D ISPMOV SEGDATA,SEG STRINMOV OFFDATA,OFFSET STRINCALL D ISPPUSH AX ;显示商CALL S HOWPOP AXMOV SEGDATA,SEG STRSHOWMOV OFFDATA,OFFSET STRSHOWCALL D ISPMOV SEGDATA,SEG STRHELP1MOV OFFDATA,OFFSET STRHELP1CALL D ISPPUSH AXMOV AL,AH ;显示余数CALL S HOWPOP AXJMP YOUTALL1:JMP OUTALLY: MOV SEGDATA,SEG STRSHOWMOV OFFDATA,OFFSET STRSHOWCALL D ISPCMP S UM2,32H ;若输入的除数为50,则返回DOS JZ OUTALLMOV SEGDATA,SEG STRHELPMOV OFFDATA,OFFSET STRHELPCALL D ISPDEC C5CMP C5,0JZ T5JMP LOOPAT5: MOV SEGDATA,SEG STR5MOV OFFDATA,OFFSET STR5CALL D ISPJMP OUTALLOUTALL2:MOV S EGDATA,SEG STRING5MOV OFFDATA,OFFSET STRING5CALL D ISPOUTALL: MOV AH,4CHINT 21HCODE ENDSEND START。
微机原理与接口技术实验报告
微机原理与接口技术实验报告实验一、认识Tddebug集成操作软件一.实验内容(一)实验题目:数据传送实验1. 编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
2. 修改此程序,采用字符串传送指令完成。
(二)实验目的:通过对该程序进行调试,查看程序段、数据段、附加段装入内存后的分配情况。
单步执行数据传送指令后,观察各个寄存器及数据区的内容。
(三)实验步骤:1. 运行Tddebug软件,选择Edit菜单编写实验程序2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
3. 使用Rmrun菜单中的Run运行程序,观察运行结果。
4. 使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。
单步执行数据传送指令后,观察各寄存器及数据区的内容。
过程如下:1) 按F7单步执行,在代码区中有一个三角,表示正在执行的指令。
每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。
2) 检查内存数据区的内容,关键是找出用户程序的数据段和附加段:方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES寄存器的值:偏移地址”,即可显示用户指定的数据区方法2:选择菜单View| Dump,弹出内存数据显示窗口。
3) 查看执行结果:按Alt+F5,切换到用户窗口。
5. 更改数据区中的数据,考察、调试程序的正确性。
二.分析设计思想,绘制实验原理图、流程图。
汇编语言程序的开发过程如图1.1所示,这个过程主要有编辑、编译、链接几个步骤构成。
三.程序清单及相关注释。
DDATA SEGMENTMSR DB "HELLO,WORLD!$"LEN EQU $- MSRDDATA ENDSEXDA SEGMENTMSD DB LEN DUP(?);定义源数据段;定义附加数据段EXDA ENDS;定义堆栈段 MYSTACK SEGMENTSTACK DW 20 DUP(?)MYSTACK ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DDATA,ES:EXDASTART: MOV AX,DDATAMOV DS,AX ;装载数据段寄存器MOV AX,EXDAMOV MOV MOV MOV MOV ES,AX ;装载附加数据段寄存器SI,OFFSET MSR DI,OFFSET MSD CX,LEN BX,0NEXT: MOV AL,MSR[BX] ;开始传输数据MOV ES:MSD[BX],ALINC BXLOOP NEXTPUSH ESPOP DS ;将附加段寄存器指向的段值赋给数据段寄存器MOV DX,OFFSET MSDMOV AH,9I N T 2 1 H M O V A H , 4 C H / p >。
微机原理与接口技术,实验报告一
微机原理与接口技术,实验报告一评阅微机原理与接口技术实验报告一姓名匡越学号***-*****16 时间地点实验题目一、实验目的1. 熟悉Keil软件使用 2. 熟悉MCS-51指令 3. 学习简单程序的调试方法二、实验说明通过实验了解单片机内部存储器的结构和分配及读写存储器的方法,熟悉MCS-51指令同时,学习单片机程序编程、调试方法。
三、实验内容及步骤1.启动PC机,打开Keil软件,软件设置为模拟调试状态。
在所建的项目文件中输入源程序1,进行编译,如有错误按提示找到该行并纠错,重新编译直到通过。
2.编译无误后,打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化并将观察到的结果记录到预习报告。
3.新建另一个项目输入源文件2,打开CPU窗口,选择单步或跟踪执行方式运行程序,观察存储块数据变化情况记录到预习报告。
点击复位按钮,改变存储块数据,点击全速执行快捷按钮,点击暂停按钮,观察存储块数据变化情况,记录到预习报告。
点击复位按钮,改变存储块数据,分别LOOP、LOOP1设置断点,点击全速执行快捷按钮,在断点处观察寄存器及存储块数据变化情况。
WAVE软件使用方法参考其帮助文件。
四、实验程序流程框图、实验程序1、源程序1 ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV R0,#30H ;(R0)= (00H)= MOV A, #40H ;(A)= MOV R6, A ;(A)= ,(R6)= MOV A, @R0 ;(R0)= (A)= MOV 40H, A ;(A)= (40H)= MOV 30H,40H ;(30H)= (40H)= MOV R1,#40H ;(R1)= MOV @R1,#0AAH;(R1)= (40H)= MOV SP,#60H;(SP)= PUSH ACC;(SP)= (61H)= PUSH 30H; (SP)= (62H)= MOV A,#0FFH;(SP)= (A)= MOV 30H,#30H;(SP)= (30H)= POP ACC;(SP)= (A)= POP 30H;(SP)= (30H)= ADD A,30H;(30H)= (A)= Cy= SUBB A,#10;(A)= Cy= MOV R4,#***-*****B;(R4)= H MOV A,#39H;(A) = ADD A,R4;(A) = (R4=) DA A;(A) = Cy= MOV 28H,#55H;(28H) = Cy= MOV C,40H;(PSW) = Cy= MOV 26H,#00H;(26H) = Cy= MOV 30H,C;(30H) = (26H.1) = SJMP $ j点击project,选择下拉式菜单中的New project;k选择所要的单片机,这里我们选择常用的Ateml 公司的*****;l新建一个File,输入源程序;m将新建文件保存为text.asm的格式;n鼠标在屏幕左边的Source Group1 文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。
微机原理与接口技术实验
Flying College of BinZhou University
© 2009 Yuanwei
微机原理与接口技术实验
试验程序框图
Flying College of BinZhou University
© 2009 Yuanwei
微机原理与接口技术实验
试验六: A/D转换试验
Flying College of BinZhou University
用8255PA口控制PB口。
试验接线
PA0~PA7→K1~K7;(开关量输入模块) PB0~PB7→L1~L8;(发光管输出模块) 8255数据、控制线内部已线连好。
Flying College of BinZhou University
© 2009 Yuanwei
微机原理与接口技术实验
编程指南
⒈ 8255A芯片简介:8255A可编程外围接口芯片是INTEL企业 生产旳通用并行接口芯片,它具有A、B、C三个并行接口,用 +5V单电源供电,能在下列三种方式下工作: 方式0:基本输入/ 输出方式 方式l:选通输入/ 输出方式 方式2:双向选通工作方式 ⒉ 使8255A端口A工作在方式0并作为输入口,读取Kl-K8个开 关量,PB口工作在方式0作为输出口。
© 2009 Yuanwei
微机原理与接口技术实验
试验目旳
1、学习微机系统中扩展简朴I/O口旳措施。 2、学习数据输入输出程序旳编制措施。
试验内容
利用74LS244作为输入口,读取开关状态,并将此状态经过 74LS273再驱动发光二极管显示出来。
Flying College of BinZhou University
© 2009 Yuanwei
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一篇软件实验实验一存储器块操作实验一、实验目的1. 熟悉KEIL集成调试环境和汇编程序的调试方法。
2. 掌握存储器读写方法;3. 了解内存块的移动方法;二、实验说明实验1 指定某存储器的其实地址和长度,要求能将其内容赋值。
通过该实验学生可以了解单片机读写存储器的方法,同时也可以了解单片机编程、调试方法。
块移动是单片机常用操作之一,多用于大量的数据复制和图像操作。
例程2给出起始地址,用地址加1方法移动块,将指定源地址和长度的存储块移到指定目标为起始地址的单元中去。
移动3000H起始的256个字节到4000H起始的256个字节。
三、实验内容1. 试编程将片内RAM中的数据依次复制到片外RAM。
假设源数据区的首地址为40H,目的数据区的首地址为1000H,数据块长度为10H。
流程图:程序:运行结果:Memory显示,片内RAM中40H开始数据为03 00 29 00 00 00 71 00 AB 00 00 00 1E 00 00 FF,说明测试数据已经成功输入片内RAM。
从片外RAM中1000H位置开始记录为03 00 29 00 00 00 71 00 AB 00 00 00 1E 00 00 FF,说明片内RAM从40H开始的数据已经成功复制到片外从1000H开始的地址。
2. 两个16位无符号二进制数分别存放在片外RAM首址为2000H和2002H单元内,将它们相加,结果存入RAM 30H(低8位)、31H(高8位)。
程序(以0506H+CDEFH为例):0506H和CDEFH已存入片外单元,运算结果D2F5已存入30H和31H中。
四、思考题1. 如何将存储块的内容置成某固定值(例全填充为0FFH)?请用户修改程序,完成此操作。
答:将源程序中的MOV A, #01H 改为MOV A,#0FFH即可。
2. 若源块地址和目标地址有重叠,该如何避免?答:先执行一次数据转移操作将源块地址中的数据先暂存入一块地址与目标地址和源块地址均不重叠的存储区,再执行一次数据转移操作将暂存区的数据移入目标地址区域。
五、心得体会本次实验我学会了数据块的移动和赋值。
片内数据的移动和计算比较简便,涉及到片外数据的计算时要增加移动到片内的步骤。
当数据需要进行保护时可以设定数据暂存区。
本实验微机原理的第一个实验,刚开始编程时有一点困难。
我体会到了汇编语言的特点。
与其他语言相比,它不仅要求良好的逻辑能力,而且要求编程者有较好的硬件知识。
比如本次实验中,一开始我的编译一直报错,原来是将MOVX A,@DPTR指令错写成了MOV A,@DPTR。
MOV指令用于内部RAM数据传送,而MOV用于外部数据传送。
我体会到只有充分了解单片机的硬件结构,才能使用正确的指令,让编程正确无误的进行。
这也是我今后要加强学习的重点。
实验二数值转换实验一、实验目的1、熟悉Keil集成调试环境和汇编程序的调试方法。
2、掌握简单的数值转换算法。
3、基本了解数值的各种表达方法。
4、掌握数值的加减法运算。
5、掌握用查表的方法将BCD值转换成ASCII值。
二、实验说明单片机系统内部运算用二进制,而输入输出常用十进制,以符合日常习惯,因此数制转换是仪表设计中常用的程序之一。
单片机中的数值有各种表达方式,这是单片机的基础。
掌握各种数制之间的转换是一种基本功。
三、实验内容1. 把R3中的8位二进制数转换成压缩BCD 码,存放在45R R中。
流程图:程序:从寄存器中R4、R5的记录可以知道,输入的源数据123被分解成01H和23H 分别储存在R4、R5,程序运行成功。
2. 设4位BCD码abcd依次存放在内部RAM中50H~53H单元的低4位,(高4位为0)。
试编程将其转换为二进制数并存入R6R7中。
方法思路:1)计算1000a,高位存入30H,低位存入31H2)计算100c,高位存入32H,低位存入33H3)计算10b,结果存入52H4)计算1000a+100c,高位存入R0,低位存入R15)计算10b+d,结果存入R2运行结果:可知运行结果是2694H,与9876BCD转化成二进制码的结果一致,所以程序正确。
四、思考题BCD码转换成二进制的算法是什么?例如:(91)BCD对应的二进制数是多少?答:对于一个8位BCD码,高四位*10+低四位即为二进制。
如(91)BCD=1001B*1010B+0001B=01011011B 五、心得体会经过本实验,我对BCD码和二进制、十进制码之间的相互关系进行了更深一步的了解,学会了单片机这几种数制之间的相互转化。
我深刻体会到,在运算中要注意单片机中数字溢出的问题。
如在实验2中,计算1000*a,不能直接使用语句MOV A,#1000语句,因为无符号8位二进制数的表示范围只有0~255。
所以将1000拆成100*10,与a相乘两次。
至于先乘100还是10,考虑到BCD码,a的最大值是9,与10相乘不会产生进位,比较方便第二次与100相乘时的程序书写。
如果与100相乘可能会出现结果大于255,程序编写比较复杂。
以上思考分析过程需要对各种数制的特点非常了解,这也是一名工程人员的基本要求。
实验三程序跳转表实验一、实验目的1、熟悉KEIL集成调试环境和汇编程序的方法。
2、了解简单的函数计算。
3、掌握多分支结构程序的编程方法。
二、实验说明多分支结构是程序中常见的结构,在多分支结构的程序中,能够按调用号指向相应的功能,完成指定操作。
若给出调用号来调用子程序,一般用查表法,查到子程序的地址,转到相应子程序。
三、实验内容流程图如下:运行结果:(1)当x=44时,y=88=58H(2)当x=0时,y=0(3)当x=-127时,计算机内部以补码表示,(-127)补码=81H。
y=-63,输出以原码表示,(-63)=BFH四、思考题1. 写跳转程序时要注意些什么?1)给每个子程序赋一个名字,实际是一个入口地址的代号。
2)要能正确地传递参数。
即首先要有入口条件,用来说明进入子程序时,它所要处理的数据如何得到(比如,是把它放在ACC中,还是放在某工作寄存器中等)。
另外,要有出口条件,即处理的结果是如何存放的。
3)注意保护现场和恢复现场。
在执行子程序时,可能要使用累加器或某些工作寄存器。
而调用子程序之前,这些寄存器中可能存放有主程序的中间结果,这些中间结果是不允许破坏的。
因此,在子程序使用累加器和这些工作寄存器之前,需要将其中的内容保存起来,即保护现场。
当子程序执行完,即将返回主程序之前,再将这些内容取出,送回累加器或原来的工作寄存器,这一过程成为“保护现场”。
4)为了使子程序具有一定的通用性,子程序中的操作对象应尽量采用地址或寄存器形式而不用立即数形式。
另外,子程序中如含有转移指令,应尽量采用相对转移指令;以便它不管存放在内存的哪个区域都能正确执行。
2. 跳转的作用有哪些?1)是程序简化,增加可读性和修改性2)减少一些重复程序的编写,节约内存。
实验四数据排序实验一、实验目的1、熟悉KEIL集成调试环境和汇编程序的调试方法。
2、掌握排序程序的设计方法。
二、实验说明本例程采用交换排序法将内部RAM中的50~59H单元中的10个单字节无符号二进制按从小到大的次序排列,并将这一列排序后的数据从小到大依次存储在外部RAM1000H的开始处。
原始数据情况:第一次排序结果:第二次排序结果:第三次排序结果第四次排序结果第五次排序结果:第六次排序结果:第七次排序结果:第八次排序结果:第九次排序结果:外部RAM1000H处开始的数据情况:四、实验任务画出本实验程序的流程图。
答:见本实验的最后一页。
五、心得体会本实验是一个冒泡法的数据排序程序。
主要思想是从a[0]开始,依次与后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n]。
小的数字就像气泡一样往前冒。
程序循环多的时候,使用子程序就很方便。
不仅增加了程序的可读性,而且也节省了内存的空间。
当程序比较复杂,调试程序时,可以在程序中设置相应的断点。
Keil软件设置断点的方式十分简单,只要在单击相关语句即可,因此是一种简单高校的调试方法。
实验五键盘显示仿真实验一、实验目的1、熟悉Keil集成调试环境和汇编程序的调试方法。
2、学习使用外围接口工具调试程序。
3、熟悉键盘显示接口电路及程序设计。
二、实验要求三、实验内容根据键盘、LED仿真板,设计一个走马灯程序通过按键启停。
主程序是一个循环点灯程序,其流程图如下所示。
按键启停功能由外部中断口p3.2完成。
触发方式为低电平触发。
当按键按下时,将一个0信号送入P1口,于是灯灭。
中断处理程序的流程图如下:当无键按下时,8盏灯向左循环点亮,中断寄存器状态全为0.当按下P3.2口,可见外部中断0相关寄存器状态置1,同时灯全灭。
所以用按键控制灯的亮灭的走马灯设计成功。