电子科技大学微机原理实验指导书注释版exp1

合集下载

微机原理实验指导书

微机原理实验指导书

实验一初级程序的编写与调试一、实验目的1、熟练掌握的DEBUG常用命令,学会用DEBUG调试程序;2、深入了解数据在存储器中的存取方法,及堆栈中数据的压入与弹出;3、掌握各种寻址方法以及简单指令的执行过程。

二、实验内容1、设堆栈指针SP=2000H,AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。

请用堆栈作为两寄存器交换内容的中间单元,用DEBUG调试程序进行汇编与调试。

2、设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H—304H连续单元顺序装入0AH、OBH、0CH、0DH、0EH。

在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程。

当每条数据传送完毕时,AX中的内容是什么。

程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3、设AX=0002H,编一个程序段将AX的内容乘10,要求用移位的方法完成。

三、实验要求1、实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,对程序结果的分析等。

2、本实验要求在PC机上完成。

3、本实验只要求在DEBUG调试程序状态下进行,包括汇编程序,调试程序,执行程序。

4、编程提示:(1)、实验内容1将两个寄存器内容进行交换时,必须有一个中间寄存器才能进行内容的交换。

如果用堆栈作为中间存储单元,必须遵循先进后出的原则。

(2)、实验内容2[1] 其中数据段寄存器中的段地址为进入DEBUG状态后系统自动分配的段地址。

[2] SI和BX的初值可在DEBUG的状态下,用R命令装入,也可以在程序中用指令来完成。

[3] 用T命令执行程序,可进行单步跟踪执行,每执行一条指令就可以看到各寄存器的状态,也可用R命令直接调出寄存器,来检查各寄存器内容是否正确。

《微机原理与接口技术》实验指导书

《微机原理与接口技术》实验指导书

《微机原理与接口技术》课程实验指导书实验内容EL-8086-III微机原理与接口技术教学实验系统简介使用说明及要求✧实验一实验系统及仪器仪表使用与汇编环境✧实验二简单程序设计实验✧实验三存储器读/写实验✧实验四简单I/0口扩展实验✧实验五8259A中断控制器实验✧实验六8253定时器/计数器实验✧实验七8255并行口实验✧实验八DMA实验✧实验九8250串口实验✧实验十A/D实验✧实验十一D/A实验✧实验十二8279显示器接口实验EL-8086-III微机原理与接口技术教学实验系统简介使用说明及要求EL-8086-III微机原理与接口技术教学实验系统是为微机原理与接口技术课程的教学实验而研制的,涵盖了目前流行教材的主要内容,该系统采用开放接口,并配有丰富的软硬件资源,可以形象生动地向学生展示8086及其相关接口的工作原理,其应用领域重点面向教学培训,同时也可作为8086的开发系统使用。

可供大学本科学习《微机原理与接口技术(8086)》,《单片机应用技术》等课程提供基本的实验条件,同时也可供计算机其它课程的教学和培训使用。

为配合使用EL型微机教学实验系统而开发的8086调试软件,可以在WINDOWS 2000/XP等多种操作系统下运行。

在使用本软件系统调试程序时,可以同时打开寄存器窗口、内存窗口、反汇编窗口、波形显示窗口等等,极大地方便了用户的程序调试。

该软件集源程序编辑、编译、链接、调试与一体,每项功能均为汉字下拉菜单,简明易学。

经常使用的功能均备有热键,这样可以提高程序的调试效率。

一、基本特点EL型微机教学实验系统是北京精仪达盛科技有限公司根据广大学者和许多高等院校实验需求,结合电子发展情况而研制的具有开发、应用、实验相结合的高科技实验设备。

旨在尽快提高我国电子科技发展水平,提高实验者的动手能力、分析解决问题能力。

系统具有以下特点:1、系统采用了模块化设计,实验系统功能齐全,涵盖了微机教学实验课程的大部分内容。

《微机原理与接口技术》实验指导书

《微机原理与接口技术》实验指导书

微机原理与接口技术实验指导书实验一:微处理器概述及数据传输实验一、实验目的•了解微处理器的基本概念和工作原理;•学习数据传输的基本知识;•掌握使用微处理器进行数据传输的方法。

二、实验器材•1个微处理器开发板;•1个串行通信模块;•相应的连接线。

三、实验内容在该实验中,你将学习如何使用微处理器进行数据传输,具体实验步骤如下:1.将开发板和串行通信模块连接起来;2.将数据发送器连接到串行通信模块的发送端口,将数据接收器连接到串行通信模块的接收端口;3.通过开发板上的开关设置要发送的数据;4.通过串行通信模块将数据发送到计算机;5.在计算机上使用相应的软件接收数据,并验证接收到的数据是否正确。

四、实验步骤1.将开发板和串行通信模块连接起来,确保连接正确并稳定;2.将数据发送器插入串行通信模块的发送端口,将数据接收器插入串行通信模块的接收端口;3.在开发板上的开关上设置要发送的数据;4.打开计算机上的串行通信软件,配置正确的串口号和波特率;5.点击软件的接收按钮,准备接收数据;6.在开发板上的开关上切换到发送模式,并观察串行通信模块的指示灯是否正常闪烁;7.在串行通信软件上观察接收到的数据是否与设置的数据一致;8.如果数据传输正常,则实验完成。

