微机原理实验4

合集下载

微机原理综合实验报告

微机原理综合实验报告

微机原理综合实验报告目录一.8255并行口实验二.8259中断实验(一)三.8253定时/计数器实验四.A/D转换实验五.步进电机实验六.综合实验:十字路口交通灯实验七.实验体会四.8255并行口实验1.实验目的:(1)学习利用并行接口芯片8255构成并行接口电路的基本方法(2)熟悉掌握并行接口芯片8255的基本性能及在时间应用中的硬件连接、初始化编程方法2.实验内容:编写程序,使8255的PB口为输出口,PA口为输入口,从PA口将K0~K7作为一个字节读入,在从PB口输出这一反码字节。

3.实验程序:CODE SEGMENTASSUME CS:CODESTART:MOV DX,21BH ;8255初始化命令字MOV AL,90HOUT DX,ALBG: MOV DX,218H ;从PA口读入数据IN AL,DXXOR AL,FFH ;求反MOV DX,219HOUT DX,AL ;从PB口输出JMP BGCODE ENDSEND START4.实验框图5. 实验电路图6.实验方法说明通过8255控制字设定PA口为输入口,PB口为数据输出口,读取PA口的数值并通过求反指令将数据取反后,经由PB口输出。

8259中断实验(一)1.实验目的:(1)了解PC机的中断结构及8259中断控制器的初始化(2)熟悉8259中断控制器的工作原理和硬件连线方法(3)了解8259的应用和硬件编程方法了解8259中断屏蔽2.实验内容:编写中断实验程序,主程序使8255的PB口为输出口,输出0FFH,L0~L7指示灯全亮,中断服务程序从PB口输出0FFH,L0~L3亮,L4~L7灭,并延时一段时间后返回主程序。

3.实验程序INT0 EQU 220hINT1 EQU 221hP8255B EQU 219HP8255K EQU 21BHSTACK SEGMENTSTA DB 50 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART:CLIMOV AX,TOPMOV SP,AXPUSH DSMOV AX,0000H ;定义IRQ0中断MOV DS,AXMOV AX,OFFSET IRQ0ADD AX,0000HMOV SI,20HMOV [SI],AXMOV AX,CSMOV SI,22HMOV [SI],AXPOP DSMOV AL,13H ;对8259进行初始化ICW1MOV DX,INT0OUT DX,ALMOV AL,8 ;对8259进行初始化ICW2 MOV DX,INT1OUT DX,ALMOV CX,0FFFFHLOOP $MOV AL,9 ;对8259进行初始化ICW4 MOV DX,INT1OUT DX,ALMOV CX,0FFFFHLOOP $MOV DX,INT1MOV AL,0FEH ;对8259进行初始化OCW1OUT DX,ALMOV CX,0FFFFHLOOP $MOV DX,INT0 ;对8259进行初始化OCW2,普通EOI返回MOV AL,20HOUT DX,ALMOV CX,0FFFFHLOOP $STIMOV DX,P8255K ;对8255进行初始化MOV AL,90HOUT DX,ALDSP: MOV AL,0FFHMOV DX,P8255BOUT DX,ALJMP DSPIRQ0: STIMOV CX,0FFFFHLOOP $MOV AL,0FHMOV DX,P8255BOUT DX,ALMOV DX,INT0MOV AL,20HOUT DX,ALMOV CX,0FFFFHLOOP $MOV CX,0FFFFHLOOP $IRETCODE ENDSEND START4.实验框图5. 实验电路图6. 实验方法说明主程序使8255输出高电平,实现L0~L7指示灯全亮。

微机原理及应用实验报告

微机原理及应用实验报告
2•深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。
3•掌握各种寻址方法以及简单指令的执行过程。
二、实验要求
1实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分 析等。
2•本实验要求在PC机上进行。
3•本实验只要求在DEBUC调试状态下进行,包括汇编程序,调试程序,执行程序。
4•熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。
二、实验要求
1•实验前准备
1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。
2写出算法或画出流程图。
3写出源程序。
4对程序中的结果进行分析,并准备好上机调试的过程。
2•本实验要求在PC机上进行。
3•汇编过程中出现问题,可用DEBU(进行调试。
xorax,ax pushax movax,data movds,ax leasi,data1 leadi,data2 leabx,data3 moval,[si+3] movah,[di+3] an dal,0fh an dah,0fh addal,ah oral,30h mov[bx+3],al moval,[si+2] movah,[di+2] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+2],al moval,[si+1] movah,[di+1] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+1],al moval,[si] movah,[di] an dal,0fh an dah,0fh adcal,ah
;exercize21

微机原理实验四实验报告

微机原理实验四实验报告

实验报告实验四 8251可编程串行口与PC机通信实验一、实验要求利用实验箱内的8251A芯片,实现与PC机的通信。

二、实验目的1.掌握8251A芯片结构和编程方法;2.了解实现串行通信的硬件环境,数据格式和数据交换协议;3.了解PC机通信的基本要求。

三、实验原理(一)8251A芯片工作方式配置:1. 8个数据位;2.无奇偶校验位;3.1个停止位;4.波特率因子设为16;5. 波特率设为9600。

(二)8251A主要寄存器说明图4-1 模式字图4-2 命令字CO MMAN D I NSTR UCT ION FO RMA T图4-3 状态字(三)8251编程对8251 的编程就是对8251 的寄存器的操作,下面分别给出8251 的几个寄存器的格式。

(1)方式控制字方式控制字用来指定通信方式及其方式下的数据格式,具体各位的定义如图4-4所示。

图4-4 方式控制字说明(2)命令控制字命令控制字用于指定8251 进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。

图4-5 所示的是8251 命令控制字各位的定义。

图4-5命令控制字说明(3)状态字CPU 通过状态字来了解8251 当前的工作状态,以决定下一步的操作,8251 的状态字如图4-6所示。

图4-6 状态字说明四、实验电路连接:1.CS8251接228H,CS8279已固定接至238H;2.扩展通信口18中的232RXD连8251RXD ,232TXD连8251TXD;3.计算机的两个RS232通信口,一个连至仿真机通信口,一个连至扩展通信口18(所有通信口均为DB9)。

注意:RS232通信口必须在设备断电状态下插拔!图4-7 连线图五、实验内容及要求1. 将例程从PDF文档中导入到WMD86软件编辑环境中,调试通过。

使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。

将结果截图保存,贴入实验报告。

微机原理综合实验报告

微机原理综合实验报告

滨江学院微机原理综合实验实验报告学生姓名学号专业信息工程班级2016级二O一八年十二月三十日微机原理综合实验实验一利用DEBUG调试程序调试程序段1、实验目的1)熟悉DEBUG有关命令的使用方法。

2)利用DEBUG掌握有关指令的功能。

3)利用DEBUG运行简单的程序段。

2、实验内容1)进入和退出DEBUG程序。

2)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。

对于U命令、N命令、W命令等,也应试一下。

3)利用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。

3、实验准备1)仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。

2)作为例子,准备用A命令,输入在显示器上显示字符“S”的系统调用程序段。

3)阅读将AX左移9位的程序段。

4、实验步骤1)在DOS提示符下,进入DEBUG程序。

