微机原理上机实验
主要内容 实验安排与要求 实验基本知识 汇编语言结构及上机过程 DEBUG调试工具 实验设备 具体实验
一、实验安排与要求 微机原理实验 实验要求 汇编语言实验 接口实验 实验前准备,预习报告 认真实验,原始记录纸 实验报告,用纸、书写、报告 实验内容考核
二、实验基本知识 汇编语言结构及上机过程 DEBUG调试工具 QTH-2008PC集成开发环境
汇编程序的上机过程 汇编程序 上机过程
1、汇编程序 汇编程序的主要功能是将由汇编语言(助记符)编写的源程序翻译成用机器语言(二进制代码)编写的目标程序。
汇编程序 汇编程序的功能: ASM:小汇编程序,可在64KB的内存中执行,不支持宏指令,只能有限制的使用伪指令 MASM:宏汇编程序,必须在96KB以上的内存条件下运行,可以使用所有的宏指令和伪指令 汇编程序的功能: 检查和编制源程序 把初始已经分配地址的目标程序重新分配为其它的地址 检查源程序的错误 产生源程序语句列表和每个源程序汇编后的目标程序
注: 汇编过程中,不运行用户编写的程序,只是翻译成机器语言 宏汇编程序在DOS下运行
MASM中的主要文件类型 汇编源程序(.ASM) 目标代码文件(.OBJ) 列表文件(.LST) 交叉索引文件(.CRF)
汇编语言上机步骤 汇编语言的程序一般要经过以下步骤 编辑 汇编(MASM或ASM) 连接(LINK) 调试(DE-BUG)
1)编辑源程序 源程序需要用文本编辑器进行编写,在DOS下,可以使用PE、EDIT或WORDSTAR进行编写;Windows下,可以使用记事本或其他文本编辑器编写。 源程序保存的扩展名为:.ASM 2)汇编(MASM或ASM)源程序 (1) 提问方式 (2) 命令方式 以命令方式启动汇编程序时,须在DOS下打入下列格式命令: MASM(或ASM)〈源文件〉,[〈目标文件〉],[〈列表文件〉],[〈交叉参考文件〉][/开关]
3)程序连接 连接程序LINK用来连接汇编程序生成的目标代码文件(.OBJ)以及指定的库文件,产生一个可执行的装入文件(.EXE)。 连接程序有3种启动方式: (1) 提问方式 (2) 命令方式 以命令方式启动连接程序时,必须在DOS下输入如下格式命令: LINK〈目标代码模块表〉,[〈装入模块名〉],[〈列表文件名〉],[〈库文件名表〉][/开关]
MAP文件 (3) 文件方式 以文件方式启动LINK的命令格式为: LINK@〈文件名〉
4)执行程序 5)调试程序 A:>ABCD(扩展名EXE可默认) 调试程序DEBUG是专为宏汇编语言设计的一种调试手段,是我们必须掌握的一种调试工具。 在操作系统提示符下,按如下格式键入命令: A:>DEBUG[驱动器名:][路径][文件名[扩展名]]
调试工具Debug
DEBUG 在DEBUG程序中,为我们提供了18条子命令。 可以对程序进行汇编和反汇编; 可以观察和修改内存及寄存器的内容; 可以执行或跟踪程序,并观察每一步执行的结果; 可以读/写盘上的扇区或文件 几个主要的DEBUG命令 DEBUG
DEBUG 汇编命令A 格式:A [段寄存器名]:[偏移地址] A [段地址]:[偏移地址] A [偏移地址] A 功能 用该命令可以将汇编便语言程序直接汇编进入内存 DEBUG
DEBUG 显示内存明令D 功能: 格式: D [地址] D [地址范围] D 显示指定内存范围的内容,显示的内容为两种形式,一种为16进制内容,一种为与16进制相对应的ASCII码字符,对不可见的字符以”.”代替 对于第1、3种格式,每次显示128个字节内容,第二种格式显示的字节数由地址范围来决定 一般以前如果没有使用过D命令,则从CS:100处开始显示 DEBUG
DEBUG 功能: 修改存储单元内容命令E 格式:1) E [地址][内容表] 2) E [地址] 1)用命令所给定的内容表区替代指定地址范围的内存单元内容 2)一个单元一个单元的连续修改单元内容 其中,内容表为一个16进制数或一串16进制数,也可以是用单引号括起的一串字符。 DEBUG
DEBUG 比较命令C 格式: C [源地址范围],[目标地址范围] 从源地址范围起始的地址单元开始逐个与目标起始地址往后的单元顺序比较每个单元的内容,比较到源终止地址为止。比较结果如果一致则不显示任何信息,否则,以[源地址][源内容][目的内容][目的地址]的形式显示失配单元的地址和内容 DEBUG
DEBUG 功能: 检查和修改寄存器内容命令R 格式: 1) R 2) R [寄存器名] 1)显示CPU内部所有寄存器的内容和所有标志为的 状态。 2)显示和修改指定寄存器的内容和标志位的状态 DEBUG
DEBUG 追踪与显示命令T 功能: 格式:1) T [=地址]或T[地址] 2) T [=地址][条数] 或T [地址][条数] 1)执行一条指定地址处的指令,停下来,显示CPU所有寄存器内容和全部标志位的状态,以及下一条指令的地址和内容 2)为多条跟踪命令,从指定地址开始;若命令中用[地址]给定了起始地址,则从起始地址开始,若未给定,则从当前指令地址(CS:IP)开始,执行命令中的[条数]决定一共跟踪几条指令后返回DEBUG状态 DEBUG
DEBUG 运行命令G 命名命令N 写盘命令W 格式: G [=地址][地址[地址…]] 功能 执行用户正在调试的程序,其中,地址为执行的起始地址,以CS的内容作为段地址,以等号后面的地址为偏移地址。后面的地址为断点地址。 命名命令N 格式:N 文件名 在调用DEBUG时,如果没有文件名,需要用N命令将编译的的文件名格式化到CS:5CH的文件控制块中 写盘命令W 格式: W [地址]或W DEBUG
QTH-2008PC集成开发环境
开发环境界面 QTH-2008PC
三、实验设备
实验箱结构 嵌入式PC104主板GX1-300 586CPU、128M内存、256M DOM电子盘 显示器 键盘、鼠标 总线地址译码、总线引线扩展底板 8255实验模块 8254实验模块 LED、开关模块 小键盘、7段数码管模块 LCD模块 A/D、D/A模块 步进电机、直流电机模块 语音模块 其他可插拔的模块:开关量I/O模块、12位A/D,D/A模块、CPLD模块等 网口、USB接口、串并口等 实验箱结构
实验箱结构
实验箱背面 连线
四、具体实验 1、调试工具debug的使用及基本指令的用法 2、 简单程序的编制及汇编过程 3、 宏汇编程序的基本语法及程序编制 2、 简单程序的编制及汇编过程 3、 宏汇编程序的基本语法及程序编制 4、 系统功能调用 5、中断处理程序的编制 6、微机简单I/O接口的操作 7、可编程并行接口芯片8255A的使用 8、可编程计数/定时器8253的使用 9、可编程中断控制器8259A的操作 10、综合实验
实验1 调试工具debug的使用及基本指令的用法 一、实验目的: 1、学习DEBUG常用命令的使用 2、了解程序运行的过程 3、熟悉所学指令的功能,给定指令,记录指令执行后的状态 4、了解上述各类指令对标志寄存器的影响 二、实验设备: QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。
DEBUG 三、实验内容: 1)debug的使用 分别用DEBUG程序的命令实现对PC机RAM单元、CPU寄存器等的内容修改,程序的输入,反汇编,及简单程序的跟踪运行; 输入所学的常用指令,并观察指令的执行情况。 1)debug的使用 debug的进入和退出: 2、观察及修改CPU内部的各寄存器 -r 观察各寄存器的内容 3、观察和修改内存单元的内容 DEBUG -d 2000 查看从地址DS:2000H开始的128个单元的内容
5、输入程序 -a 100 ;从CS:100H处开始输入程序 ;(这是默认的程序开始的地址) 6、单步执行程序 -t=100 ;执行CS:100H处的一条指令, ;自动显示各寄存器内容及下一条指令 7、反汇编程序 -u 100 ;从CS:100H处开始反汇编 8、执行一段程序 -g=100 106 ; 从CS:100H开始,执行到CS:106处停止
2)基本指令的用法 在debug中输入各条基本指令并执行,观察指令的执行情况。
四、实验问题探讨 如何利用Debug去观察中断向量表? 机器复位后执行的第一条指令在哪儿?是什么指令? 在debug中输入16进制数时,需要键入H吗? 从当前位置开始执行指令到CS:0212H处,在Debug中应该使用什么命令?
QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。 实验2 简单程序的编制及汇编过程 一、实验目的: 掌握masm、link的基本用法 编制基本的宏汇编程序 3、能编制基本的宏汇编程序,能实现分支结构、循环结构的程序编制。 4、熟悉汇编集成开发环境QTH。(可选) 二、实验设备: QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。
三、实验内容 1、宏汇编 程序基本 结构 STA SEGMENT STACK ;定义堆栈段为200个字节 S1 DW 100 DUP(?) STA ENDS DATA SEGMENT ;定义数据段 i DB 12H j DB 34H s DB ? DATA ENDS CODE SEGMENT ;定义代码段 ASSUME CS:CODE,SS:STA,DS:DATA ORG 100H ;从CS:100H处开始输入程序 START PROC FAR PUSH DS XOR AX,AX PUSH AX ;这三条指令为返回DOS做准备 MOV AX,DATA ;给DS赋初值 MOV DS,AX . ;从这儿开始输入你的程序 . RET CODE ENDS END START 1、宏汇编 程序基本 结构
四、实验步骤: 1、使用EDIT或WINDOWS下的记事本或写字板输入你的程序并保存到c:\masm目录下,命名为t.asm(后缀必须是asm). 2、汇编过程: c:\masm>masm t; 如果没有错误,将生成t.obj文件 3、连接过程: c:\masm>link t; 如果没有连接错误,将生成t.exe文件 4、执行或调试程序 c:\masm>t 执行该程序 c:\masm>debug t.exe 将该程序装入debug进行调试。 5、利用汇编语言集成开发环境QTH建立项目文件,并将汇编语言程序模块文件加入项目,进行编译、连接及调试。(可选)
五、实验问题探讨 为什么程序的起始位置一般放在CS:0100H位置,而不是从CS:0000H处开始? 程序的前三条指令如果去掉,当程序执行完退出时会出现什么现象?为什么?
实验3 宏汇编程序的基本语法及程序编制 二、实验设备: 一、实验目的: 1、熟悉各条宏指令的作用 2、掌握运算类程序设计的基本方法 实验3 宏汇编程序的基本语法及程序编制 一、实验目的: 1、熟悉各条宏指令的作用 2、掌握运算类程序设计的基本方法 二、实验设备: QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。
三、实验内容 编制包含多种数据定义伪指令的完整程序,经汇编、连接后,装入DEBUG, 观察数据的存储情况,从而掌握常用伪指令的作用。 … i DB 12H,’AB’ w DW 12H,’AB’ NUM=$-I a DD 12H ;以上数据在内存中如何存放? …… PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV AL,I ;翻译成机器指令是什么格式? MOV AX,w ;? MOV BL,NUM ;?
四、实验步骤 编制一段完整程序,实现多字节加法运算(在DEBUG内观察结果)。 方法一、非集成开发环境 使用EDIT或WINDOWS下的记事本或写字板输入你的程序并保存到c:\masm目录下,命名为t3.asm(后缀必须是asm). 汇编过程:c:\masm>masm t3; 如果没有错误,将生成t3.obj文件 连接过程:c:\masm>link t3; 如果没有连接错误,将生成t3.exe文件 调试程序:c:\masm>debug t3.exe 将该程序装入debug进行调试。
五、实验问题探讨 方法二、使用集成开发环境 建立项目文件、输入源程序、编译、连接、调试。 在debug中,为什么要执行完MOV DS,AX指令后,使用 -d 0 来观察数据段的存储单元的数据存储情况? 伪指令中的表达式是在什么阶段进行运算得出结果的? 指令MOV BYTE PTR[BX+2],NUM+2中的两个‘+’,作用有什么区别?(NUM是常数)
实验4 系统功能调用 二、实验设备: 一、实验目的: 初步学会DOS及BIOS功能调用技术 学习控制台I/O程序的设计 QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。
三、实验内容 四、实验步骤 编制一段完整程序,实现从键盘输入一个两位的十六进制数,按回车后,以二进制数形式显示出来。 提示:在debug中调试系统功能调用时,如果使用t命令进行单步执行,当遇到INT 21H时,会跟踪进入系统中断服务程序。 因此,应该使用g命令运行到INT 21H的下一条指令处。这样就不会跟踪进入系统程序而无法执行完。
五、实验问题探讨 1、如果没有系统功能调用,如何实现键盘的输入? 2、利用9号功能调用显示字符串时,如果字符串没有‘$’结束符,会出现什么现象? 3、利用2号功能调用显示单字符,如果显示的字符是二进制数7,会出现什么现象?
实验五 中断处理程序的编制 二、实验设备: 一、实验目的 掌握汇编程序的编程方法,并要求能够灵活使用。 熟悉主要的程序实现方法,通过对输入、输出、字符转换、数据统计等内容的综合编程,进一步熟悉对程序结构、汇编语言、功能调用等方面的知识。 二、实验设备: QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。
三、实验内容: 说明: 编写针对1C号中断的处理程序,实现每1秒显示一个累加的秒数。 DOS下的1C号中断是由微机内的定时器8253定时触发的,可供用户使用的中断。每秒产生18.2次中断,大约每55ms产生一次中断。 在中断处理程序中,禁止使用DOS系统功能调用,因为DOS系统功能调用是不可重入的。可以使用BIOS功能调用,因为BIOS功能调用是可重入的。当中断频繁发生,引起中断嵌套时,放在中断处理程序中的不可重入的DOS系统功能调用会引起系统崩溃。因此下面的程序中将信息显示的功能放在主程序中,而不是放在中断处理程序中。
四、实验步骤 提示:中断处理程序不适合利用debug进行跟踪调试,因为在跟踪过程中,中断仍然会不停地产生,中断处理程序会不断得到运行。 当然,利用debug设置断点的方式仍然可以让中断处理程序停止,可暂时观察中间运行结果。 五、实验问题探讨 修改中断处理程序中的常数18,增大或减小它,观察程序的运行有何变换?为什么?
实验六 微机简单I/O接口的操作 1、实验目的 2、实验设备 掌握接口操作的基本方法。 熟悉接口操作的原理和步骤。 1) QTH2008PC实验设备一套 2) 显示器、鼠标、键盘等
3、实验内容 4、实验原理 本实验利用74LS244作为输入口,接8个开关,读取开关状态; 74LS273作为输出口,接8个LED。编制简单程序实现输出端口始终等于输入端口的内容,即根据开关状态控制LED亮灭。 4、实验原理 1)74LS244和74LS273 74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。 74LS273是一种8D触发器,当CLR为高电平且CLK端电平正跳变时,D0——D7端数据被锁存到8D触发器中。
2)系统原理图
5、实验步骤
实验连线: 244的CS——PC104总线接口模块的IOY0,Y7—Y0——开关K01—K08。 273的CS——PC104总线接口模块的IOY2,Q7—Q0——发光二极管L1—L8。 该模块的WR、RD分别连到PC104总线接口模块的IOWR、IORD。 该模块的数据(AD0~AD7)连到PC104总线接口模块的数据(D0~D7)。 运行编制的程序,拨动开关,观察发光二极管的变化。
6、思考题 7、实验报告要求: 1)如果指示灯不亮,你如何排查解决此问题? 2、如果74LS244和74LS373使用同一个端口地址?能行么?为什么?实验一下。 7、实验报告要求: 1)画出接口电路原理图 2)分析电路的执行过程 3)列出程序清单和执行结果 4)回答思考题 5)对本实验的总结
实验七 可编程并行接口芯片8255A的使用 1、实验目的 2、实验设备 了解可编程并行接口芯片8255的内部结构、工作方式 熟悉8255初始化编程及应用。 2、实验设备 1) QTH2008PC 32位微机教学实验仪一套 2) 显示器、鼠标、键盘各1件
3、实验内容(以下3个实验任选一个) I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。 流水灯实验:利用8255的A口、B口循环点亮发光二极管。 交通灯实验:利用8255的A口模拟交通信号灯。
4、实验原理
5、实验步骤 1、流水灯实验: (1) 实验连线 1)该模块的WR、RD分别连到PC104总线接口模块的IOWR、IORD。 (1) 实验连线 1)该模块的WR、RD分别连到PC104总线接口模块的IOWR、IORD。 2)该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到 PC104总线接口模块的数据(D0~D7)、地址线(A0~A7)。 3)8255模块选通线CE连到PC104总线接口模块的IOY0。 4)8255的PA0~PA7连到发光二极管的L1~L8;8255的PB0~PB7连 到发光二极管的L9~L16。 (2) 编写程序,实现流水灯功能。
2、交通灯实验: (1实验连线: 1)该模块的WR、RD分别连到PC104总线接口模块的IOWR、IORD。选通线CE连到IOY0。 2)该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到PC104总线接口模块的数据(D0~D7)、地址线(A0~A7)。 3)8255的PA0-L7、PA1-L6、PA2-L5、PA3-L3、PA4-L2、PA5-L1。 编制程序。
3、I/O输入输出实验: (1) 实验连线 该模块的WR、RD分别连到PC104总线接口模块的IOWR、IORD。 该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到PC104总线接口模块的数据(D0~D7)、地址线(A0~A7)。 8255模块选通线CE连到PC104总线接口模块的IOY0。 8255的PA0~PA7接开关K0~K7,8255的PB0~PB7接发光二极管L1~L8。 (2)编制程序。
6、思考题 7、实验报告要求: 1)总结一下本实验与上次试验的不同? 2、总结8255的初始化程序编写要点。 1)画出接口电路原理图 2)分析电路的执行过程 3)列出程序清单和执行结果 4)回答思考题 5)对本实验的总结
实验八 可编程计数/定时器8253的使用 1、实验目的 2、实验设备 掌握8253定时/计数器的编程方法 学习8253的几种工作方式。 实验八 可编程计数/定时器8253的使用 1、实验目的 掌握8253定时/计数器的编程方法 学习8253的几种工作方式。 2、实验设备 PC机一台 BH-86通用微机实验装置一套 示波器一台
3、实验内容 4、实验步骤 通过对8253编程控制实现定时1s的操作,实现方波的输出并用示波器观察波形,可以将输出信号接到LED观看其亮灭。 1)电路设计 BH-86/51实验装置的B积木块提供标准时钟,选择8MHz输出端,接J积木块B端,作为分频模块J的输入,分频输出信号Q4(250KHz)作为8253通道0的输入信号,根据此信号设置计数初值,在OUT0端观察波形,或观察LED的亮灭。 2)接线方法 电路接线图如图3-35所示
3)编写程序 4)执行程序 编写源程序,汇编、连接、调试 ①打开实验装置的外接电源 ②执行程序 ③ 观察示波器波形或LED0 ①、D模块的CLK0端接J块的Q4端 ②、J模块的A端和D模块中的GATE0接+5V ③ 、J模块的B端接B模块的8MHz ④ 、D模块的CS端接F模块中的300H~307H ⑤ 、 D模块的OUT0端接LED0 3)编写程序 编写源程序,汇编、连接、调试 4)执行程序 ①打开实验装置的外接电源 ②执行程序 ③ 观察示波器波形或LED0
5、编程提示 6、实验报告 对8253编程,首先写入控制字,而后写入计数初值 计数器端口0地址为300H 计数器控制端口地址为303H 1)画出电路接线图 2)分析电路工作原理 3)画出程序流程图 4)写出程序清单和执行结果 5)画出输出波形,并分析实验过程。
实验九 可编程中断控制器8259A的操作 1、实验目的 掌握8259A中断控制器的工作原理,熟悉8259的编程方法。 学会中断处理程序的设计。 2、实验设备 PC机一台 BH-86通用微机实验装置一套
利用PC机内的8259A芯片,编制定时中断程序,在显示器上每秒钟显示一个信息。 3)实验内容 利用PC机内的8259A芯片,编制定时中断程序,在显示器上每秒钟显示一个信息。 4、实验步骤 1)电路设计 利用PC机内部的8259A产生的中断,因此不需接线。 利用PC机内部8259中断控制器的1CH号功能调用,1CH号功能调用每55ms产生一次中断,可以据此设计中断服务子程序,在中断服务子程序内部设置计数器,当发生1000/55=18次中断时,1S计时时间到,输出显示内容。
2)编写程序 3)执行程序 5、编程提示 编写源程序,汇编、连接、调试 ①打开实验装置的外接电源 ②执行程序 ③ 观察示波器波形或LED0 保存原中断向量 设置新的中断服务程序入口地址到中断向量 主程序开中断,等待中断发生 程序执行后,恢复原中断
6、实验报告 1)分析程序工作原理 2)画出程序流程图 3)写出程序清单和执行结果 4)分析实验过程
实验十 综合实验 实验目的 在掌握几种微机接口芯片的基础上,综合利用这几个芯片,完成一定的功能。 实验内容 实验十 综合实验 实验目的 在掌握几种微机接口芯片的基础上,综合利用这几个芯片,完成一定的功能。 实验内容 学生自拟(如通过实验板,实现流水灯的功能,其中定时采用8253,中断操作9259A)