五、实验注意事项1.连接线务必稳固连接,确保数据传输正常;2.阅读并理解实验器材的使用说明书;3.注意保持实验环境的整洁,避免影响实验结果;4.在进行数据传输时,确保计算机已正确安装了相应的驱动程序。

六、实验总结通过这次实验,我们初步了解了微处理器的基本概念和工作原理,学习了数据传输的基本知识,并掌握了使用微处理器进行数据传输的方法。

我们在实验中成功地连接了开发板和串行通信模块,并成功地进行了数据传输。

通过实验,我们发现数据传输过程中需要注意连接线的稳固连接,以及计算机是否安装了相应的驱动程序。

实验的结果验证了我们的操作方法的正确性,同时也为后续实验奠定了基础。

注意:本指导书旨在引导实验过程,实验过程中如有任何危险情况,请立即停止实验并寻求实验室管理员的帮助。

微机原理教学实验箱实验手册

微机原理教学实验箱实验手册

微机原理教学实验箱使用手册西安电子科技大学通信工程学院何先灯2015.12.30注意事项用户在使用本手册中所描述的的硬件产品时请严格遵照下述事项:1.严禁自行拆机,以免发生危险2.严禁频繁进行开、关机的操作3.严禁在上电状态下进行硬件的插拔4.严禁用手直接接触芯片,以避免该芯片被静电击穿手册目录本手册包含以下章节:第一章概述:简要介绍了MCU开发工具及流程。

第二章JLINK驱动的安装。

详细介绍了驱动的安装方法、步骤。

第三章软件使用指导:详细介绍了IAR下载调试工具的使用。

第四章测试例程:通过详细的实验说明,介绍了实验箱的演示实验,包括LED流水灯、数码管、串口通信、音频、SD卡等多个实验。

目录一、概述 (1)二、JLINK的驱动安装 (3)三、软件使用指导 (5)3.1IAR的使用 (5)四、实验任务 (20)4.1实验一按键检测和LED显示实验 (20)1.基本要求 (20)2.重点、难点 (20)3.作业及课外学习要求 (20)4.实验原理 (20)5 实验任务 (23)4.2实验二IO中断和定时器中断实验 (24)1.基本要求 (24)2.重点、难点 (24)3.作业及课外学习要求 (24)4.实验原理 (24)5.实验任务 (25)4.3 RS232串口通信实验 (27)1.基本要求 (27)2.重点、难点 (27)3.作业及课外学习要求 (27)4实验原理 (27)5.实验任务 (28)4.4 IIC通信及LCD显示 (29)1.基本要求 (29)2.重点、难点 (29)3.作业及课外学习要求 (29)4实验原理 (29)5.实验任务 (31)4.5并行总线接口实验..................................................................... 错误!未定义书签。

1.基本要求...................................................................................... 错误!未定义书签。

微机原理实验指导书

微机原理实验指导书

实验一 DOS命令与汇编源程序输入、汇编、连接、运行一、实验目的掌握在计算机上运行汇编语言程序的整个操作过程。

学会将自己编制的汇编语言源程序用EDIT编辑程序输入计算机并存盘;学会用MASM 宏汇编程序对汇编语言源程序进行汇编形成二进制目标文件;学会用LINK连接程序对二进制目标文件连接形成可执行文件;学会运行经汇编和连接后形成的可执行文件;学会用DEBUG调试程序运行和调试可执行文件。

二、实验设备1、PC系列不低于80286档次的微型机;2、DOS3.3以上版本的操作系统;3、EDIT,MASM,LINK,DEBUG执行程序。

三、实验步骤1、用EDIT编辑汇编源程序(1)MS-DOS Editor的启动与退出Editor是在DOS系统提示符下启动,其命令格式为:C:EDIT [Path] [filename]在编辑完成后,选择屏幕菜单的File命令(按“ALT+F”键)中的Exit项即可退出Editor。

(2)建立文本文件在MS-DOS Editor的屏幕菜单栏中File命令就是对文本文件的建立、存储和打印的操作。

A.建立文件(New)打开屏幕菜单栏中File下拉菜单,选择New项。

B.编辑文件将写好的汇编语言源程序输入到编辑文本区。

输入时,一行结束后按回车键(Enter)换行。

C.保存文件(Save)打开屏幕菜单栏中File下拉菜单,选择Save项在弹出的对话框中键入文件名。

如果要把文件保存到非默认路径下,则在键入文件名的同时键入路径。

D.打开文件(Open)打开屏幕菜单栏中File下拉菜单,选择Open项。

该窗口中有三个区可以选择要打开的文件:文件名区:可以直接键入要打开的文件名;文件表区:文件表中列出要打开的所有文件名,供用户选择;目录/磁盘区:键入的文件名是哪个磁盘目录中的,在该区中选择。

在Open对话框中用“Tab”或“Shift+Tab”键选择各区。

选完后按“OK”确定。

2.MASM宏汇编程序的使用方法(1)命令格式和功能命令格式:MASM文件名功能:对汇编语言源程序进行汇编形成二进制目标文件(2)操作过程在DOS下,将目录切换到汇编语言所在目录下,然后调入MASM宏汇编程序。

《微机原理及汇编语言》实验指导书

《微机原理及汇编语言》实验指导书

《微机原理及汇编语言》实验指导书微机原理和汇编语言实验指导书信息与通信工程学院电气工程系目录实验须知 (3)实验一数据求和实验 (4)实验二循环与分支程序设计实验 (8)实验三中断程序设计实验 (12)实验四屏幕显示程序设计实验 (14)第一部分实验须知1、预习要求实验前认真阅读实验教程中有关内容,明确实验目的和实验任务。