2)在DOS目录下启动DEBUG。

3)详细记录每一步所用的命令,以及查看结果的方法和具体结果。

5、实验报告要求1)如何启动和退出DEBUG程序。

2)整理每个DEBUG命令使用的方法,实际示例及执行结果。

3)启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?实验结果:实验二分支程序实验1、实验目的1)掌握分支程序的设计方法。

2)掌握利用DEBUG修改参数、检查结果的方法。

3)掌握汇编语言源程序的编辑、汇编、连接及调试过程。

2、实验内容1)编写一个程序,显示AL寄存器中的两位十六进制数2)编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z 或a-z字符,均显示“c”;若是回车字符<CR>(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。

3、实验准备1)编写实验内容要求的两个程序。

2)写出调试以上程序,即修改程序参数,检查结果的操作方法。

3)熟悉源程序汇编、连接命令的使用方法即要回答的内容。

北京理工大学微机原理实验报告四

北京理工大学微机原理实验报告四

本科实验报告实验名称:A/D和D/A转换课程名称:实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证■综合设计□自主创新学生姓名:学号/班级:组号:学院:同组搭档:专业:成绩:实验四 A/D和D/A转换一、实验目的1、了解A/D 转换的基本原理,掌握ADC0809 的使用方法。

2、了解D/A 转换的基本原理,掌握DAC0832 芯片的使用方法。

3、了解直流电机控制的基本方法。

二、实验内容与步骤(一)A/D 转换部分1、接线:2、实验电路原理图下图通过实验台左下角电位器RW1 输出0~5V直流电压送入ADC0809 通道0(IN0),利用debug 的输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。

启动IN0开始转换: Out 298H读取转换结果: In 298H3、用万用表测量CLOCK、ADD-C、ADD-B、ADD-A 在实验系统上如何联系的。

4、编程按中断方式采集IN0 输入的电压,在屏幕上显示出转换后的数据(用16 进制数)。

5、考虑如果采用IN7 输入的电压,启动开始转换和读取转换结果的地址应该是多少。

6、按查询方式采集IN0 输入的电压,软硬件如何实现。

编程方案1、ADC0809 的IN0 口地址为298H。

2、IN0 单极性输入电压与转换后数字的关系为:其中Ui 为输入电压,UREF 为参考电压,这里的参考电压为+5V电源。

3、一次A/D 转换的程序可以为MOV DX, PortOUT DX,AL ;启动转换;延时IN AL,DX ;读取转换结果放在AL 中(二) D/A 转换部分1、接线:CS /0832 接 Y2 /IO 地址用万用表测量 WR2 和XFER 在实验系统上如何联系的。

2、实验电路原理如图2,DAC0832 采用单缓冲方式,具有单双极性输出端(图中的Ua、Ub),利用debug 输出命令(Out 290 数据)输出数据给DAC0832,用万用表测量单极性输出端Ua 及双极性输出端Ub 的电压,验证数字与电压之间的线性关系。

微机原理实验4-逐次比较式ADC0809

微机原理实验4-逐次比较式ADC0809

实验三 逐次比较式A/D 转换器0809的原理及编程一、实验目的1. 熟悉逐次逼近式A/D 转换器芯片的工作原理。

2. 了解A/D 转换芯片0809的接口设计方法。

3. 掌握A/D 转换器0809简单的应用编程。

二、实验任务1. 分析本实验模板的电路原理,它与EPP 接口数据传送的方法,所使用的端口地址。

2. 编写出逐次逼近式A/D 转换器芯片0809的转换与显示的控制程序。

三、实验原理1.电路组成及转换原理ADC0809是带有8位A/D 转换器、8路多路开关,以及与微型计算机兼容的控制逻辑的CMOS 组件。

8位A/D 转换器的转换方法为逐次逼近法。

在A/D 转换器内部含有一个高阻抗斩波稳定比较器,一个带有模拟开关数组的256电阻分压器,以及一个逐次逼近的寄存器。

8路的模拟开关由地址锁存器和译码器控制,可以在8个通道中任意访问一个单边的模拟信号。

其原理图如图3-1所示。

8通道多路模拟开关5432128272625242322地址锁存器和译码器W 1W 2逐次逼近型寄存器SAR控制逻辑开关树组256R 电阻分压器610V x V c7输出缓冲锁存器三态212019188151417916111312模拟量输入A B CA L E地址选择地址锁存允许V cc G N D V R E F (+)V R E F (-)E N A B L E数字量输出转换结束(中断)E O CS TA R TC L O C KD 7D 6D 5D 4D 3D 2D 1D 0IN 7IN 6IN 5IN 4IN 3IN 2IN 1IN 0图3-1 ADC0809内部原理图从图中可以看出,ADC0809由两部分组成,第一部分为八通道多路模拟开关,控制C 、B 、A 和地址锁存允许端子,可使其中一个通道被选中。

第二部分为一个逐次逼近型A/D 转换器,它由比较器、控制逻辑、输出锁存缓冲器、逐次逼近寄存器以及开关数组和256R 梯型解码网络组成,由后两种电路(开关数组和256R 梯型电阻)组成D/A 转换器。

微机原理实验报告

微机原理实验报告

微机原理实验报告微机原理与接口技术实验报告学院:信息工程学院班级:学号:姓名:实验一:系统认识实验1 实验目的:掌握TD-PITE 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。

2 实验设备:PC机一台,TD-PITE 实验装置一套。

3 实验内容:编写实验程序,将00H~0FH 共16 个数写入内存3000H 开始的连续16 个存储单元中。

4 实验步骤:1. 运行Wmd86 软件,进入Wmd86 集成开发环境。

2. 环境调试,“设置”选项中选择汇编语言。

语言环境选择界面3. 新建文档,编写程序,程序如下:SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE,SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3000HMOV CX, 16AA1: MOV [SI], ALINC SIINC ALLOOP AA1AA2: JMP AA2CODE ENDSEND START4. 编译连接,程序无误下载:信息界面5. 连接PC与实验系统的通讯电缆,打开实验系统电源。

6. 下载程序,查看内存3000H 开始的连续16 个存储单元中的内容,显示如下:8.由于该内存段原始数据与实验数据相同,便于区分观察,将该内存段初始化,然后查看:9.点击运行程序,在此查看该段内存:10.设置断点,执行程序:5 操作练习编写程序,将内存3500H 单元开始的8 个数据复制到3600H 单元开始的数据区中。

通过调试验证程序功能,使用E命令修改3500H 单元开始的数据,运行程序后使用D命令查看3600H 单元开始的数据。

1、编写程序如下:SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE,SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3500HMOV DI, 3600HMOV CX, 8AA1: MOV AL, [SI]MOV [DI], ALINC SIINC DILOOP AA1AA2: JMP AA2CODE ENDSEND START2、执行过程如上,内存变化如下:程序执行前程序执行后实验二:数制转换实验1、实验目的1. 掌握不同进制数及编码相互转换的程序设计方法,加深对数制转换的理解;2. 熟悉程序调试的方法。

微机原理实验报告(2013)

微机原理实验报告(2013)

