720 likes | 920 Views
微机原理上机实验. 主要内容. 实验安排与要求. 实验基本知识. 汇编语言结构及上机过程. DEBUG 调试工具. 实验设备. 具体实验. 一、实验安排与要求. 微机原理实验. 汇编语言实验. 接口实验. 实验要求. 实验前准备,预习报告. 认真实验,原始记录纸. 实验报告,用纸、书写、报告. 实验内容考核. 二、实验基本知识. 汇编语言结构及上机过程. DEBUG 调试工具. QTH-2008PC 集成开发环境. 汇编程序的上机过程. 汇编程序 上机过程. 1 、汇编程序.
E N D
主要内容 • 实验安排与要求 • 实验基本知识 • 汇编语言结构及上机过程 • 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〈目标代码模块表〉,[〈装入模块名〉],[〈列表文件名〉],[〈库文件名表〉][/开关]
(3) 文件方式 以文件方式启动LINK的命令格式为: LINK@〈文件名〉 • MAP文件 • 内存映象文件(.MAP)可以在LINK 的时侯产生,它实际上是连接程序的列表文件,给出了每个段的地址分配情况和和长度。
4)执行程序 • A:>ABCD(扩展名EXE可默认) 5)调试程序 • 调试程序DEBUG是专为宏汇编语言设计的一种调试手段,是我们必须掌握的一种调试工具。 • 在操作系统提示符下,按如下格式键入命令: A:>DEBUG[驱动器名:][路径][文件名[扩展名]]
在DEBUG程序中,为我们提供了18条子命令。 • 可以对程序进行汇编和反汇编; • 可以观察和修改内存及寄存器的内容; • 可以执行或跟踪程序,并观察每一步执行的结果; • 可以读/写盘上的扇区或文件 • 几个主要的DEBUG命令 DEBUG
汇编命令A • 格式:A [段寄存器名]:[偏移地址] A [段地址]:[偏移地址] A [偏移地址] A • 功能 用该命令可以将汇编便语言程序直接汇编进入内存 DEBUG
显示内存明令D • 格式: D [地址] D [地址范围] D 功能: • 显示指定内存范围的内容,显示的内容为两种形式,一种为16进制内容,一种为与16进制相对应的ASCII码字符,对不可见的字符以”.”代替 • 对于第1、3种格式,每次显示128个字节内容,第二种格式显示的字节数由地址范围来决定 • 一般以前如果没有使用过D命令,则从CS:100处开始显示 DEBUG
修改存储单元内容命令E • 格式:1) E [地址][内容表] 2) E [地址] 功能: • 1)用命令所给定的内容表区替代指定地址范围的内存单元内容 • 2)一个单元一个单元的连续修改单元内容 其中,内容表为一个16进制数或一串16进制数,也可以是用单引号括起的一串字符。 DEBUG
比较命令C • 格式: C [源地址范围],[目标地址范围] • 从源地址范围起始的地址单元开始逐个与目标起始地址往后的单元顺序比较每个单元的内容,比较到源终止地址为止。比较结果如果一致则不显示任何信息,否则,以[源地址][源内容][目的内容][目的地址]的形式显示失配单元的地址和内容 DEBUG
检查和修改寄存器内容命令R • 格式: 1) R 2) R [寄存器名] 功能: 1)显示CPU内部所有寄存器的内容和所有标志为的 状态。 2)显示和修改指定寄存器的内容和标志位的状态 DEBUG
追踪与显示命令T • 格式:1) T [=地址]或T[地址] 2) T [=地址][条数] 或T [地址][条数] 功能: 1)执行一条指定地址处的指令,停下来,显示CPU所有寄存器内容和全部标志位的状态,以及下一条指令的地址和内容 2)为多条跟踪命令,从指定地址开始;若命令中用[地址]给定了起始地址,则从起始地址开始,若未给定,则从当前指令地址(CS:IP)开始,执行命令中的[条数]决定一共跟踪几条指令后返回DEBUG状态 DEBUG
运行命令G • 格式: G [=地址][地址[地址…]] • 功能 执行用户正在调试的程序,其中,地址为执行的起始地址,以CS的内容作为段地址,以等号后面的地址为偏移地址。后面的地址为断点地址。 • 命名命令N • 格式:N 文件名 • 在调用DEBUG时,如果没有文件名,需要用N命令将编译的的文件名格式化到CS:5CH的文件控制块中 • 写盘命令W • 格式: W [地址]或W DEBUG
开发环境界面 QTH-2008PC
键盘、鼠标 显示器 网口、USB接口、串并口等 嵌入式PC104主板GX1-300 586CPU、128M内存、256M DOM电子盘 步进电机、直流电机模块 语音模块 总线地址译码、总线引线扩展底板 LCD模块 A/D、D/A模块 8255实验模块 8254实验模块 LED、开关模块 小键盘、7段数码管模块 其他可插拔的模块:开关量I/O模块、12位A/D,D/A模块、CPLD模块等 实验箱结构
实验箱背面 连线
四、具体实验 1、调试工具debug的使用及基本指令的用法 2、 简单程序的编制及汇编过程 3、 宏汇编程序的基本语法及程序编制 4、 系统功能调用 5、中断处理程序的编制 6、微机简单I/O接口的操作 7、可编程并行接口芯片8255A的使用 8、可编程计数/定时器8253的使用 9、可编程中断控制器8259A的操作 10、综合实验
实验1调试工具debug的使用及基本指令的用法 一、实验目的: 1、学习DEBUG常用命令的使用 2、了解程序运行的过程 3、熟悉所学指令的功能,给定指令,记录指令执行后的状态 4、了解上述各类指令对标志寄存器的影响 二、实验设备: QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。
三、实验内容: • 分别用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中应该使用什么命令?
实验2 简单程序的编制及汇编过程 一、实验目的: • 掌握masm、link的基本用法 • 编制基本的宏汇编程序 3、能编制基本的宏汇编程序,能实现分支结构、循环结构的程序编制。 4、熟悉汇编集成开发环境QTH。(可选) 二、实验设备: QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。
三、实验内容 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、掌握运算类程序设计的基本方法 二、实验设备: 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内观察结果)。编制一段完整程序,实现多字节加法运算(在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) 显示器、鼠标、键盘等