每次实验前应有预习报告,未预习者不允许参加实验。

预习报告中:对软件实验,要求画出程序流程图,编好上机程序;对硬件实验,要求画出实验线路图,拟定实验步骤,画出程序流程图,编好上机程序。

2、实验要求实验是学习“微机原理及汇编语言程序”这门课程的重要环节,实验课请勿迟到,缺席。

爱护设备,保持清洁,不随意更换设备。

认真完成实验任务,实验结果经教师检查,教师对实验内容提问,对完成者做记录。

做硬件实验时,注意断电操作,即所有的接线、改线及拆线操作均应在不带电的状态下进行,严禁带电操作,并注意防止导线堵塞插孔。

发生事故,应立即切断电源,并马上向教师报告,检查原因,吸取教训。

实验完毕,请整理实验设备,再离开实验室。

3、报告要求每次实验后,应递交一份实验报告,报告中应包括下列内容:(1)实验名称、实验人姓名、学号、班级、所用的设备号。

(2)实验目的、任务。

(3)各任务程序流程图、程序清单(应加适量注释)。

(4)硬件实验应画出各任务的完整电路图,包括PC总线与实验用到芯片间全部电路。

(5)记录和分析实验结果。

(6)根据实验目的认真做小结。

第二部分实验实验一数据求和实验一、实验目的1、学习使用DEBUG程序的各种命令。

2、了解计算机取指令、执行指令特别是算术运算指令的工作过程。

3、掌握用DEBUG调试程序的方法。

二、实验内容1、参照教材中有关内容,掌握DEBUG程序的各种操作命令,重点为R——寄存器内容检查命令D——存储器内容检查命令A——汇编命令U——反汇编命令T——跟踪及单步执行命令P——单步执行命令,跳过子程序G——全速执行程序命令。

计算机组成原理实验指导书 电子科技大学

计算机组成原理实验指导书 电子科技大学

计算机专业核心硬件课程实验指导书电子科技大学计算机学院实验平台介绍一.硬件部分:1.核心适配板:主控芯片是XILINX公司的SPRTAN XC3S500E(50万逻辑门电路),它具有可编程接口(JTAG),通过并口与PC机相连,该芯片可以反复擦写。

2.实验箱上输入/输出接口:⑴按键开关:键按下为抵电平,弹起为高电平,实验箱上的序号是AN1,AN2。

用它可以形成脉冲信号。

(2个)⑵拨动开关:开关向上为高电平,向下为低电平,实验箱上的序号是K1~K12。

(12个)⑶发光二极管:分成红、绿、黄三种颜色。

高电平点亮,低电平熄灭。

实验箱上的序号是L1~L24。

(24个)(4)8段LED数码管:低电平点亮相应的段。

实验箱上的序号是LED1~LED4。

(4个)3. 用户接口部分二.软件部分:本实验系统的开发软件采用Xilinx公司的ISE集成开发环境。

其软件开发流程:1.创建工程*双击桌面“Xilinx ISE 7.1”;*选择“File” New Project”,屏上显示(图1);●填写“工程项目名”和文件存放路径。

*点击“下一步”,屏上显示(图2);●选择所使用芯片的类型、封装等信息;●选择综合工具(Synthesis Tool)(图1)(图2)2.设计输入*在(图3)对话框,输入文件名,同时选左框中的”Verilog Module”*输入Verilog HDL 的源程序代码(图3)3.约束(引脚绑定)*在“Process View”框中,点击“User Constraints”前的‘+’,双击“Assign Package Pins”*在“Design Browser”框中,选“I/O Pins”*在“Design Object List…”框中‘Loc’栏添入芯片的引脚序号,注意在引脚序号前加上字母p;4.综合在“Process View”框中,点击“Synthesize-XST”;5.实现在“Process View”框中,点击“Implement Design”;6.下载在“Process View”框中,点击“Configure Device(Impact)”;●选“Boundary-Scan Mode”●选“Automatically connect to cable….”(注意此时必须将实验目标板通过并口与PC相连,同时打开实验箱的电源!),屏上显示下图。

微机原理实验指导书(注释版修正版)-4-1

微机原理实验指导书(注释版修正版)-4-1

微机原理实验指导书(版本0.1)余有灵副教授控制科学与工程系2007年12月11日说明本实验指导书是依据西安唐都科教仪器公司的产品手册编制,在实验中心相关领导和实验工作人员的帮助下完成的,在此表示感谢。

实验4-1 8255并口控制器应用实验1.实验目的(1)掌握8255的工作方式及应用编程。

(2)掌握8255的典型应用电路接法。

2.实验设备PC微机一台、TD-PIT+ 实验系统一套。

3.实验内容(1)基本输入输出实验。

编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。

要求只要开关拨动,数据灯的显示就改变。

(2)流水灯显示实验。

编写程序,使8255的A口和B口均为输出,实现16位数据灯的相对循环显示。

4.实验原理并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。

CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V式0--基本输入/1--选通输入/出方式、方式2--双向选通工作方式。

8255的内部结构及引脚如图4-1-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图4-1-2所示。