计算机在金属材料中的应用实验山东科技大学材料学院目录一、调试程序DEBUG二、熟悉80486指令系统三、熟悉汇编语言汇编程序上机过程四、汇编程序分支程序设计一五、汇编程序分支程序设计二六、汇编程序循环程序设计一七、汇编程序循环程序设计二八、汇编综合程序实验一调试程序DEBUG一、实验题目:调试程序DEBUG二、实验目的:1. 熟悉调试程序DEBUG2. 掌握调试程序DEBUG的操作步骤调试程序DEBUG:调试程序DEBUG.EXE是DOS提供的一个调试汇编语言程序的程序,每个版本的DOS都带有该程序,具有跟踪程序运行、设置断点、显示修改内存与寄存器的内容等功能,还可对小段程序进行汇编调试。

动态调试程序在编写和运行汇编程序的过程中,会遇到一些错误和问题,需要对程序进行分析和调试,调试程序DEBUG 就是专为汇编语言设计的一种调试工具。

它在调试汇编语言程序时有很强的功能,能使程序设计者接触到机器内部,能观察和修改寄存器和存储单元内容,并能监视目标程序的执行情况,使用户真正接触到CPU 内部,与计算机产生最紧密的工作联系。

DEBUG 的执行DEBUG 命令格式主要DEBUG 命令DEBUG 的执行在操作系统(DOS 或WIndows )命令行方式下,直接调入DEBUG 程序,键入命令的格式如下:D>DEBUG [d:][Path][filename[.ext]][Parm1][Parm2]其中[] 的内容为可选项,可以有也可以缺省。

[d:] 为驱动器号,指要调入DEBUG 状态的可执行文件在哪个驱动器中,如A: 、B: 、C: 等。

[Path] 为路径,指要调入DEBUG 状态的可执行文件是在哪个目录下或子目录下。

[filename[.ext]] ,指要调入DEBUG 状态下的可执行文件的文件名,该文件可以是通过编辑、汇编、连接后产生的可执行文件,也可以是在DEBUG状态下汇编的程序段,通过写盘命令W 写入磁盘的文件。

微机原理第四次实验报告董东启

微机原理第四次实验报告董东启

实验四 A/D转换实验一、实验目的与要求目的:掌握A/D芯片与单片机的接口方法及ADC性能;了解单片机实现数据采集的方法。

二、实验参考步骤1、启动KEIL软件,选择菜单“工程\新建工程”以建立工程(扩展名为.uv2,如T4a.uv2)。

2、选择菜单“文件\新文件”以建立一个新的文本编辑窗口,在窗口中输入参考源程序1并保存(扩展名为.asm),如test4a.asm,然后将其加入到源程序组1中。

3、在工程菜单的选项“目标1属性”中设置相应的选项,包括“输出\产生hex文件”选项以便汇编生成HEX代码供编程器使用,在“调试\使用KeilMonitor-51 Driver”的设置中选择相应的串口号。

4、使用“工程”中的“编译全部文件”完成相应的文件编译,如果程序格式正确将生成相应HEX代码文件,如T4a.hex。

如果提示有编译错误请自行修改源程序然后再重新编译。

5、将ad0804 的wr引脚连接P3.6 ,rd引脚接p3.7 ad0804数据接P1口,八路发光管接P0口,完成仿真器与计算机之间的连线并通电。

6、在KEIL软件中启动“调试\开启仿真模式”,然后用“运行”命令实现全速运行的仿真,调节电位器控制电压输入,观察指示灯状态。

7、根据指示灯状态记录对应的AD结果,利用万用表测量对应的输入电压值进行比较,验证AD结果是否正确。

8、通过多次改变输入值的方式重复步骤7并记录调试结果,然后在KEIL软件中启动启动“中断运行-调试(debug)\关闭仿真模式”退出仿真,选择“工程\关闭工程”可关闭当前工程。

9、根据参考源程序1进行思考、修改和拓展,自行设计程序目标并编程验证,比如利用数码管显示AD值,或者利用AD值控制PWM波的占空比等。

10、完成参考程序二的仿真演示并自行分析其程序设计思想。

三、实验内容1、程序一:0804的基本应用。

程序演示目的:实验者转动电位器以改变输入电压,利用ad0804读取AD结果并利用P0口显示AD结果;硬件连接:将ad0804的 wr引脚接P3.6,rd引脚接P3.7,ad0804数据口接P1口, P0口接八路发光管。

第四次微机原理与接口技术实验报告

第四次微机原理与接口技术实验报告

微机原理与接口技术第四次实验报告目录第一次实验:实验6 8254定时/计数器实验 (1)第二次实验:实验3 六位数码管显示实验 (4)实验5 小键盘按键识别实验 (8)实验2 拨动开关和 LED 显示实验 (15)实验8 8255方式1输出 (17)实验13 继电器实验 (20)第三次实验: 实验10 8位D/A转换实验 (23)第一次实验:实验68254 定时/计数器实验一实验目的熟悉 8254 在系统中的电路接法,掌握 8254 的工作方式及应用编程。

二实验内容使用 8254 两个计数器级连,采用定时方式工作,周期性的点亮及熄灭发光二极管各 0.5秒。

三实验原理(1)接线图:(2)流程图四程序清单及注释.Model small.386DATA SEGMENTD1 DB 10 DUP('4')D2 DB 20 DUP('3') DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA BEG:MOV AX,DATAMOV DS,AXMOV AL,37HMOV DX,203HOUT DX,ALMOV AX,1000;1000控制LED闪烁频率MOV DX,200HOUT DX,ALMOV AL,AHOUT DX,ALMOV AL,77HMOV DX,203HOUT DX,ALMOV AX,1000;1000控制LED闪烁频率MOV DX,201HOUT DX,ALMOV AL,AHOUT DX,ALCODE ENDSEND BEG四问题及体会(1)初次使用TPC-386EX汇编,对软件的使用不够熟悉,对输出输入接口的确定还有些模糊,需要继续尝试加以提高;(2)TPC-386EX 环境与下位机的匹配是一个常见的错误,实验中多次显示“请先传送文件”提示,后来发现是两者间接口连接出现问题,以后实验中会注意。

第二次实验:实验3 六位数码管显示实验一实验目的了解共阴级数码管显示数字的原理,掌握六位共阴级数码管动态显示的控制方法。

微机原理实验报告软件实验1-4

微机原理实验报告软件实验1-4

微机原理实验报告学院:算机科学与软件教育学院一、实验目的1. 掌握存储器读写方法2. 了解存储器的块操作方法二、实验原理存储器读写和块操作三、实验设备仪器及材料计算机,WA VE 6000软件四、实验过程S1.asm 代码流程图data segmentBlock db 256 dup(55h)data endscode segmentassume cs:code, ds:datastart proc nearmov ax, datamov ds, axmov bx, offset Block ; 起始地址mov cx, 256 ; 清256 字节Again:mov [bx], byte ptr 0inc bx ; 地址+1Loop Again; 记数减一jmp $ ;死循环code endsend start五、实验步骤(1) 进入Wave6000,输入程序并检查,保存程序。

(2) “编译”程序。

(3) “全速执行”程序。

(4) “暂停”程序运行,在“数据窗口(MEMOREY)”查看0400H起始的单元内容,并记录。

(5) 在指令“jmp $”处设断点。

“全速执行”程序。

(6) 在“数据窗口(MEMOREY)”查看0400H起始的单元内容,记录并分析实验结果。

六、实验结果及总结运行前:运行后:2、调试:如何将存储器块的内容置成某固定值(例全填充为0FFH)?总结:通过本实验,我了解到单片机读写存储器的读写方法,同时也了解到单片机编程,调试方法。

学会内存的移动方法,也加深对存储器读写的认识。

微机原理实验报告学院:算机科学与软件教育学院实验课程名微机原理实验成绩实验项目名称实验二、二进制到BCD码转换指导老师1. 了解BCD值和ASCII值的区别。

2. 了解如何将BCD值转换成ASCII值。

3. 了解如何查表进行数值转换及快速计算。

二、实验原理ASCII码表三、实验设备仪器及材料计算机,WA VE 6000软件data segmentResult db 3 dup(?)data endscode segmentassume cs:code, ds:datastart proc nearmov ax, datamov ds, axmov ax, 123mov cl, 100div clmov Result, al ; 除以 100,得百位数mov al, ahmov ah, 0mov cl, 10div clmov Result+1, al ; 余数除以10, 得十位数mov Result+2, ah ; 余数为个位数jmp $code endsend start代码流程图五、实验步骤1. 进入Wave6000,输入程序,并检查,保存程序。

微机原理第四次实验

微机原理第四次实验
具体实现函数是: fd=open(“/dev/zlg7290/0”,O_RDWR)
13
向设备写数据(1/2): 具体实现过程是先写入要配置的寄存器的地址,然后写入
要配置的值,具体实现函数是:
unsigned char temp[2];
//定义一个数组用于存
放要发送的数据,包括寄存器地址和要写入该寄存器内的值
temp[0]=address;
//将要配置的寄存器的
地址address写入temp[0]中。
temp[1]=data;
//将要写入该寄存器中
的值data写入//temp[1]中。
write(fd,temp,2);
//用write函数向设备写
入数据temp,首先写入地址address,然后写入值data。
实验六 基于ARM的键盘及数 码管驱动实验
1
一、实验目的 1.掌握键盘及数码管驱动原理。 2.掌握ZLG7290芯片的使用方法。 3.掌握I2C总线的协议标准。 4.掌握Linux下键盘驱动的实现方法。 二、实验内容 编写测试程序控制键盘和数码管。
2
三、预备知识 1.了解ARM9处理器结构 2.了解i2c协议
8ห้องสมุดไป่ตู้
下载数据并译码(Download)
在指令格式中,高4 位的0110 是命令字段;A3A2A1A0 是数码管显示数据的位地址(其中A3 留作以后扩展之用, 实际使用时取0 即可),位地址编号依次为 0,1,2,3,4,5,6,7,代表8个数码管,dp 控制小数点是否点 亮,0-点亮,1-熄灭;flash 表示是否要闪烁,0-正常 显示,1-闪烁;d4d3d2d1d0 是要显示的数据,包括10 种 数字和21 种字母。显示数据按照表一中的规则进行译码:

微机原理实验四串操作指令

微机原理实验四串操作指令

实验四串操作指令程序实验一、实验目的1. 熟悉五种串操作指令的功能,会编写常用的串操作应用程序。

2. 会使用DEBUG 命令查看串操作运行的结果。

二、实验环境1. 硬件:PC 微机2. 软件:Masm for Windows 汇编集成开发环境三、实验讲义串指连续存放在存储器中的一些数据字节、字或者双字。

串操作允许对程序连续存放的数据块进行操作。

这是唯一一种可以从存储器到存储器的指令。

源串一般存放在数据段,偏移地址由SI 指定;目标串必须在附加段,偏移地址由DI 指定。

在每次进行串操作后,SI 和DI 两个指针会自动修改。

修改的是增量方向还是减量方向由标志位DF 决定,DF=0 为增量操作,DF=1 为减量操作。

CX 中存放的是数据块的长度,可在CX 前加重复前缀标志,对串进行连续操作。

执行串指令之前,一般先进行如下操作:源串首地址(末地址)→ SI目的串首地址(末地址)→ DI串长度→ CX建立方向标志DF1. 重复前缀标志助记符判断条件说明REP CX 0 CX=CX-1,若CX 0 则重复REPE 或REPZ CX 0 且ZF=1 CX=CX-1,若CX 0 且ZF=1 则重复REPNE 或REPNZ CX=0 且ZF=0 EX=CX-1,若CX 0 且ZF=0 则重复2. 方向标志指令方向标志由标志位DF 决定,有CLD 和STD 两种指令。

CLD 将DF 置0,地址为增量操作。

STD 将DF 置1,地址为减量操作。

3. 串传送指令格式: [REP] MOVS DESTS, SRCS[REP] MOVSB/ MOVSW / MOVSD功能:将DS:SI 中的源串数据传送到ES:DI 规定的目的串单元中。

加重复前缀REP 可实现连续存放的数据块的传送。

例1:将源串中前三个字节的数据传送到目的串。

源串在数据段(DATAS)中,存放在SRC 单元中;目的串在附加数据段(EDATAS)中,存放在DEST 单元中。

微机原理与系统设计实验四

微机原理与系统设计实验四

实验1 继电器控制实验一、实验目的1、了解微机控制直流继电器的一般方法。

2、进一步熟悉使用8255、8253。

二、实验所用仪器(或实验环境)计算机、微机原理实验箱、USB接口模块、汇编语言开发软件等三、实验原理将8253 计数器0 设置为方式3、计数器1 设置为方式0 并联使用,CLK0 接1MHZ 时钟,设置两个计数器的初值(乘积为5000000)启动计数器工作后,经过5秒钟OUT1 输出高电平。

通过8255 的PA0口查询OUT1的输出电平,用C 口PC0输出开关量控制继电器动作。

继电器开关量输入端输入“1”时,继电器常开触点闭合,发光二极管接通,指示灯亮,输入“0”时断开,指示灯灭。

四、实验内容1、使用8254定时,让继电器周而复始的闭合5 秒钟(指示灯灯亮),断开5 秒钟(指示灯灯)。

2、改变指示灯亮灭的周期为2s,改用PC7口控制继电器。

五、方案设计1、实验接线及分析接线:8255/CS 接I/O 地址译码/Y1(288H---28FH)8255/PC0 接继电器8255/PA0 接8254/OUT18254/CS 接I/O 地址译码/Y0(280H---287H)8254/CLK0 接时钟/1MHz8254/OUT0 接8254/CLK18254/GATE0,1 接+5V硬件电路分析:(包括端口地址分析)2、实现该内容的方案(或原理)3、画出流程图六、实验程序设计;***************************;;* 继电器控制 *;;***************************;io8253a equ 280hio8253b equ 281hio8253c equ 283hio8255a equ 288hio8255c equ 28ahio8255ctl equ 28bhcode segmentassume cs:codestart: mov dx,io8255ctlmov al,90hlll: out dx,almov dx,io8255cmov al,01 ;将PC0置位out dx,alcall delay ;延时5smov al,0 ;将PC0复位out dx,alcall delay ;延时5sjmp lll ;转llldelay proc near ;延时子程序push dxmov dx,io8253c ;设8254计数器为方式3 mov al,36hout dx,almov dx,io8253amov ax,10000 ;写入计数器初值10000 out dx,almov al,ahout dx,almov dx,io8253cmov al,70h ;设计数器1为工作方式0out dx,almov dx,io8253bmov ax,500 ;写入计数器初值500out dx,almov al,ahout dx,alll2: mov ah,06 ;是否有键按下mov dl,0ffhint 21hjne exit ;若有则转exitmov dx,io8255ain al,dx ;查询8255的Pa0是否为高电平 and al,01hjz ll2 ;若不是则继续pop dxret ;定时时间到,子程序返回exit: mov ah,4chint 21hdelay endpcode endsend start七、实验结果分析及回答问题八、实验总结与心得体会实验2 电子琴实验一、实验目的1、通过8253 产生不同的频率信号,使PC 机成为简易电子琴。