图4-1-1 8255的内部结构及引脚8255基本用法:首先片选8255,且WR=1和A1A0=11,把数据D7~D0写入8255的控制寄存器,初始化工作方式和ABC口的IO模式其次,A1A0=xx(00~10),选定某个端口(A~C),如果WR=1,则数据D7~D0输出到该端口,如果RD=1则该端口的数据输入到总线D7~D0(a)工作方式控制字(b)C口按位置位/复位控制字图4-1-2 8255控制字格式5.实验说明及步骤(1)基本输入输出实验本实验使8255端口A工作在方式0B0用一组开关信号接入端口B,端口A输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。

微机原理实验指导书

微机原理实验指导书

《8086/8088微机原理与接口技术》实验指导书成都理工大学核技术与自动化工程学院电气工程系2012-9-10目录实验一EMU8086软件的使用 (3)实验二8086指令观察 (7)实验三顺序结构程序设计 (10)实验四分支结构程序设计 (13)实验五循环结构程序设计 (15)实验六子程序设计 (17)附录1汇编语言上机实验基础 (19)1.1汇编语言程序上机实验过程 (19)1.2EMU8086 .................................... 错误!未定义书签。

1.3实验及实验报告要求 (20)基础软件实验部分共有六个实验组成,通过对这些实验程序的编写、调试,使学生熟悉8086/8088的指令系统等,了解程序设计过程,掌握汇编程序设计方法以及如何使用实验系统提供的各种调试、分析手段来排除程序错误。

实验一 EMU 8086软件使用EMU 8086是一款基于Windows的集编辑、汇编、链接、调试运行于一体的可视化的8086 CPU仿真软件,有着与8086十分相近的功能。

EMU8086是交互式学习汇编语言(Assembly Language)、计算机结构(Computer Architecture)和逆向工程(Reverse Engineering)的完整仿真体系。

其内部集成了汇编程序汇编器、链接器、虚拟硬件、参考资料、例程、学习指南等。

EMU8086是学习Intel 8086微处理器的理想工具,它模拟真实微处理器的每一步骤,并显示内部寄存器、存储器、堆栈、变量和标志寄存器,而且其中任何一个数值都可通过鼠标双击来改变。

同时它还提供了微机显示器、直流步进电机、交通灯、LED等虚拟外设。

本节对EMU 8086的使用方法作一简介,仍以例1的HELLO程序为例。

双击EMU8086图标,打开程序。

此时会弹出welcome窗口,见图1.1所示,可将该窗口关闭直接进入编辑状态;也可点击它的new按钮,则会弹出代码模板选择框供用户选择(可选择EXE模板),见图1.2所示,一般点击Cancel按钮,直接进入编辑状态。

微机原理实验指导书

微机原理实验指导书

实验一数据传送实验目的:1.熟悉8086指令系统的数据传送指令及8086的寻址方式。

2.利用TurboDebugger调试工具来调试汇编语言程序。

实验任务:1.通过下述程序段的输入和执行来熟悉TurboDebugger的使用,并通过显示器屏幕观察程序的执行情况。

练习程序段如下:MOVBL,08HMOVCL,BLMOVAX,03FFHMOVBX,AXMOVDS:[0020H],BX2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。

压栈程序段如下:MOVAX,0102HMOVBX,0304HMOVCX,0506HMOVDX,0708HPUSHAXPUSHBXPUSHCXPUSHDX出栈程序段请自行编写(用不同的出栈顺序)。

3.指出下列指令的错误并加以改正,上机验证之。