微机原理第四次上机实验报告_PB

微机原理第四次上机实验报告_PB

微机原理第四次上机实验报告学号:PB12203254 姓名:**潇上机时间:每周五晚上【一、实验目的和要求】:1,熟练掌握分支程序的两种结构形式:即相当于高级语言中的IF_THEN_ELSE语句和CASE语句。

2,熟练掌握使用条件转移指令实现分支程序设计的基本方法。

3,熟练掌握使用跳转表方法实现CASE结构的分支程序的设计。

【二、实验内容和过程】程序1:编写一个程序将一个数组中正数和负数分成两个数组并分别屏幕显示正数和负数的个数。

(一)程序的算法:1,首先是待处理数组的创建:我们通过21H号中断调用的0A号功能调用输入数字串,存于BUFF字符串区(设定为0A号调用的键入缓冲区),这里只负责将键入的以回车符(0DH)结尾的字符串读入数据段,不检查输入是否合法。

但是,我们通过输出提示告知用户键入的数字之间应该使用空格符(20H)来分隔。

实际上,我们在处理数字的时候就是以空格符(当然,还包括尾后输入的回车符)作为一个数字的字符串形式结束的标志(回车符还标识所有数字处理完毕)。

另一方面,我们计划给每个数字分配一个字的储存空间,故我们支持的数字范围为-32768~32767,这同样有键入提示字符串提示。

2,数字处理阶段:----预备处理阶段:初始化用来作为指针和数据暂存的寄存器(DI指向保存正数的数组NUM1,SI指向保存负数对应补码的数组NUM2,BX指向键入缓存区BUFF,数据暂存的CX清0,将要用来读数和处理的AX清0),计数器清零(L1,L2清0,他们分别记录存入NUM1和存入NUM2的元素的个数)。

----正式处理阶段:(a)开始:我们通过BX指向BUFF,通过MOV AL,[BI]j将一个字节读入AL。

(b)判断,是否为回车符(0DH):TURE,所有数字处理完毕,跳转到输出阶段;FALSE,继续执行接下来的指令。

(c)判断,是否为回车(20H):TURE,尚未开始下一个数字的输入,回跳(a)重新读入下一个字节的内容;FALSE,继续执行接下来的指令。

第四次微机原理与接口技术实验报告

第四次微机原理与接口技术实验报告

微机原理与接口技术第四次实验报告目录第一次实验:实验6 8254定时/计数器实验 (1)第二次实验:实验3 六位数码管显示实验 (4)实验5 小键盘按键识别实验 (8)实验2 拨动开关和 LED 显示实验 (15)实验8 8255方式1输出 (17)实验13 继电器实验 (20)第三次实验: 实验10 8位D/A转换实验 (23)第一次实验:实验6 8254 定时/计数器实验一实验目的熟悉 8254 在系统中的电路接法,掌握 8254 的工作方式及应用编程。

二实验内容使用 8254 两个计数器级连,采用定时方式工作,周期性的点亮及熄灭发光二极管各 0.5秒。

三实验原理(1)接线图:(2)流程图四程序清单及注释.Model small.386DATA SEGMENTD1 DB 10 DUP('4')D2 DB 20 DUP('3') DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA BEG:MOV AX,DATAMOV DS,AXMOV AL,37HMOV DX,203HOUT DX,ALMOV AX,1000;1000控制LED闪烁频率MOV DX,200HOUT DX,ALMOV AL,AHOUT DX,ALMOV AL,77HMOV DX,203HOUT DX,ALMOV AX,1000;1000控制LED闪烁频率MOV DX,201HOUT DX,ALMOV AL,AHOUT DX,ALCODE ENDSEND BEG四问题及体会(1)初次使用TPC-386EX汇编,对软件的使用不够熟悉,对输出输入接口的确定还有些模糊,需要继续尝试加以提高;(2)TPC-386EX 环境与下位机的匹配是一个常见的错误,实验中多次显示“请先传送文件”提示,后来发现是两者间接口连接出现问题,以后实验中会注意。

第二次实验:实验3 六位数码管显示实验一实验目的了解共阴级数码管显示数字的原理,掌握六位共阴级数码管动态显示的控制方法。

微机原理实验报告4..

微机原理实验报告4..

实验报告课程名称:《微机原理》实验第3次实验实验名称:宏命令与子程序的区别实验时间:2015年10月13日实验地点:XXXXXX组号__________学号:XXXX姓名:XXX指导老师:XX 评定成绩:___________微机原理实验4南京大学工程管理学院一、实验设备:计算机二、实验用时:4小时三、实验内容:1.单步运行实例函数NO3_Mpy_8,了解单字节无符号数乘法的实现方法。

2.编写子程序Mpy_16,实现双字节无符号数乘法。

自行定义变量,其中:ACCALO ;存放乘数低8 位ACCAHI ;存放乘数高8 位ACCBLO ;存放被乘数低8 位和乘积第16~23 位ACCBHI ;存放被乘数高8 位和乘积第24~31 位ACCCLO ;存放乘积第0~7 位ACCCHI ;存放乘积第8~15 位编写Main主程序,使用乘数0x4015和被乘数0x3321对编写的子程序进行测试,结果应为0x0CCC71B5。

3.编写宏命令Mpy_16,实现单字节无符号数乘法。

编写Main 主程序调用宏命令并对运算结果进行测试。

4.使用反汇编工具Disassembly Listing单步运行程序,观察子程序与宏命令的差异。

四、实验报告要求:1. 程序框图和源程序清单。

2. 分析宏扩展过程,说明宏与子程序的差别。

五、实验结果: 1、程序框图 (1)子程序Mpy_16否是子程序调用初始化循环计数器TEMP将乘数ACCBHI 、ACCBLO 复制到MDHI 、MDLO中ACCAHI 、ACCBHI 、ACCALO 、ACCBLO 分别相加,结果放入ACCBHI 、ACCBLO 中ACCBHI 、ACCBLO 、ACCCHI 、ACCCLO 清零 MDHI 、MDLO 算数右移一位,最低位进入C C=1?否是(2)宏命令Mpy_16ACCBHI 、ACCBLO 带进位位右移,最低位放入C中 ACCCHI 、ACCCLO 带进位位右移,最低位放入C 中TEMP=TEMP-1TEMP=0?子程序返回开始初始化循环计数器TEMP将乘数ACCBHI 、ACCBLO 复制到MDHI 、MDLO中ACCBHI 、ACCBLO 、ACCCHI 、ACCCLO 清零否是否是2、源程序清单 (1)子程序Mpy_16list p=16f877A ; list directive to define processorACCBHI 、ACCBLO 带进位位右移,最低位放入C中 ACCAHI 、ACCBHI 、ACCALO 、ACCBLO 分别相加,结果放入ACCBHI 、ACCBLO 中ACCCHI 、ACCCLO 带进位位右移,最低位放入C 中 MDHI 、MDLO 算数右移一位,最低位进入CTEMP=TEMP-1C=1?TEMP=0?结束#include <p16f877A.inc> ; processor specific variable definitions__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFFACCALO EQU 0x20 ;存放加数低8位ACCAHI EQU 0x21 ;存放加数高8位ACCBLO EQU 0x22 ;存放被加数低8位ACCBHI EQU 0x23 ;存放被加数高8位ACCCLO EQU 0x24;ACCCHI EQU 0x25;MDLO EQU 0x26;MDHI EQU 0x27;TEMP EQU 0x28 ;临时寄存器; 双字节加法子程序,入口地址ACCB + ACCA,出口地址ACC ORG 0x0000 ; 复位入口地址nop ; 兼容ICD调试工具,必须加nop goto Main ; 跳转至Main函数MainMOVLW 0x15;MOVWF ACCALO;MOVLW 0x40;MOVWF ACCAHI;MOVLW 0x21;MOVWF ACCBLO;MOVLW 0x33;MOVWF ACCBHI;CALL MPY_16;NOP;GOTO $;ORG 0x0100MPY_16CALL SETUP ;MLOOPBCF STATUS, C ; 清进位位RRF MDHI ; MD 右移 RRF MDLO;BTFSC STATUS, C ;判断是否需要相加CALL Add_16 ; 加乘数至 MB RRF ACCBHI ; 右移部分乘积RRF ACCBLO;RRF ACCCHI;RRF ACCCLO;DECFSZ TEMP ; 乘法完成否?GOTO MLOOP ; 否,继续求乘积RETURN ; 子程序返回SETUPMOVLW .16 ;初始化 TEMP 寄存器MOVWF TEMPMOVF ACCBLO, W ; 乘数送MDMOVWF MDLO;MOVF ACCBHI,W;MOVWF MDHI;CLRF ACCBLO ; 清 MBCLRF ACCBHI;CLRF ACCCLO ;清 MCCLRF ACCCHI;RETURN ;子程序返回Add_16MOVF ACCALO, w ;ACCB和ACCA低半字节相加ADDWF ACCBLO , f ;BTFSC STATUS, C ;有进位否?INCF ACCBHI;有,ACCB高字节加1,再加ACCAHI MOVF ACCAHI, w ; ACCA、ACCB高半字节相加ADDWF ACCBHI, f ;RETURN ;子程序返回END;(2)宏命令Mpy_16list p=16f877A ; list directive to define processor #include <p16f877A.inc> ; processor specific variable definitions__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFFMPY_16 macro ACCALO1,ACCAHI1,ACCBLO1,ACCBHI1,ACCCLO1,ACCCHI1,MDHI1,MDLO1,TEMP1;SETUPACCALO1,ACCAHI1,ACCBLO1,ACCBHI1,ACCCLO1,ACCCHI1,MDHI1,MDLO1,TEMP1 ;MLOOPBCF STATUS, C ; 清进位位RRF MDHI1 ; MD 右移RRF MDLO1;BTFSS STATUS, C ;判断是否需要相加GOTO LOOP;Add_16ACCALO1,ACCAHI1,ACCBLO1,ACCBHI1,ACCCLO1,ACCCHI1,MDHI1,MDLO1 ,TEMP1 ; 加乘数至 MBLOOPRRF ACCBHI1 ; 右移部分乘积RRF ACCBLO1;RRF ACCCHI1;RRF ACCCLO1;DECFSZ TEMP1 ; 乘法完成否?GOTO MLOOP ; 否,继续求乘积ENDM ; 子程序返回SETUP macro ACCALO2,ACCAHI2,ACCBLO2,ACCBHI2,ACCCLO2,ACCCHI2,MDHI2,MDLO2 ,TEMP2;MOVLW .16 ;初始化 TEMP 寄存器MOVWF TEMP2MOVF ACCBLO2, W ; 乘数送MDMOVWF MDLO2;MOVF ACCBHI2,W;MOVWF MDHI2;CLRF ACCBLO2 ; 清 MBCLRF ACCBHI2;CLRF ACCCLO2 ;清 MCCLRF ACCCHI2;ENDM ;子程序返回Add_16 macro ACCALO3,ACCAHI3,ACCBLO3,ACCBHI3,ACCCLO3,ACCCHI3,MDHI3,MDLO3,TEMP3;MOVF ACCALO3, w ;ACCB和ACCA低半字节相加ADDWF ACCBLO3 , f ;BTFSC STATUS, C ;有进位否?INCF ACCBHI3;有,ACCB高字节加1,再加ACCAHI MOVF ACCAHI3, w ; ACCA、ACCB高半字节相加ADDWF ACCBHI3, f ;ENDM ;子程序返回ACCALO EQU 0x20 ;存放加数低8位ACCAHI EQU 0x21 ;存放加数高8位ACCBLO EQU 0x22 ;存放被加数低8位ACCBHI EQU 0x23 ;存放被加数高8位ACCCLO EQU 0x24;ACCCHI EQU 0x25;MDLO EQU 0x26;MDHI EQU 0x27;TEMP EQU 0x28 ;临时寄存器; 双字节加法子程序,入口地址ACCB + ACCA,出口地址ACC ORG 0x0000 ; 复位入口地址nop ; 兼容ICD调试工具,必须加nop goto Main ; 跳转至Main函数MainMOVLW 0x15;MOVWF ACCALO;MOVLW 0x40;MOVWF ACCAHI;MOVLW 0x21;MOVWF ACCBLO;MOVLW 0x33;MOVWF ACCBHI;MPY_16ACCALO,ACCAHI,ACCBLO,ACCBHI,ACCCLO,ACCCHI,MDHI,MDLO,TEMP; NOP;GOTO $;END;3、程序运行结果截图(1)子程序Mpy_16子程序运行结果(2)宏命令Mpy_16宏指令运行结果4、分析宏扩展过程,说明宏与子程序的差别(1)子程序Mpy_16的反汇编结果子程序的反汇编代码1子程序的反汇编代码2(2)宏命令Mpy_16的反汇编结果0000 0000 NOP0001 2802 GOTO 0x20002 3015 MOVLW 0x150003 00A0 MOVWF 0x200004 3040 MOVLW 0x400005 00A1 MOVWF 0x210006 3021 MOVLW 0x210007 00A2 MOVWF 0x220008 3033 MOVLW 0x330009 00A3 MOVWF 0x23000A 3010 MOVLW 0x10000B 00A8 MOVWF 0x28000C 0822 MOVF 0x22, W000D 00A6 MOVWF 0x26000E 0823 MOVF 0x23, W000F 00A7 MOVWF 0x270010 01A2 CLRF 0x220011 01A3 CLRF 0x230012 01A4 CLRF 0x240013 01A5 CLRF 0x250014 1003 BCF 0x3, 00015 0CA7 RRF 0x27, F0016 0CA6 RRF 0x26, F0017 1C03 BTFSS 0x3, 00018 281F GOTO 0x1f0019 0820 MOVF 0x20, W001A 07A2 ADDWF 0x22, F001B 1803 BTFSC 0x3, 0001C 0AA3 INCF 0x23, F001D 0821 MOVF 0x21, W001E 07A3 ADDWF 0x23, F001F 0CA3 RRF 0x23, F0020 0CA2 RRF 0x22, F0021 0CA5 RRF 0x25, F0022 0CA4 RRF 0x24, F0023 0BA8 DECFSZ 0x28, F0024 2814 GOTO 0x140025 0000 NOP0026 2826 GOTO 0x262007 2394 CALL 0x394(3)宏扩展过程宏扩展只是用原来宏定义中的若干条汇编指令代替程序中的“一条”宏指令插入到此宏指令位置处,进行直接替换功能。