(1)MOV[BX],[SI](2)MOVAH,BX(3)MOVAX,[SI][DI](4)MOVBYTEPTR[BX],2000H(5)MOVCS,AX(6)MOVDS,2000H4.设置各寄存器及存储单元的内容如下:(BX)=0010H,(SI)=0001H(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH说明下列各条指令执行完后AX寄存器中的内容,并上机验证。

(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,[0120H](4)MOVAX,[BX](5)MOVAX,0110H[BX](6)MOVAX,[BX][SI](7)MOVAX,0110H[BX][SI]5.将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。

试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。

微机原理与应用实验指导书

微机原理与应用实验指导书

目录第一篇汇编语言程序设计实验一汇编语言上机操作—比较字符串----------------------1-1 实验二循环程序设计—建立学生名次表---------------1-5 实验三显示器界面设计—光标轨迹程序----------------1-8 实验四键盘界面设计—键盘输入程序------------------1-10 实验五算术程序设计—判断闰年程序----------------1-22第二篇微机硬件实验系统实验一简单I/O口扩展实验-------------------2-1 实验二 8255并行口实验----------------------2-实验三 8253定时器/计数器接口实验-----------2-实验四 8250串口实验------------------------2-实验五存储器扩展实验-----------------------2- 实验六 8259中断控制器实验------------------2-实验七基于定时中断的实时控制综合实验-- ---2- 附录1 ASCII码表--------------------------3-1附录2 常用BIOS中断调用------------------3-2 附录3 INT 21H DOS系统功能调用------------3-5 附录4 PCI BIOS中断调用INT 1AH- -------3-11 附录5 汉字字符集表-----------------------3-13 附录6 DEBUG 主要命令------------- -------3-21第一篇汇编语言实验一汇编语言上机操作—比较字符串实验项目名称:比较字符串实验项目性质:普通所属课程名称:微机原理与应用实验计划学时:2一、实验目的1、学习程序设计的基本方法和技能;2、熟练掌握汇编语言设计、编写、调试和运行;二、实验内容和要求1、汇编语言上机操作方法编写程序,比较两个字符串STRING1和STRING2所含字符是否相同,若相同则在屏幕上显示‘MATCH’,否则显示‘NOT MATCH’。

微机原理实验指导书

微机原理实验指导书

微机原理实验指导书第一章DEBUG调试系统的使用。

1一、DEBUG的作用。

1二、DEBUG的使用。

1第二章 Intel 80x86 指令系统及寻址方式和基本程序设计。

18一、数据传送指令。

18二、算术运算类指令及线性程序设计。

20三、逻辑及移位类指令与线性程序设计。

22四、转移类指令与分支型程序设计。

24五、循环控制类指令与循环程序设计。

25第三章 DOS 功能调用。

28一、源程序的编辑和可执行文件的形成。

28二、输入输出程序设计。

29第四章循环和分支结构汇编语言程序设计。

30一、循环程序结构。

30二、分支程序结构。

31三、综合程序练习。

32第五章子程序结构汇编语言程序设计。

32一、子程序之一___原程序结构的编辑和可执行文件的形成。

32二、子程序之二___子程序的设计。

38第六章高级汇编语言程序设计。

39一、宏汇编语言程序的结构。

39二、宏汇编语言程序设计。

40三、重复汇编技术。

40第七章键盘程序设计。

40一、键盘输入程序。

40第八章音乐程序设计。

42一、发音程序。

42二、音乐程序。

42第九章活动图形显示程序。

44一、活动字符图形显示。

44二、静止复合图形显示。

45第十章磁盘文件操作程序。

47一、文本文件内容显示。

47二、磁盘文件拷贝。

50 第十一章绝对磁盘读写程序。

53一、误删除文件的恢复。

53二、磁盘目录显示程序。

53第一章DEBUG调试系统的使用一、DEBUG的作用DEBUG是DOS提供的用于程序调试的系统,作为DOS的外部命令随DOS的其它外部命令一起由DOS的提供产商向用户提供。

因此用户在使用DEBUG系统时一定要注意当前用户所使用的DOS 的外部命令中是否提供该命令(若DOS命令不全,有可能没有此命令)。

二、DEBUG的使用1、DEBUG的调用由于DEBUG是DOS的外部命令,因此必须在DOS的提示符状态下进行调用。

调用的方法如下:C:\>DEBUG [FILENAME]此处FILENAME应是文件的全名,即应包括文件的主名和扩展名(若文件有扩展名),如文件不在当前目录,则还因包括文件所存放的目录名。

微机原理实验指导书 (1)

微机原理实验指导书 (1)

实验一系统操作及程序调试举例1.实验目的学习并掌握实验系统的基本操作,为以后的实验打下基础。

2.实验设备DICE-8086B实验系统一台3.实验准备工作系统一经连好,检查无误后,就可以通电运行。

系统提供两种启动方式,即:系统自动完成后,显示器上会显示“>”提示符,等待键入操作命令。

4.实验内容及步骤(1)系统操作练习(一)要求:从3500内存单元开始建立0~15共16个数据。

程序流程图如下:实验步骤①输入与修改:在“﹥”提示符下键入A2000,此时显示器上将会显示程序的段地址CS和偏移地址IP(=2000H),接着就可以在光标处输入程序。

注:在输入过程中,若发现本行有错误,则可以按“ ”键删除并重新输入;若回车后系统提示“ERROR!”,则要在原地址指针处重新正确输入。

输入程序后可通过反汇编查看程序。

(U操作)②程序运行:在DICE-8086B实验系统上,程序的运行方式有单步、连续和断点运行几种方式。

可参考(T操作,G操作,GB操作等)③内存单元的修改与显示:用(D操作)可显示内存单元的内容,用(E操作)可修改内存单元的内容。

(分别参考前)。

④运行程序观察从3500H单元开始连续存放的16个数据为多少?任意修改AX的值,再运行程序,显示运行结果是否正确?流程图及参考程序如下:地址机器码助记符注释2000 BF 3500 MOV DI,3500 ;设数据区首址2003 B9 0010 MOV CX,0010 ;字节数送CX2006 B8 0000 MOV AX,00002009 9E SAHF200A 88 05 MOV B[DI],AL ;写入一字节200C 47 INC DI ;修改地址指针200D 40 INC AX ;修改数据200E 27 DAA ;十进制调整200F E2 F9 LOOP 200A ;未填完转移2011 CD 00 INT(2)系统操作练习(二)要求:将内存3500单元开始的0~15共16个数传递到3600单元开始的数据区中。

微机原理实验指导书

微机原理实验指导书

微机原理实验指导书实验一数据传送实验目的 :1. 熟悉 8086 指令系统的数据传送指令及 8086 的寻址方式。

2. 利用 Turbo Debugger 调试工具来调试汇编语言程序。

实验任务 :1.通过下述程序段的输入和执行来熟悉Turbo Debugger 的使用,并通过显示器屏幕观察程序的执行情况。

练习程序段如下:MOV BL , 08HMOV CL , BLMOV AX , 03FFHMOV BX , AXMOV DS : [0020H] , BX2.用以下程序段将一组数据压入( PUSH )堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。

压栈程序段如下:MOV AX , 0102HMOV BX , 0304HMOV CX , 0506HMOV DX , 0708HPUSH AXPUSH BXPUSH CXPUSH DX出栈程序段请自行编写(用不同的出栈顺序)。

.3. 指出下列指令的错误并加以改正,上机验证之。

(1) MOV [BX] , [SI](2) MOV AH , BX(3) MOV AX , [SI][DI](4) MOV BYTE PTR[BX] , 2000H(5) MOV CS , AX(6) MOV DS , 2000H4. 设置各寄存器及存储单元的内容如下:(BX) = 0010H , (SI) = 0001H(10010H) = 12H , (10011H) = 34H , (10012H) = 56H ,(10013H) =78H (10120H) =0ABH ,(10121H) =0CDH ,(10122H) = 0EFH说明下列各条指令执行完后 AX 寄存器中的内容,并上机验证。

(1) MOV AX , 1200H(2) MOV AX , BX(3) MOV AX , [0120H](4) MOV AX , [BX](5) MOV AX , 0110H[BX](6) MOV AX , [BX][SI](7) MOV AX , 0110H[BX][SI]5. 将 DS : 1000H 字节存储单元中的内容送到 DS : 2020H 单元中存放。

微机原理实验指导书(注释版修正版)-1

微机原理实验指导书(注释版修正版)-1

微机原理实验指导书(版本0.1)余有灵副教授控制科学与工程系2007年11月13日说明本实验指导书是依据西安唐都科教仪器公司的产品手册编制,在实验中心相关领导和实验工作人员的帮助下完成的,在此表示感谢。

实验一 显示程序实验1. 实验目的(1) 掌握在PC 机上以十六进制形式显示数据的方法。

(2) 掌握部分DOS 功能调用使用方法。

(3) 熟悉Tddebug 调试环境和Turbo Debugger 的使用。

2. 实验设备PC 微机一台。

3. 实验内容及说明一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。

本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS 功能调用完成一些提示信息的显示。

实验中可使用DOS 功能调用(INT 21H )。

(1) 显示单个字符输出 入口:AH=02H 调用参数:DL=输出字符 (2) 显示字符串 入口:AH=09H 调用参数:DS:DX=串地址,’$(3) 键盘输入并回显 入口:AH=01H 返回参数:AL=输出字符 (4) 返回DOS 系统入口:AH=4CH调用参数:AL=返回码4. 实验步骤(1) 运行Tddebug 软件,选择Edit 菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图2-1-1示。

(2) 使用Compile 菜单中的Compile 和Link 对实验程序进行汇编、连接。

(3) 使用Rmrun 菜单中的Run ,运行程序,观察运行结果。

(4) 使用Rmrun 菜单中的Debug ,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。

(5) 更改数据区中的数据,考察程序的正确性。

图1 显示程序实验流程图5. 参考程序清单;显示程序实验STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENT MES DB 'Press any key to exit!',0AH,0DH,0AH,0DH,'$' MES1 DB 'Show a as hex:',0AH,0DH,'$' SD DB'a'16位段模式DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AXMOV ;显示退出提示MOV AH,09HINT 21HMOV DX,OFFSET MES1 ;show messageMOV AH,09HINT 21HMOV SI,OFFSET SDMOV AL,DS:[SI]AND AL,0F0H;取高4位SHR AL,4CMP AL,0AH ;是否是A 以上的数JB C2ADD AL,07H C2:ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07H C3:ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21HKEY:MOV AH,1 ;判断是否有按键按下?INT 16HJZ KEY C2也是一个标号,可以用跳转循环指令直接跳到这个标号所在的代码行执行MOV AX,4C00H ;go back to dosINT 21HCODE ENDSEND START。

《微机原理及应用技术》实验指导书

《微机原理及应用技术》实验指导书
第三步:编译不通过,重新修改(错误类型:源程序语句不合法)
在执行过第二步后,如有出错信息时,就不能跳跃到第四步去,如果强行执行第四步, 将无任何有效结果。
说明:要清楚,在第二步中检测出的错误均为每一条语句的语法或用法错误,它并不能 检测出程序的逻辑设计(语句安排位置)错误,所以就要记好出错的行号。在记录行号后, 就应再次执行第一步,这时的操作应是打开已编好的源程序(以 EDIT 为例:在 DOS 提示符 下键入:
3
《微机原理》实验指导书
段寄存器 CS,DS,ES 和 SS 均指向 DEBUG 末尾的第一个段。 IP 寄存器置为 0100H。栈指针 SP 指向尾部或装入程序的暂存部分的底部。 其余寄存器皆取零值,但若用户调用时含文件说明,则 CX 含文件长度(长度大于
64K 时 BX 含长度的高位);标志为各自的复位值;驱动器传送地址在代码段位移 80H 处。 注意:若 DEBUG 装入扩展名为.EXE 的文件,则 DEBUG 需重定位且设置段寄存器指示器为 文件中所定义的值。但 DS,ES 指向最低可用段处的程序区前缀。BX 和 CX 为文件容量值。 而 .EXE 文件如果在连接时选择了装入内存高处的参数,则该程序装入高处。
溢出 OF 有/无 OV/NV
方向 DF 减/增 DN/UP
中断 IF 开/关 EI/DI
符号 SF 负/正 NG/PL
零 ZF 零/非 ZR/NZ
辅助 AF 有/无 AC/NA
奇偶 PF 偶/奇 PE/PO
进位 CF 有/无 CY/NC
(2)显示指定寄存器内容
例如:-R AX <Enter>
-R F <Enter>
EDIT filename.asm 回车,依据行号进行修改并存盘,再次进行汇编,直至第二步通过 为止。便可继续向下执行第四步。

微机原理实验指导书(注释版修正版)-3

微机原理实验指导书(注释版修正版)-3

微机原理实验指导书(版本0.1)余有灵副教授控制科学与工程系2007年11月13日说明本实验指导书是依据西安唐都科教仪器公司的产品手册编制,在实验中心相关领导和实验工作人员的帮助下完成的,在此表示感谢。

本次实验包括四个实验系统。

任意完成其中两个即可。

实验3-1 基本I/O接口电路设计实验1.实验目的(1)掌握基本I/O接口电路的设计方法。

(2)熟练汇编语言I/O端口操作指令的使用。

2.实验设备PC微机一台、TD-PIT+ 实验系统一套。

3.实验内容利用三态缓冲器74LS245、锁存器74LS374设计微机总线和外部设备的数据通道,实现微机对外部输入数据的读取和对输出数据的输出。

用开关及LED显示单元的开关和数据灯作为输入和输出显示设备,将读到开关的数据显示在数据灯上。

4.实验原理(1)输入接口设计输入接口一般用三态缓冲器实现,外部设备输入数据通过三态缓冲器,通过数据总线传送给微机系统。

74LS245是一种8通道双向的三态缓冲器,其管脚结构如图1所示。

DIR DIR为1表示数据由A[7:0]至B[7:0],DIR为0表示数据由B[7:0]至A[7:0]。

G引图1 74LS245双向三态缓冲器管脚图(2)输出接口设计输出接口一般用锁存器实现,从总线送出的数据可以暂存在锁存器中。

74LS3748其管脚结构如图2所示。

D[7:0]为输入数据线,Q[7:0]为输出数据线。

CLK引脚为锁存控制信号,上升沿OE引脚为图2 74LS374上沿触发锁存器管脚图(3) 输入输出接口设计用74LS245和74LS374可以组成一个输入输出接口电路,既实现数据的输入又实现数据的输出,输入输出可以占用同一个端口。

是输入还是输出用总线读写信号来区分。

总线读信号IOR 和片选信号CS 相“或”来控制输入接口74LS245的使能信号G 。

总线写信号IOW 和片选信号CS 相“或”来控制输出接口74LS374的锁存信号CLK 。

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

/*STRB:存储字节数据,R1 实际上是传递过来的参数 d,指向目的字符串*/ /*所以这里的#1 和之前内嵌汇编情况里的#1 用法的也是一个意思*/
b loop /*因为之前已经判空,所以这里无条件跳转继续循环 */
over mov pc, lr /* 跳到这里,就代表返回了*/ END 在这里,C 和汇编之间的参数传递是通过 ATPCS(ARM Thumb Procedure Call Standard) 的规定来进行的。简单的说就是如果函数有不多于四个参数,对应的用 R0-R3 来进行传递, 多于 4 个时借助栈。函数的返回值通过 R0 来返回。 4) 在汇编中调用 C 的函数 在汇编中调用 C 的函数,需要在汇编中 IMPORT 对应的 C 函数名,然后将 C 的代码放 在一个独立的 C 文件中进行编译,剩下的工作由连接器来处理。 ;the details of parameters transfer comes from ATPCS ;if there are more than 4 args, stack will be used
IMPORT gVar_1/*从 C 文件中获取了 gVar_1 变量*/ /*这个子程序实现了数据乘以 2*/ asmDouble ldr r0, =gVar_1/*LDR 伪指令装载 gVar_1 标号对应的地址到寄存器 R0 中*/ ldr r1, [r0] /*LDR 指令用间接寻址将地址为 R0 的数据装载到寄存器 R1 中*/ mov r2, #2/*立即数 2 传送到寄存器 R2 中*/
;asm function implementation AREA asmfile, CODE, READONLY EXPORT asm_strcpy /*老规矩*/
asm_strcpy loop
ldrb r4, [r0], #1 ;address increment after read /*LDRB:加载无符号字节数据,R0 实际上是传递过来的参数 s,指向源字符串 */ /*所以这里的#1 和之前内嵌汇编情况里的#1 用法的也是一个意思*/ cmp r4, #0 / *判断读取的字符是否为空字符*/ beq over /*若之前一步判断为空字符,跳转到 over*/ strb r4, [r1], #1
/*LDRB:加载无符号字节数据;*/
/*src 指针指向源字符串,#1 表示拷贝一个字符后,src 指针指向下一个字符;*/
strb ch, [dest], #1
/*STRB:存储字节数据;*/
/*dest 指向目的字符串,#1 表示存到目的字符串后,dest 指向下一个待存位置*/
cmp ch, #0
五、实验步骤
注意:本次所有实验内容的调试环境为 RVDS。 1、运行 RVDS,建立工程文件,单步运行演示示例程序,深刻理解每一条指令,观察寄存 器,内存空间的变化。
/*将 ch 和立即数 0 迚行比较*/
bne loop
/*当上一步比较结果丌一样时,表示拷贝尚未结束,继续循环*/
}/*当 ch 读到 0 时代表需要拷贝的字符串已读完,这时候在目的字符串末尾已经
添加了 0 字符,这是 C 中字符串的结束标志*/
}
int main() {
char *a = "forget it and move on!"; /*C 中初始化定义的字符串自动在末尾添加结束符/0*/ char b[64]; my_strcpy(a, b); /*传递的是指针!*/ printf("original: %s", a); printf("copyed: %s", b); return 0; } 在这里 C 和汇编之间的值传递是用 C 的指针来实现的,因为指针对应的是地址,所以 汇编中也可以访问。 2) 在汇编中使用 C 定义的全局变量 内嵌汇编不用单独编辑汇编语言文件,比较简洁,但是有诸多限制,当汇编的代 码较多时一般放在单独的汇编文件中。这时就需要在汇编和 C 之间进行一些数据的传 递,最简便的办法就是使用全局变量。 /* cfile.c 定义全局变量,并作为主调程序*/ #include <stdio.h> int gVar_1 = 12; /*这实际上是一个全局变量,汇编语言文件中才能访问*/ extern asmDouble(void); /*声明函数原型,extern 指定其函数定义在其他文件中*/ int main() {
EXPORT asmfile/* 老规矩*/ AREA asmfile, CODE, READONLY IMPORT cFun/* 老规矩,a,b,c 三个参数实际上已经传递过来到 R0,R1,R2 中了*/ ENTRY mov r0, #11 mov r1, #22 mov r2, #33 BL cFun /* 注意:调用函数后函数返回值保存在 R0 中*/ END
2、冒泡算法简介 这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较
轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处 理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发 现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍 之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。 在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。一般地,第 i 遍处理时,不必检查第 i 高位置以上的元素,因为经过前面 i-1 遍的处理,它们已正确地排 好序。
使用寄存器 R4~R11 来保存局部变量。 寄存器 R12 用于子程序间 scratch 寄存器(用于保存 SP,在函数返回时使用该寄存
器出桟),记作 IP。 寄存器 R13 用于数据栈指针,记作 SP。寄存器 SP 在进入子程序时的值和退出子
程序时的值必须相等。 寄存器 R14 称为链接寄存器,记作 LR。它用于保存子程序的返回地址。 寄存器 R15 是程序计数器,记作 PC
实验一 ARM 汇编基础实验
Reference:《ARM 体系结构不编程》-杜春雷
一、实验目的
1. 掌握 ARM 汇编指令 2. 学习掌握 C 与汇编混合编程基础 3. 熟练使用 ARM 调试工具 RVDS 进行调试操作
二、实验内容
1.熟悉 ARM 汇编 2.用 ARM 汇编实现 1+2+...+N 3.C 调用汇编实验(实现字符串拷贝功能) 4.汇编调用 C 实验 5.ARM 汇编实现冒泡算法(选做)
R3、R12 及 R14 用于子程序调用,因此要避免直接使用这些物理寄存器 d) 一般不要直接指定物理寄存器,而让编译器进行分配 内嵌汇编使用的标记是 __asm 或者 asm 关键字,用法如下:
__asm
{
instruction [; instruction]

[instruction]
} asm(“instruction [; instruction]”); 下面通过一个例子来说明如何在 C 中内嵌汇编语言,
mul r3, r1, r2 /*寄存器 R1 中的值和 R2 中的值相乘后传入寄存器 R3 中*/ str r3, [r0] /*将寄存器 R3 中的值存储(覆盖旧值)到地址为 R0 的数据区域*/ mov pc, lr /*子程序调用完毕,返回*/ END 3) 在 C 中调用汇编的函数 在 C 中调用汇编文件中的函数,要做的主要工作有两个,一是在 C 中声明函数原型, 并加 extern 关键字;二是在汇编中用 EXPORT 导出函数名,并用该函数名作为汇编代码段 的标识,最后用 mov pc,lr 返回。然后,就可以在 C 中使用该函数了。从 C 的角度,并不 知道该函数的实现是用 C 还是汇编。更深的原因是因为 C 的函数名起到表明函数代码起始 地址的作用,这个和汇编的 label 是一致的。 /* cfile.c * in C,call an asm function, asm_strcpy */ #include <stdio.h>
#include <stdio.h> void my_strcpy(const char *src, char *dest) /*自定义的字符串拷贝函数*/
{ char ch; __asm
/*ch 实际用来做中间(缓冲/临时)变量*/oop: ldrb ch, [src], #1
集紧密相连的,作为涉及底层的嵌入式系统开发,熟练对应汇编语言的使用也是必须的。 单纯的 C 或者汇编编程请参考相关的书籍或者手册,这里主要讨论 C 和汇编的混合编程, 包括相互之间的函数调用。下面分四种情况来进行讨论。 1) 在 C 语言中内嵌汇编
在 C 中内嵌的汇编指令包含大部分的 ARM 和 Thumb 指令,不过其使用与汇编文件中 的指令有些不同,存在一些限制,主要有下面几个方面: a) 不能直接向 PC 寄存器赋值,程序跳转要使用用 B 或者 BL 指令 b) 在使用物理寄存器时,不要使用过于复杂的 C 表达式,避免物理寄存器冲突 c) R12 和 R13 可能被编译器用来存放中间编译结果,计算表达式值时可能将 R0 到
extern void asm_strcpy(const char *src, char *dest); /*函数原型,字符串拷贝函数*/ int main() {
const char *s = "seasons in the sun"; / *源字符串*/ char d[32]; /*目的字符串*/ asm_strcpy(s, d); /*传递的是地址*/ /*和内嵌汇编有所丌同,这里是调用汇编文件中定义的函数*/ printf("source: %s", s); printf(" destination: %s",d); return 0; }
相关文档
最新文档