微机原理的4个实验

微机原理的4个实验

+试验四一、实验目的掌握8253的基本工作原理和编程方法。

二、实验内容1.按图接线,将计数器0设置为方式0,计数器初值为N(N≤0FH,本例程中为0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用L0或逻辑笔观察OUT0电平变化,初始时OUT0为高电平,当输入N个脉冲时,OUT0变为低电平,当输入N+1个脉冲后OUT0变高电平)。

2按图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用电平指示灯L0或逻辑笔观察OUT1输出电平的变化,要求输出频率1HZ的分频信号。

;*************************;;* 8253方式0计数器实验 *;;*************************;ioport equ 0C400h-0280hio8253k equ ioport+283hio8253a equ ioport+280hcode segmentassume cs:codestart:mov al,14h ;设置8253通道0为工作方式2,二进制计数mov dx,io8253kout dx,almov dx,io8253a ;送计数初值为08Hmov al,08hout dx,allll: in al,dx ;读计数初值call disp ;调显示子程序push dxmov ah,06hmov dl,0ffhint 21hpop dxjz lllmov ah,4ch ;退出int 21hdisp proc near ;显示子程序push dxand al,0fh ;首先取低四位mov dl,alcmp dl,9 ;判断是否<=9jle num ;若是则为'0'-'9',ASCII码加30H add dl,7 ;否则为'A'-'F',ASCII码加37H num: add dl,30hmov ah,02h ;显示int 21hmov dl,0dh ;加回车符int 21hmov dl,0ah ;加换行符int 21hpop dxret;子程序返回disp endpcode endsend start;*******************;* 8253分频 *;*******************ioport equ 0C400h-0280hio8253a equ ioport+280hio8253b equ ioport+281hio8253k equ ioport+283hcode segmentassume cs:codestart:mov dx,io8253k ;向8253写控制字mov al,36h ;使0通道为工作方式3out dx,almov ax,1000 ;写入循环计数初值1000mov dx,io8253aout dx,al ;先写入低字节mov al,ahout dx,al ;后写入高字节mov dx,io8253kmov al,76h ;设8253通道1工作方式2out dx,almov ax,1000 ;写入循环计数初值1000mov dx,io8253bout dx,al ;先写低字节mov al,ahout dx,al ;后写高字节mov ah,4ch ;程序退出int 21hcode endsend start实验五一、实验目的掌握8255方式0的工作原理及使用方法。

微机原理实验报告4

微机原理实验报告4

实验4 字符及字符串的输入和输出一、实验任务及实验目的1、熟悉如何进行字符及字符串的输入输出。

2、掌握简单的dos系统功能调用3、熟悉在pc上建立、汇编、链接、调试和运行8086汇编语言的全过程二、实验内容、过程及实验现象记录1、assume cs:cseg,ds:dsegdseg segment;数据段dseg endcseg segmentmain proc farmov ax,dsegmov ds,ax;主程序mov ax,4c00hint 21hmain endpcseg endsend main2、(1)AL=35,是字符5的ACSCII码(2)分别是41、42、43、44,是A、B、C、D的ASCII码3、(1)是04h,它表示实际输入的字符个数。

(2)从DS:1002H开始的内存区域中的内容分别是5、4、3、2和回车键ASCII码。

其中没有字符“1”的ASCII码,因为实际长度只有4位,其中有一位是回车键,所以没有字符“1”的ASCII码。

(1)显示了。

(2)和第一题是一样的,屏幕都显示了对应的字符。

(3)屏幕都没有显示。

0ah是回车键的ASCII码,对应无显示。

(4)没有输出,有‘哔’的一声5、org 100hmov ax, 3int 10hmov ax, 1003hmov bx, 0int 10hmov ax, 0b800hmov ds, axmov [02h], 'H'mov [04h], 'e'mov [06h], 'l'mov [08h], 'l'mov [0ah], 'o'mov [0ch], ','mov [0eh], 'W'mov [10h], 'o'mov [12h], 'r'mov [14h], 'l'mov [16h], 'd'mov [18h], '!'mov cx, 12mov di, 03hret7、codes segmentassume cs:codesstart:mov ch,20hmov bl,6lll:mov bh,16ll:mov dl,chmov ah,2int 21hinc chdec bhjnz llmov dl,0ahint 21hmov dl,0dhint 21hdec bljnz lllmov ah,4chint 21hcodes endsend start三、实验结果及总结通过此次实验,我熟悉了如何进行字符及字符串的输入输出,掌握了简单的DOS系统功能调用,学到了不少知识。

《微机原理实验报告》word版

《微机原理实验报告》word版

班级自动化学号姓名实验一系统认识实验一实验目的掌握教学系统的基本操作二实验设备PC机一台masm软件三实验内容及步骤(1)输入程序并检查无误,经汇编连接后装入系统(2)输入E3500后回车,在3500-3510单元中分别送入00~09十个数据(3)按“T“键运行以上程序直至程序运行完(4)输入D3600后回车,查看3600单元后面的数据四程序及其显示的结果(1)程序(2)显示的结果实验三运算类编程实验一实验目的(1)掌握使用运算类指令编程及调试方法(2)掌握运算类指令对各状态标志位的影响及其测试方法二实验设备PC一台masm软件三实验内容及步骤(1)二进制双精度加法运算(2)输入程序并检查无误,经汇编连接后装入系统(3)用U0000:2000查看MOV AX,DA TA的语句,即得到数据段段位置CS:1412用E命令E1412:0000回车,给XL,YL,YH赋值存入二进制数A0,65,15,00和9E,B7,21,00(4)用G=0000:2000,运行以上程序(5)输入D1412:0008,检验显示的结果是否为:3E,1D,17,00四实验程序五程序显示的结果实验四分支程序设计实验一实验目的:(1)掌握分支程序的结构(2)掌握分支程序的设计,调试方法二实验设备:PC机一台masm软件三实验内容设计一数据块间的搬移程序。

设计思想:程序要求把内存中一数据区传送到另一存储区。

源数据块和目的数据块在存储中可能有三种情况,对于两个分离的情况,数据的传送从数据块的首位置开始,或者从数据块的末位置开始。

但对于有部分重叠的情况,则要加以分析,否则重叠部分会因搬移而遭到破坏,可以得到以下结论:(1)当源数据块首址大于目的块首址时,从数据块首址开始传送数据。

(2)当源数据块首址小于目的块首址时,从数据块末址开始传送数据。

四实验步骤(1)按实验流程图设计编写实验程序(2)输入程序并检查无误后,经汇编,连接后装入系统(3)用E命令在以SI为起址的单元中填入十六个数(4)用G=0000:2000运行实验程序(5)用D命令查看DI为起址的单元中的数据是否与SI单元中数据相同五实验程序及结果显示(1)实验程序(1)实验结果显示实验五循环程序设计一实验目的(1)加深对循环结构的理解(2)掌握循环结构程序设计的方法(3)熟练掌握调试循环程序的方法二实验设备:PC机一台masm软件三实验内容求数据区内负数的个数:设数据区的第一单元存放区内单元数据的个数,从第二单元开始开始存放数据,在区内最后一个单元存放结果。

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

实验4 串行接口和应用一、实验目的利用实验机内的8251芯片,实现与PC机通讯。

二、实验内容(1) 利用实验机内的8253芯片的分频作为8251的收发时钟频率。

(2) PC机键盘所按键值(串口调试助手发送)通过RS232串口及8251A后送入8088,然后将所接收键值的ASCII码显示在数码管上(十六进制显示),并将该键值同时回送至PC机显示。

三、实验接线图图4-1 接线图四、编程指导(1) 8251状态口地址:03F9H,8251数据口地址:03F8H;(2) 8253命令口地址:43H,8253计数器#1口地址:41H;(3) 8255命令口地址:0FF23H,键扫口/字位口:0FF20H,键入口PC:0FF22H,字形口PB:0FF21H;(4) 通讯约定:异步方式,字符8位,一个起始位,一个停止位,波特率因子为16,波特率为9600;(5) 计算T/RXC,收发时钟fc,fc=16*9600=153.6K;(6) 8253分频系数:1843.2K / 153.6K=12。

五、实验步骤(1) 8251单元:T/RXC→OUT1,TXD→EX-TXD,RXD→EX-RXD,JX20→JX17;(2) 8253单元:GATE1→+5V,CLK1→1.8432MHZ;(3) CZ11用户通信口→PC机串口;(4) 按EXEC键运行程序;(5) 运行“串口调试助手”,通过PC键盘输入任意一个字符至发送区,在点击“手动发送”后,在实验箱数码管上显示“XXH”(ASCII码),并在“串口调试助手”接收区能看到由实验箱回送的该字符。

按RST键,返回P.态。

六、实验程序(自己编写)CODE SEGMENT ;S7.ASM,LOOK FOR MAX & MINASSUME CS:CODEORG 1000H ;INPUT DATA 4000H--4007HSTART: JMP START0PA EQU 0ff20H ;字位口PB EQU 0ff21H ;字形口CON8251 EQU 3f9HDAT8251 EQU 3f8HCNT0 EQU 0040HCNT1 EQU 0041HCNT2 EQU 0042HCTL8253 EQU 0043HBUF DB 10H,10H,10H,10H,10H,10Hdata1:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0: MOV DX,CTL8253 ;8253初始化MOV AL,01110110BOUT DX,ALMOV DX,CNT1MOV AL,12OUT DX,ALMOV AL,0OUT DX,ALMOV AL,4EH ;8251初始化及接收字符ASCII码并拆分送数码管显示(需补充完整)MOV DX,CON8251OUT DX,ALMOV AL,15HOUT DX,ALCON1: MOV DX,CON8251IN AL,DXTEST AL,02HJZ LOP1TEST AL,38HJNZ LOP1MOV DX,DAT8251IN AL,DXOUT DX,ALCALL ZHMOV BUF+3,AHMOV BUF+4,ALMOV BUF+5,12HLOP1: CALL DISPJMP CON1DISP: MOV AL,0FFH ;00H(数码管动态扫描显示子程序)MOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRET;--------------------------------------------------------ZH: MOV BL,AL;(将十六进制数拆分成高位和低位)MOV CL,4ROL AL,CLAND AL,0FHMOV AH,ALMOV AL,BLAND AL,0FHRET;-------------------------------------------------------CODE ENDSEND START七、思考题1.将输入字符的ASCCI码值对应的十进制显示出来。

CODE SEGMENT ;S7.ASM,LOOK FOR MAX & MIN ASSUME CS:CODEORG 1000H ;INPUT DATA 4000H--4007H START: JMP START0PA EQU 0ff20H ;字位口PB EQU 0ff21H ;字形口CON8251 EQU 3f9HDAT8251 EQU 3f8HCNT0 EQU 0040HCNT1 EQU 0041HCNT2 EQU 0042HCTL8253 EQU 0043HBUF DB 10H,10H,10H,10H,10H,10Hdata1:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0: MOV DX,CTL8253 ;8253初始化MOV AL,01110110BOUT DX,ALMOV DX,CNT1MOV AL,12OUT DX,ALMOV AL,0OUT DX,ALMOV AL,4EH ;8251初始化及接收字符ASCII码并拆分送数码管显示(需补充完整)MOV DX,CON8251OUT DX,ALMOV AL,15HOUT DX,ALCON1: MOV DX,CON8251IN AL,DXTEST AL,02HJZ LOP1TEST AL,38HJNZ LOP1MOV DX,DAT8251IN AL,DXOUT DX,ALCALL ZHLOP1: CALL DISPJMP CON1DISP: MOV AL,0FFH ;00H(数码管动态扫描显示子程序)MOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRET;--------------------------------------------------------ZH:MOV BH,ALMOV AH,0MOV DL,100DIV DLMOV BUF+3,ALMOV AL,AHMOV AH,0MOV DL,10DIV DLMOV BUF+4,ALMOV BUF+5,AHRET;-------------------------------------------------------CODE ENDSEND START2 实现将“How are you!”字符串通过8251A送至PC机并显示的程序,要求字符串每隔1s输出一次。

DATA SEGMENTSTRING DB 'How are you ?','$'BUFF DB 12 DUP(?)HH DB 0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN:MOV AX,DATAMOV DS,AXSTART:MOV BX,0HMOV AX,0003HINT 10HLEA SI,BUFFMOV CX,12L1:MOV AH,7HINT 21HMOV [SI],ALINC SIMOV DL,02AHMOV AH,06HINT 21HLOOP L1LEA DX,HHMOV AH,09HINT 21HLEA SI,BUFFLEA DI,STRINGMOV CX,12L2:MOV AL,[DI]CMP [SI],ALJNZ NOH1:INC SIINC DILOOP L2CMP BX,01HJNZ STARTLEA DX,STRINGMOV AH,09HINT 21HJMP EXITNO:MOV BX,01HJMP H1EXIT:MOV AX,4C00HINT 21HCODE ENDSEND MAIN3 利用实验机内小键盘,每按动一次任一数字键,就把该键值通过8251发送给PC机接收,并在PC机屏幕上显示出该键值。

相关文档
最新文档