当前位置:文档之家› 微机原理实验指导书

微机原理实验指导书

微机原理实验指导书
微机原理实验指导书

微机原理及应用实验

指导书

武汉工程大学邮电与信息工程学院

自动化教研室

实验一汇编软件使用与基本编程实验

一、实验目的

1. 熟悉8086汇编语言程序设计的实验环境。

2. 掌握汇编语言程序设计的上机步骤,初步学会利用Turbo Debugger 调试工具来调试汇编语言程序。

二、实验环境

汇编语言程序设计的实验环境如下:

1. 硬件环境

微型计算机(Intel x86 系列CPU)1台。

2. 软件环境

·Windows XP操作系统。

·任意一种文本编辑器,如EDIT、NOTEPAD(记事本)等。

·汇编程序,如MASM.EXE或TASM.EXE。

·连接程序,如LINK.EXE或TLINK.EXE。

·调试程序,如DEBUG.EXE或TD.EXE。

本实验指导中,文本编辑器使用NOTEPAD(记事本),汇编程序使用MASM.EXE,连接程序使用LINK.EXE,调试程序使用TD.EXE。

三、上机步骤

1.建立汇编语言程序设计的实验环境

(1)通过WindowsXP的资源管理器找到D盘的根目录,在D盘的根目录窗口中点击鼠标右键,在弹出的菜单中选择“新建” “文件夹”选项,新建一个文件夹,并把新建的文件夹命名为ASM。该目录就为以后源程序的存放目录。

(2)把MASM.EXE、LINK.EXE、TD.EXE都拷贝到新建的ASM目录中。

2.建立ASM源程序

在WindowsXP 桌面的“开始”菜单中选择“程序” →“附件”→“记事本”选项,屏幕上出现记事本的编辑窗口。在编辑窗口输入源程序代码。在输入、编辑源程序的过程中,可充分利用记事本的“编辑(E )”菜单中“剪切” 、“复制” 、“粘贴”和“撤消”等功能。源程序输入完毕后,选择记事本的“文件(F )”菜单,用其中的“保存(S )”功能将文件存盘。这时会弹出一个“另存为”窗口,在这个窗口中将保存源程序的路径选择

为前面建立的D:\ASM 目录,“保存类型(T )”选择为“所有文件(*.*)”,文件名为HELLO.ASM (本例为D:\ASM\HELLO.ASM ),如图11-1所示。

3.用MASM.EXE 汇编源程序产生目标文件

源文件HELLO.ASM 建立后,要使用汇编程序对源程序文件汇编,汇编后产生二进制的目标文件(.OBJ 文件)。在WindowsXP 桌面上的“开始”菜单中选择“程序”→“附件”→ “命令提示符”选项,打开“命令提示符”窗口。输入“D:”并回车,进入D 盘的根目录,接着输入“CD\ASM ”进入前面新建的ASM 目录。

输入“MASM HELLO.ASM ”并回车,MASM 程序会提示让你输入目标文件名(Object Filename),并在方括号中显示默认的目标文件名[HELLO.OBJ]。此时可按ENTER 键确认目标文件名为默认的目标文件名HELLO.OBJ,也可重新输入新的目标文件名(建议输入目标文件的完整路径名,如:D:\ASM\HELLO.OBJ)。后面的两个提示为可选项,可直接按ENTER 键跳过,也可输入汇编时产生的列表文件名(如HELLO.LST )和交叉文件名(HELLO.CRF)。注意,若打开MASM 程序时未给出源程序名,则MASM 程序会首先提示让你输入源程序文件名(Source Filename ),此时输入源程序文件名HELLO.ASM 并回车,然后进行的操作与上面完全相同操作时的屏幕显示如图11-2所示。

如果源程序有错误,汇编程序MASM 会指出错误所在的行号和错误的原因。源程序的错误类型有两种类型:

(1)警告错误(Warning Errors )。警告不影响程序的运行,但可能会得出错误的结果。

(2)严重错误(Severe Errors)。出现错误,MASM 将无法生成OBJ 文件。

在错误信息中,圆括号里的数字为有错误所在的行号,后面给出了错误类型及具体错误原因。如果汇编时产生很多的错误,以至于出现滚屏,不易查看汇编程序指出的错误信息,此时需要用记事本打开(“文件类型(T )”选择为“所有文件(*.*)”)汇编时产生的列表文件HELLO.LST 来查看。注意,汇编程序只能指出程序的语法错误,而无法指出程序逻辑的错误。

图11-1 记事本的文件“另存为”窗口

修改源程序中的错误并保存文件,然后重新对源程序进行汇编。如果汇编时没有错误,MASM 就会在当前目录下建立一个HELLO.OBJ 文件(名字与源文件名相同,只是扩展名不同)。

4.用LINK.EXE 产生EXE 可执行文件

在上一步骤中,汇编程序产生的是二进制目标文件(OBJ 文件),它是不可执行的。要想使我们编写的程序能够运行,还必须用连接程序(LINK.EXE )把OBJ 文件连接为可执行的EXE 文件。在“D:\ASM>”命令提示符下输入“LINK HELLO.OBJ ”并回车,进入LINK 程序后,连接程序会提示让你输入可执行文件名(Run File),并在方括号中显示默认的可执行文件名[HELLO.EXE]。此时可按ENTER 键确认可执行文件名为默认的可执行文件名HELLO.EXE ,也可重新输入新的可执行文件名(建议输入可执行文件的完整路径名,如:D:\ASM\HELLO.EXE)。后面的三项提示为可选项,可直接按ENTER 键跳过;对于本例,只需输入定位图文件名HELLO.MAP 即可。注意,若打开LINK 程序时未给出目标程序名,则LINK 程序会首先提示让你输入目标程序名(Object Moodules ),此时输入目标程序名HELLO.OBJ 并回车,然后进行的操作与上面完全相同。

如果没有错误,LINK 就会建立一个HELLO.EXE 文件。如果OBJ 文件有错误,LINK 会指出错误的原因。本例中,对于无堆栈警告(warning :no stack segment)信息,可以不予理睬,它不影响程序的执行。当然,也可以在本例的程序中加入一个堆栈段,来消除这一警告错误信息,读者不妨试试。操作时的屏幕显示如图11-3所示。

对于LINK 同时建立的HELLO.MAP 文件,为包含程序连接的信息以及各段的地址信息,可同样用记事本打开查看。

图11-2

汇编源程序操作时的屏幕显示

5.执行程序

生成了HELLO.EXE 文件后,就可以直接在命令提示符下运行此程序。在“D:\ASM>”命令提示符下输入“HELLO ”并回车。本例程序的功能是在屏幕上输出显示20个空格和“HELLO!”字符并且回车、换行,自动返回DOS 。如果源程序没有功能性错误,正确的结果会显示在屏幕上。

如果程序不显示结果,我们如何发现程序的功能性问题呢?这时,我们就要使用TD.EXE 调试工具来查看运行结果。实际上,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时需要使用TD.EXE 。

6.学习使用TD.EXE

在“D:\ASM>”命令提示符下键入“TD HELLO.EXE ”并回车。TD 启动后,呈现的是一个具有窗口形式的用户界面,如图11-4所示。窗口分为代码区、数据区、寄存器区、堆栈区和标志位区。在5个区域中,光标所在的区域称为当前区域。用户可以使用Tab 键或Shift+Tab 键切换当前区域,也可以在相应的区域中单击鼠标左键选中某区为当前区。在代码区和堆栈区分别显示一个称为箭头的特殊标志,代码区中的箭头标志指示出当前程序指令的位置(CS:IP),堆栈区中的箭头标志指示出当前堆栈指针位置(SS:SP) 。然后,按以下步骤操作:

(1)查看代码区汇编指令,与HELLO.ASM 源程序比较,看看源程序中那些语句有机器码,那些语句没有机器码。记录源程序中的SEG DA TA 、OFFSET ONE 、COUNT 、NEXT 在HELLO.EXE 中的具体值并加以说明。

(2)按F8键(单步运行)两次,查看并记录寄存器区AX 和DS 的变化。

(3)按Tab 键切换当前区域,直至当前区域为数据区(也可以在相应的区域中单击鼠标左键选中某区为当前区)。然后按Alt+F10组合键激活数据区局部菜单(也可以在相应的区域中单击鼠标右键激活该区局部菜单),选中Goto 命令,输入DS:0000H 并回车,观看数据区内容的变化,并留意数据区右边ASCII 码字符区的内容,与HELLO.ASM 源程序中ONE DB 20 DUP(32), 'HELLO!',7,13,10 语句对比。

图11-3

连接目标程序操作时的屏幕显示

根据观察结果画出本例程序的数据段,标注起始地址、段末地址,以及存储单元的内容。并记录下此时所有寄存器的内容。

(4)继续按F8键,观看寄存器区、标志位区和堆栈区的变化,并注意代码区箭头标志位置的变化。直至代码区箭头标志的位置移至 MOV AH,4CH 语句时,停止按F8键。

记录下此时所有寄存器的内容,与前面记录的寄存器内容比较并分析发生的变化。

(5)代码区箭头标志位置移至 MOV AH,4CH 语句时,按ALT+F5键查看被调试程序的显示输出。

(6)按ALT+F5键切换到TD 用户界面,用FILE 菜单OPEN 项重新载入可执行文件HELLO.EXE ,重复上面⑴~⑶步骤。在第⑶步时,选中Goto 命令,输入DS:0000H 并回车,然后使用方向键把光标移到0014H 地址单元处(注意数据区的光标是一个下划线),将0014H~001FH 地址单元的内容改为01H 、57H 、45H 、4CH 、43H 、4FH 、4DH 、45H 、20H 、59H 、4FH 、55H ,继续⑷和⑸步骤,查看被调试程序的显示输出。分析程序显示输出的结果。

有关更多的如何使用TD.EXE ,请参阅课外读物“TD 使用说明”部分。

四、实验程序:

代码区 数据区 寄存器区 堆栈区 标志位区

图11-4 TD

的具有窗口形式的用户界面

实验二 BCD码运算的程序设计

一、实验目的

1.掌握汇编语言程序结构中数据段、堆栈段、代码段的定义方法及内存分配。

2.学会DEBUG调试程序主要命令的使用方法。

3.掌握用组合BCD码表示数据的方法,并熟悉其加、减、乘、除运算。

二、实验条件

汇编语言程序设计的实验环境如下:

1. 硬件环境

微型计算机(Intel x86 系列CPU)1台。

2. 软件环境

·Windows XP操作系统。

·任意一种文本编辑器,如EDIT、NOTEPAD(记事本)等。

·汇编程序,如MASM.EXE或TASM.EXE。

·连接程序,如LINK.EXE或TLINK.EXE。

·调试程序,如DEBUG.EXE或TD.EXE。

本实验指导中,文本编辑器使用NOTEPAD(记事本),汇编程序使用MASM.EXE,连接程序使用LINK.EXE,调试程序使用TD.EXE。

三、实验内容

8位十进制数加法:在内存中以DATA1和DATA2为首址,各分配5个字节单元,分别存入两个8位组合BCD码数据(低位在前),将两数相加,结果送回到DATA2处。

用DEBUG调试程序、查看运算结果,进行手工验证;并且用DEBUG修改数据,重新执行。

四、上机步骤

1.建立汇编语言程序设计的实验环境

在D盘新建一个文件夹,并把新建的文件夹命名为ASM。把MASM.EXE、LINK.EXE、TD.EXE文件都拷贝到新建的ASM目录中。

2.建立汇编源程序

打开记事本。在编辑窗口输入源程序代码。

编程提示:

(1)用DB等伪指令建立数据段,数据段应包含两个8位组合BCD码数据(十进制数据)DATA1和DATA2, 低位在前,如8位十进制数12345678,其8位组合BCD

码(低位在前)应为:78H,56H,34H,12H;

(2)编写程序代码时,整个程序应是一个循环结构,循环次数为5。前4次循环将两数相加(每次加两位),最后一次循环将进位加进来。

源程序输入完毕后,选择记事本的“文件(F)”菜单,“保存(S)”文件,注意将保存源程序的路径选择为前面建立的D:\ASM目录,“保存类型(T)”选择为“所有文件(*.*)”,文件名为“HELLO”,扩展名为.ASM。

3.用MASM.EXE汇编源程序产生目标文件

在WindowsXP桌面上的“开始”菜单中选择“程序”→“附件”→“命令提示符”选项,打开“命令提示符”窗口。输入“D:”并回车,进入D盘的根目录,接着输入“CD\ASM”进入前面新建的ASM目录。

输入“MASM HELLO.ASM”并回车。如果源程序有错误,汇编程序MASM会指出错误所在的行号和错误的原因。在错误信息中,圆括号里的数字为有错误所在的行号。修改源程序中的错误并保存文件,然后重新对源程序进行汇编。如果汇编时没有错误,MASM就会在当前目录下建立一个“HELLO.OBJ”文件(名字与源程序文件名相同,只是扩展名不同)。

4.用LINK.EXE产生EXE可执行文件

在“D:\ASM>”命令提示符下输入“LINK HELLO.OBJ”并回车。如果没有错误,LINK 就会建立一个EXE文件。对于无堆栈警告(warning:no stack segment)信息,可以不予理睬,它不影响程序的执行。

5.执行程序

生成了EXE文件后,就可以直接在命令提示符下运行此程序。在“D:\ASM>”命令提示符下直接输入“HELLO”并回车。

这时我们就要使用TD.EXE调试工具来查看运行结果。实际上,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时需要使用TD.EXE。

使用计算器验证程序运行结果是否正确。

五、实验报告要求

1.实验内容、实验要求;

2.画出程序流程框图;

3.给出程序清单与注释;

4.给出计算结果,写出数据及其段地址和偏移地址;

实验三循环结构程序设计

一、实验目的

1.熟悉循环指令系统,并熟悉其加、减、乘、除运算

2.掌握DEBUG调试程序主要命令的使用方法

3.掌握循环结构程序的设计、调试。

二、实验条件

汇编语言程序设计的实验环境如下:

1. 硬件环境

微型计算机(Intel x86 系列CPU)1台。

2. 软件环境

·Windows XP操作系统。

·任意一种文本编辑器,如EDIT、NOTEPAD(记事本)等。

·汇编程序,如MASM.EXE或TASM.EXE。

·连接程序,如LINK.EXE或TLINK.EXE。

·调试程序,如DEBUG.EXE或TD.EXE。

本实验指导中,文本编辑器使用NOTEPAD(记事本),汇编程序使用MASM.EXE,连接程序使用LINK.EXE,调试程序使用TD.EXE。

三、实验内容

多字节无符号加法:在DATAS中存放10个双字节无符号数,用循环结构设计程序,通过程序运算,把这10个双字节无符号数相加,其和存入紧邻加数之后的四个单元中。

用TDEBUG调试程序预置数据并查看运算结果。

四、上机步骤

1.建立汇编语言程序设计的实验环境

在D盘新建一个文件夹,并把新建的文件夹命名为ASM。把MASM.EXE、LINK.EXE、TD.EXE文件都拷贝到新建的ASM目录中。

2.建立汇编源程序

打开记事本。在编辑窗口输入源程序代码。

编程提示:

(3)用DW等伪指令建立数据段,数据段应包含两项内容:一是任意输入的10个双字节无符号数,二是存入加数和的四个单元的双字变量;

(4)编写程序代码时,整个程序应是一个循环结构,循环次数为10。

源程序输入完毕后,选择记事本的“文件(F)”菜单,“保存(S)”文件,注意将保存源程序的路径选择为前面建立的D:\ASM目录,“保存类型(T)”选择为“所有文件

(*.*)”,文件名为“HELLO”,扩展名为.ASM。

3.用MASM.EXE汇编源程序产生目标文件

在WindowsXP桌面上的“开始”菜单中选择“程序”→“附件”→“命令提示符”选项,打开“命令提示符”窗口。输入“D:”并回车,进入D盘的根目录,接着输入“CD\ASM”进入前面新建的ASM目录。

输入“MASM HELLO.ASM”并回车。如果源程序有错误,汇编程序MASM会指出错误所在的行号和错误的原因。在错误信息中,圆括号里的数字为有错误所在的行号。修改源程序中的错误并保存文件,然后重新对源程序进行汇编。如果汇编时没有错误,MASM就会在当前目录下建立一个“HELLO.OBJ”文件(名字与源程序文件名相同,只是扩展名不同)。

4.用LINK.EXE产生EXE可执行文件

在“D:\ASM>”命令提示符下输入“LINK HELLO.OBJ”并回车。如果没有错误,LINK 就会建立一个EXE文件。对于无堆栈警告(warning:no stack segment)信息,可以不予理睬,它不影响程序的执行。

5.执行程序

生成了EXE文件后,就可以直接在命令提示符下运行此程序。在“D:\ASM>”命令提示符下直接输入“HELLO”并回车。

这时我们就要使用TD.EXE调试工具来查看运行结果。实际上,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时需要使用TD.EXE。

使用计算器验证程序运行结果是否正确。

五、实验报告要求

2.实验内容、实验要求;

3.画出程序流程框图;

4.给出程序清单;

5.给出程序运行结果。

六、实验程序:

实验四分支结构程序设计

一、实验目的

1. 熟悉控制转移指令系统,并熟悉其加、减、乘、除运算指令。

2. 掌握分支程序编程方法,复杂分支程序的查表法等。

二、实验条件

汇编语言程序设计的实验环境如下:

1. 硬件环境

微型计算机(Intel x86 系列CPU)1台。

2. 软件环境

·Windows XP操作系统。

·任意一种文本编辑器,如EDIT、NOTEPAD(记事本)等。

·汇编程序,如MASM.EXE或TASM.EXE。

·连接程序,如LINK.EXE或TLINK.EXE。

·调试程序,如DEBUG.EXE或TD.EXE。

本实验指导中,文本编辑器使用NOTEPAD(记事本),汇编程序使用MASM.EXE,连接程序使用LINK.EXE,调试程序使用TD.EXE。

三、实验内容

学生课程成绩分段统计:用单字节表示每个学生的学号,学生的课程成绩用两位十进制数表示(最低0分,最高99分),规定0F0H表示作弊,0F1H表示缺考,0FFH为一组学生成绩的结束符。学生成绩在内存的存放形式为“学号,成绩”,每个学生占两个字节,从内存SCORE 为首址开始存放。要求学生人数不少于10个,试编程序,按0 ~ 9、10 ~ 19、20 ~ 29、……、80 ~ 89、90 ~ 99及作弊、缺考等12种情况把学生的课程成绩进行分段统计,将统计结果存入以COUNT为首址的12个单元中。

用TDEBUG调试程序预置数据和查看程序运行结果,以验证程序正确性。或将统计的结果显示在屏幕上。

四、上机步骤

1.建立汇编语言程序设计的实验环境

在D盘新建一个文件夹,并把新建的文件夹命名为ASM。把MASM.EXE、LINK.EXE、TD.EXE文件都拷贝到新建的ASM目录中。

2.建立汇编源程序

打开记事本。在编辑窗口输入源程序代码。

编程提示:

(1)用DB等伪指令建立数据段,数据段应包含两项内容:一是任意输入的学生

成绩,二是实验内容要求的以COUNT为首址的12个字节变量;

(2)编写程序代码时,整个程序应是一个循环结构,循环次数是前面输入的学生成绩个数。循环内部是分支结构的统计各段成绩个数的程序代码,统计成绩

个数时,应当先使用“等不等于”条件转移指令分别统计“0F0H--作弊”、

“0F1H--缺考”的个数,然后使用“小于等于”条件转移指令分别统计0 ~ 9、

10 ~ 19、20 ~ 29、……、80 ~ 89、90 ~ 99各分数段的个数。

源程序输入完毕后,选择记事本的“文件(F)”菜单,“保存(S)”文件,注意将保存源程序的路径选择为前面建立的D:\ASM目录,“保存类型(T)”选择为“所有文件(*.*)”,文件名为“HELLO”,扩展名为.ASM。

3.用MASM.EXE汇编源程序产生目标文件

在WindowsXP桌面上的“开始”菜单中选择“程序”→“附件”→“命令提示符”选项,打开“命令提示符”窗口。输入“D:”并回车,进入D盘的根目录,接着输入“CD\ASM”进入前面新建的ASM目录。

输入“MASM HELLO.ASM”并回车。如果源程序有错误,汇编程序MASM会指出错误所在的行号和错误的原因。在错误信息中,圆括号里的数字为有错误所在的行号。修改源程序中的错误并保存文件,然后重新对源程序进行汇编。如果汇编时没有错误,MASM就会在当前目录下建立一个“HELLO.OBJ”文件(名字与源程序文件名相同,只是扩展名不同)。

4.用LINK.EXE产生EXE可执行文件

在“D:\ASM>”命令提示符下输入“LINK HELLO.OBJ”并回车。如果没有错误,LINK 就会建立一个EXE文件。对于无堆栈警告(warning:no stack segment)信息,可以不予理睬,它不影响程序的执行。

5.执行程序

生成了EXE文件后,就可以直接在命令提示符下运行此程序。在“D:\ASM>”命令提示符下直接输入“HELLO”并回车。如果源程序没有功能性错误,正确的结果会显示在屏幕上。

如果程序不显示结果,这时我们就要使用TD.EXE调试工具来查看运行结果。实际上,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时需要使用TD.EXE。

五、实验报告

1.实验内容、实验要求;

2.画出程序流程框图;

3.给出程序清单;

4.给出程序运行结果。

六、实验程序:

TD.EXE的简要使用说明

TD.EXE(简称TD)是一个具有窗口界面的程序调试器.利用TD,用户能够调试已有的可执行程序(后缀为EXE);用户也可以在TD中直接输入程序指令,编写简单的程序(在这种情况下,用户每输入一条指令,TD就立即将输入的指令汇编成机器指令代码).作为入门指导,下面简单介绍一下TD的使用方法,更详细深入的使用说明请参考相关资料.

一如何启动TD

1.在DOS窗口中启动TD

(1)仅启动TD而不载入要调试的程序。

转到TD.EXE所在的目录(假定为C:\ASM),在DOS提示符下键入以下命令(用户只要输入带下划线的部分,"↙"表示回车键,下同):

C:\ASM>TD↙

用这种方法启动TD,TD会显示一个版权对话框,这时按回车键即可关掉该对话框。

(2)启动TD并同时载入要调试的程序。

转到TD.EXE所在的目录,在DOS提示符下键入以下命令(假定要调试的程序名为HELLO.EXE):

C:\ASM>TD HELLO.EXE↙

若建立可执行文件时未生成符号名表,TD启动后会显示“Program has no symbol table”的提示窗口,这时按回车键即可关掉该窗口。

2.在Windows中启动TD

⑴仅启动TD而不载入要调试的程序。

双击TD.EXE文件名, Windows就会打开一个DOS窗口并启动TD。启动TD后会显示一个版权对话框,这时按回车键即可关掉该窗口。

⑵启动TD并同时载入要调试的程序。

把要调试的可执行文件拖到TD.EXE文件名上, Window就会打开一个DOS窗口并启动TD,然后TD会把该可执行文件自动载入内存供用户调试。若建立可执行文件时未生成符号名表,TD启动后会显示“P rogram has no symbol table”的提示窗口,这时按回车键即可关掉该窗口。

二 TD中的数制

TD支持各种进位记数制,但通常情况下屏幕上显示的机器指令码﹑内存地址及内容﹑寄存器内容等均按十六进制显示(数值后省略”H”)。在TD的很多操作中,需要用户输入一些数据﹑地址等,在输入时应遵循计算机中数的记数制标识规范:

十进制数后面加’D’或’d’,如119d﹑85d等;

八进制数后面加’O’或’o’,如134o﹑77o等;

二进制数后面加’B’或’b’,如10010001b等;

十六进制数后面加’H’或’h’,如38h﹑0a5h﹑0ffh等。

如果在输入的数后面没有用记数标识字母来标识其记数制,TD默认该数为十六进制数。但应注意,如果十六进制数的第一个数字为’a’~’f’,则前面加0,以区别于符号和名字。

TD允许在常数前面加正负号。例如,十六进制数的-12可以输入为-12d,十六进制数的-5a可以输入为-5ah,TD自动会把输入的带正负号的数换成十六进制补码数。只有一个例外,当数据区的显示格式为字节,若要修改存储单元的内容则不允许用带有正负号的数,而只能按手工转换成补码后再输入。

本书中所有的实验在输入程序或数据时,若没有特别的说明,都可按十六进制数进行输入,若程序中需要输入负数,可按上述规则进行输入。

三 TD的用户界面

1.CPU窗口

TD启动后呈现的是一个具有窗口形式的用户界面,见图1,它称为CPU窗口。CPU窗口显示了CPU和内存的整个状态。利用CPU窗口可以:

代码区数据区寄存器区堆栈区标志位区

图1

·在代码区内使用嵌入汇编,输入指令或程序进行临时性修改。

·存取数据区中任何数据结构下的字节,并以多种格式显示或改变它们。

·检查和改变寄存器(包括标志寄存器)的内容。

CPU窗口分为5个区域:代码区、寄存区、标志区、数据区和堆栈区。

在5个区域中,光标所在区域称为当前区域,用户可以使用Tab键或Shift+Tab键切换当前区域,也可以在相应的区域中单击鼠标左键选中某区为当前区。光标在各个区域中显示形式稍有不同,在代码区、寄存区、标志区和堆栈区呈现为一个反白条,在存储器区为下划线形状。

在图1中,CPU窗口上边框的左边显示的是处理器的类型(8086、80286、80386、80486等,对于80486以上的CPU均显示为80486)。上边框的中间靠右处显示了当前指令所访问的内存单元的地址及内容。再往右的’1’表示此CPU窗口是第一个CPU窗口,TD允许同时打开多个CPU窗口。

CPU窗口中的代码区用于显示指令地址,指令的机器代码以及相应的汇编指令;寄存器区用于显示CPU寄存器当前的内容;标志区用于显示CPU的8个标志位当前的状态;数据区用于显示用户指定的一块内存区的数据(十六进制);堆栈区用于显示堆栈当前的内容。

在代码区和堆栈区分别显示一个特殊标志( ),称为箭标。代码区中的箭标指示出当前程序指令的位置(CS:IP),堆栈区中的箭标指示出当前堆栈指针位置(SS:SP)。

2.全局菜单介绍

CPU窗口的上面为TD的全局菜单条,可用“ALT键+菜单项首字符”打开菜单项对应的下拉子菜单。在子菜单中用上、下游标键选择所需的功能,按回车键即可执行选择的功能。为简化操作,某些常用的子菜单项后标出了对应的快捷键。下面简单介绍一下常用的菜单命令,

详细的说明请查阅相关资料。

(1)File菜单—文件操作。

Open 载入可执行程序文件准备调试

Change dir 改变当前目录

Get info 显示被调试程序的信息

DOS shell 执行DOS命令解释器(用EXIT命令退回到TD)

Quit 退出TD(Alt+X)

(2)Edit菜单—文本编辑。

Copy 复制当前光标所在内存单元的内容到粘贴板(Shift+F3)

Paste 把粘贴板的内容粘贴到当前光标所在内存单元(Shift+F4)

(3)View菜单---打开一个信息查看窗口.

Breakpoints 断点信息

Stack 堆栈段内容

Watches 被监视对象信息

Variables 变量信息

Moduble 模块信息

File 文件内容

CPU 打开一个新的CPU窗口

Dump 数据段内容

Registers 寄存器内容

(4)Run菜单---执行。

Run 从CS:IP开始运行程序直到程序结束(F9)

Go to cursor 从CS:IP开始运行程序到光标处(F4)

Trace into 单步跟踪执行(对CALL指令将跟踪进入子程序),F7键

Step over 单步跟踪执行(对CALL指令将执行完子程序才停下),F8键Execute to 执行到指定位置(Alt+F9)

Until return 执行当前子程序直到退出(Alt+F8)

(5)Breakpoints菜单---断点功能

Toggle 在当前光标处设置/清除断点(F2)

At 在指定处设置断点(Alt+F2)

Delete all 清除所有断点

(6)Data菜单---数据查看.

Inspector 打开观察器以查看指定的变量或表达式

Evaluate/Modify 计算和显示表达式的值

Add watch 增加一个新的表达式到观察器窗口

(7)Option菜单---杂项.

Display options 设置屏幕显示的外观

Path for source 指定原文件查找目录

Save options 保存当前选项

(8)Window菜单---窗口操作

Zoom 放大/还原当前窗口(F5)

Next 转到下一窗口(F6)

Next Pane 转到当前窗口的下一区域(Tab)

Size/Move 改变窗口大小/移动窗口(Ctrl+F5)

Close 关闭当前窗口(Alt+F3)

User screen 查看用户程序的显示(Alt+F5)

3.功能键提示条

菜单中的很多命令都可以使用功能键来简化操作。功能键分为三组:F1~F10功能键,Alt+F1~Alt+F10功能键以及Ctrl功能键(Ctrl功能键实际上就是代码区的局部菜单)。CPU 窗口下面的提示条中显示了这三组功能键对应的功能。通常情况下提示条中显示的是F1~

F10功能键的功能。按住Alt键不放,提示条中将显示Alt+F1~Alt+F10功能键的功能。按住Ctrl键不放,提示条中将显示Ctrl功能键的功能。表B-1列出了各功能键对应的功能。

表B-1

功能键功能功能键功能功能键功能F1 帮助Alt+F1 帮助Ctrl+G 定位到指定地址

F2 设/清断点Alt+F2 设置断点Ctrl+O 定位到CS:IP

F3 查看模块Alt+F3 关闭窗口Ctrl+F 定位到指令目的地址F4 运行到光标Alt+F4 Undo跟踪Ctrl+C 定位到调用者

F5 放大窗口Alt+F5 用户屏幕Ctrl+P 定位到前一个地址

F6 下一窗口Alt+F6 Undo关窗Ctrl+S 查找指定的指令

F7 跟踪进入Alt+F7 指令跟踪Ctrl+V 查看源代码

F8 单步跟踪Alt+F8 跟踪到返回Ctrl+M 选择代码显示方式

F9 执行程序Alt+F9 执行到某处Ctrl+N 更新CS:IP

F10 激活菜单Alt+F10 局部菜单

4.局部菜单

TD的CPU窗口中,每一个区域都有一个局部菜单,局部菜单提供了对本区域进行操作的各个命令。在当前区域中按Alt+F10键即可激活本区的局部菜单。代码区﹑数据区﹑堆栈区和寄存器区的局部菜单见图2~图5所示。标志区的局部菜单非常简单,故没有再给出其图示。对局部菜单各个命令的解释将在下面几节中分别进行说明。

图2

图3

图4

图5

四代码区的操作

代码区用来显示代码(程序)的地址﹑代码的机器指令和代码的反汇编指令。本区中显示的反汇编指令依赖于所指定的程序起始地址。TD自动反汇编代码区的机器代码并显示对应的汇编指令。

每条反汇编指令的最左端是地址,如果段地址与CS段寄存器的内容相同,则只显示字母”CS”和偏移量(CS:YYYY),否则显示完整的十六进制的段地址和偏移地址(XXXX:YYYY)。地址与反汇编指令之间显示的是指令的机器码。如果代码区当前光标所在指令用了一个内存单元地址,则该内存单元地址和内存单元的当前内容显示在CPU窗口顶部边框的右边,这样不仅可以看到指令操作码,还可以看到指令要访问的内存单元的内容。

1.输入并汇编一条指令

有时我们需要在代码区临时输入一些指令。TD提供了及时汇编功能,允许用户在TD中直接输入指令(但直接输入的指令都是临时性的,不能保存到磁盘上)。直接输入的步骤如下:

(1)使用方向键把光标移到期望的地址处。

(2)打开指令编辑窗口。有两种方法:一是直接输入汇编指令,在输入汇编指令的同时屏幕上就会自动弹出指令的临时编辑窗口;二是激活代码区局部菜单(见下一小节),选择其中的汇编命令,屏幕上也会自动弹出指令的临时编辑窗口。

(3)在临时编辑窗口中输入/编辑指令,每输入完一条指令,按回车,输入的指令即可出现在光标处,同时光标自动下移一行,以便输入下一条指令。注意,临时编辑窗口中曾经输入过的指令均可重复使用,,只要在临时编辑窗口中用方向键把光标定位到所需的指令处,按回车即可。如果临时编辑窗口中没有完全相同的指令,但只要有相似的指令,就可对其进行编辑后重复使用。

2.代码区局部菜单

当代码区为当前区域时(若代码区不是当前区域,可连续按Tab键或Shift+Tab键使代码区成为当前区域),按Alt+F10组合键即可激活代码区局部菜单,代码区局部菜单的外观见图2。下面介绍一下各菜单项的功能。

(1)Goto(转到指定位置)

此命令可在代码区显示任意指定地址开始的指定序列。用户可以键入当前被调试程序以外的地址以检查ROM、BIOS、DOS及其他驻留程序。此命令要求用户提供要显示的代码起始地址。使用Previous命令可以恢复到本命令使用前的代码区位置。

(2)Origin( 回到起始位置)

从CS:IP指向的程序位置开始显示。在移动光标使屏幕滚动后想返回起始位置时可使用此命令。使用Previous命令可以恢复到本命令使用前的代码区位置。

(3)Follow(追踪指令转移位置)

从当前指令所要转向的目的地址处开始显示。使用本命令后,整个代码区从新地址处开始显示。对于条件转移指令(JE、JNZ、LOOP、JCXZ等),无论条件满足与否,都能追踪到其目的地址。也可以对CALL、JMP及INT指令进行追踪。使用Previous命令可以恢复到本命令使用前的代码区位置。

(4)Caller(转到调用者)

从调用当前子程序的CALL指令处开始显示。本命令用于找出当前显示的子程序在何处被调用。使用Previous命令可以恢复到本命令使用前的代码区位置。

(5)Previous(返回到前一次显示位置)

如果上一条命令改变了显示地址,本命令能恢复上一条命令被使用前的显示地址。注意光标键、PageUp、PageDown不会改变显示地址。若重复使用该命令,则在当前显示地址和前一次显示地址之间切换。

(6)Search(搜索)

本命令用于搜索指令或字节列表。注意,本命令只能搜索那些不改变内存内容的字另,如:

PUSH DX

POP [DI+4]

ADD AX,100

若搜索以下指令可能会产生意想不到的结果:

JE 123

CALL MYFUNC

LOOP 100

(7)ViewSource(查看源代码)

本命令打开源模块窗口,显示与当前反汇编指令相应的源代码。如果代码区的指令序列没有源程序代码,则本命令不起作用,

(8)Mixed(混合)

本命令用于选择指令与代码的显示方式,有三个选择:

No 只显示反汇编指令,不显示源代码行。

Yes 如果当前模块为该机语言源模块,应使用此选择。源代码行被显示在第一条反汇编指令之前。

Both 当前模块为汇编语言源模块,应使用此选择。在有源代码行的地方就显示该源代码行,否则显示汇编指令。

(9)New CS:IP(设置CS:IP为当前指令行的地址)

本命令把CS:IP设置为当前指令所在的地址,以便使程序从当前指令处开始执行。用这种方法可以执行任意一段指令序列,或者跳过那些不希望执行的程序段。注意,不要使用本命令把CS:IP设置为当前子程序以外的地址,否则有可能引起整个程序崩溃。

(10)Assemble(即时汇编)

本命令可即时汇编一条指令,以代替当前行的那条指令。注意,若新汇编的指令与当前行的指令长度不同,其后面机器代码的反汇编显示会发生变化。

也可以直接在当前行出输入一条汇编指令来激活此命令。

(11)I/O(输入/输出)

本命令用于对I/O端口进行读写,选择此命令后,会再弹出下一级子菜单,如图6所示。子菜单中的命令解释如下:

①In byte(输入字节)

用于从I/O端口输入一个字节,用户需提供端口地址。

②Out byte(输出字节)

用于往I/O端口输出一个字节,用户需提供端口地址。

③Read word(输入字)

用于从I/O端口输入一个字,用户需提供端口地址。

④Write word(输出字)

用于往IO端口输出一个字,。用户需提供端口地址。

图6

五寄存器区和标志区的操作

寄存器区显示了CPU各寄存器的当前内容。标志区显示了八个CPU标志位的当前状态,表2列出了各标志位在该区的缩写字母。

表B-2

标志区字母标志位名称标志区字母标志位名称

c 进位(Carry) p 奇偶(Parity)

z 全零(Zero) a 辅助进位(Auxiliary carry)

s 符号(Sign) i 中断允许(Interrupt enable)

o 溢出(Overflow) d 方向(Direction)

1.寄存器区局部菜单

当寄存器区为当前区域时(若寄存器区不是当前区域,可连续按下Tab键或Shift+Tab 键使寄存器区成为当前区域),按下Alt+F10组合键即可激活寄存器区局部菜单,寄存器区的局部菜单的外观见图5。下面介绍一下各菜单项的功能。

(1)Increment(加1)

本命令用于把当前寄存器的内容加一。

(2)Decrement(减1)

本命令用于把当前寄存器的内容减一。

(3)Zero(清零)

本命令用于把当前寄存器的内容清零。

(4)Change(修改)

本命令用于修改当前寄存器的内容。选择此命令后,屏幕上会弹出一个输入框,在输入框中键入新的值,然后回车,这个新的值就会取代原来该寄存器的内容。

修改寄存器的内容还有一个更简单的变通方法,即把光标移到所需的寄存器上,然后直接键入新的值。

(4)Register 32-bit(32位寄存器)

按32位格式显示CPU寄存器的内容(默认为16为格式)。在286以下的CPU或实方式时只需使用16位显示格式即可。

微机原理实验指导书

微机原理及应用实验指导书 南京理工大学机械工程学院 2011年10月10日

实验1 基本操作实验 1. 实验目的 (1) 掌握TD-PITC 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 (2) 掌握使用运算类指令编程及调试方法; (3) 掌握运算类指令对各状态标志位的影响及其测试方法; (4) 学习使用软件监视变量的方法。 2. 实验设备 PC机一台,TD-PITC 实验装置一套。 3. 实验内容及步骤 通过对样例程序的操作,学会在TD-PITC境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会: ●如何设置断点; ●如何单步运行程序; ●如何连续运行程序; ●怎样查看寄存器的内容; ●怎样修改寄存器的内容; ●怎样查看存储器的内容; ●怎样修改存储器的内容。 3.1 实验内容1――――BCD码转换为二进制数 实验内容: 将四个二位十进制数的BCD 码存放于3500H 起始的内存单元中,将转换的二进制数存入3510H 起始的内存单元中,自行绘制流程图并编写程序。 参考实验程序清单如下: SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: XOR AX, AX MOV CX, 0004H MOV SI, 3500H MOV DI, 3510H A1: MOV AL, [SI] ADD AL, AL MOV BL, AL

ADD AL, AL ADD AL, AL ADD AL, BL INC SI ADD AL, [SI] MOV [DI], AL INC SI INC DI LOOP A1 A2: JMP A2 CODE ENDS END START 实验步骤: 1)运行Wmd86 软件,进入Wmd86 集成开发环境。 2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1 语言环境选择界面 3)语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-2所示。默认文件名为Wmd861。 图1-2 新建文件界面 4)编写实验程序,如图1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

微机原理及应用实验(题目)

微机原理及应用实验 实验一开发环境的使用 一、实验目的 掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。二、实验内容 在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的 30H~7FH 单元清零。 三、实验设备 PC机一台。 四、实验步骤 用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。五、实验思考 1.如果需把30H-7FH 的内容改为55H,如何修改程序? 2.如何把128B的用户RAM全部清零? 六、程序清单 文件名称:CLEAR.ASM ORG 0000H CLEAR: MOV R0,#30H ;30H 送R0寄存器 MOV R6,#50H ;50H 送R6寄存器(用作计数器) CLR1: MOV A,#00H ;00 送累加器A MOV @R0,A ;00 送到30H-7FH 单元 INC R0 ;R0 加1 DJNZ R6,CLR1 ;不到50H个字节,继续 WAIT: LJMP WAIT END 实验二数据传送 一、实验目的 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H 中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、实验设备 PC机一台。

微机原理实验指导

微机原理实验一简单I/O口扩展实验 一、实验目的 1. 熟悉74LS273、74LS244的应用接口方法。 2. 掌握用锁存器、三态门扩展简单并行输入输出口的方法。 二、实验内容 用逻辑电平开关作为74LS244(U10)的输入,用发光二极管作为74LS273的输 出,编写程序,使得逻辑电平开关的输入状态从发光二极管上显示出来。 三、实验器材 微机、EL型微机教学实验箱 四、实验原理图 4LS273 4 4LS02 S O S I C S U 1 R K1-K8是开关的输出插孔,L1-L8是发光二极管的输入插孔,SI0-SI7是74LS244 的输入插孔,SO0-SO7是74LS273的输出插孔,CSU10\是74LS244的地址译码输入插孔,CSU8\是74LS273译码输入插孔,以上插孔实验时均需连线,原理图中其它已注的和未标注的引脚均以连好或实验不需要。 74LS244

五、实验步骤 1.连线:将74LS244的输入SI0-SI7分别与逻辑电平开关电路的 K1-K8相连,从I/O地址片选信号 CS0\~CS7\中任选一个与 U10的片选信号相连(例如CS0\)。将74LS273(U8或U9)的输出(CS0\~CS7\)分别与发光二极管电路的 L1~L8相连,从I/O地址片选信号CS0\~CS7\中任选一个与U8或U9的片选信号相连。(如CS1\)2.编辑程序,单步运行,调试程序 3.调试通过后,全速运行,观察实验结果 4.编写实验报告 六、编程提示 逻辑电平开关拨上时为5V,拨下时为0V,发光二极管输入‘1’为亮,‘0’为灭。从U10读入的数据后从输出口输出。 七、程序框图

微机原理及应用实验

实验报告1 实验项目名称:I/O地址译码;简单并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握I/O地址译码电路的工作原理,简单并行接口的工作原理及使用方法。 二、预备知识: 输入、输出接口的基本概念,接口芯片的(端口)地址分配原则,了解译码器工作原理及相应逻辑表达式,熟悉所用集成电路的引线位置及各引线用途;74LS245、74LS373的特性及作用。 三、实验内容245输入373输出 使用Protues仿真软件制作如下电路图,使用EMU8086编译软件编译源程序,生成可执行文件(nn . exe),在Protues仿真软件中加载程序并运行,分析结果。 编程实现:读8个开关的状态,根据输入信号控制8个发光二极管的亮灭。 图1-1 245输入373输出 四、程序清单

五、实验结果 六、结果分析 七、思考题: 1、如果用74LS373作输入接口,是否可行?说明原因;用74LS245作输出接口,是否可行?说明原因。

实验报告2 实验项目名称:可编程定时器/计数器;可编程并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握8253的基本工作原理和编程应用方法。掌握8255的工作原理及使用方法。 二、预备知识: 8253的结构、引脚、控制字,工作方式及各种方式的初始化编程及应用。 8255的内部结构、引脚、编程控制字,工作方式0、1、2的区别,各种方式的初始化编程及应用。 三、实验内容: ⑴8253输出方波 利用8253的通道0和通道1,设计产生频率为1Hz的方波。设通道0的输入时钟频率为2MHz,8253的端口地址为40H,42H,44H,46H。通道0的输入时钟周期0.5μs,其最大定时时间为:0.5μs×65536 = 32.768ms,要产生频率为1Hz(周期= 1s)的方波,利用;一个通道无法实现。可用多个通道级连的方法,将通道0的输出OUT0作通道1的输入时钟信号。设通道0工作在方式2(频率发生器),输出脉冲周期= 10 ms,则通道0的计数值为20000(16位二进制)。周期为4 ms的脉冲作通道1的输入时钟,要求输出端OUT1输出方波且周期为1s,则通道1工作在方式3(方波发生器),计数值为100(8位;二进制)。硬件连接如图2-1。

微机原理实验报告

汇编语言程序设计实验 一、实验内容 1.学习并掌握IDE86集成开发环境的使用,包括编辑、编译、链接、 调试与运行等步骤。 2.参考书例4-8,P165 (第3版161页)以单步形式观察程序的 执行过程。 3.修改该程序,求出10个数中的最大值和最小值。以单步形式观 察,如何求出最大值、最小值。 4.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态。 二、实验目的 1.学习并掌握IDE86集成开发环境的使用 2.熟悉汇编语言的基本算法,并实际操作 3.学会利用IDE86进行debug的步骤 三、实验方法 1.求出10个数中的最大值和最小值 (1)设计思路:利用冒泡法,先对数据段的10个数字的前2个比 较,把二者中大的交换放后面。在对第二个和第三个数比较,把 二者中较大的交换放后面,依此类推直到第十个数字。这样第十 位数就是10个数里面最大的。然后选出剩下9个数字里面最大 的,还是从头开始这么做,直到第九个数字。以此类推直到第一 个数字。

(2)流程图 2.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态

(1)设计思路:结果存放在sum里面,加数是i(初始为1),进行 100次循环,sum=sum+I,每次循环对i加1. (2)流程图: 四、 1.求出10个数中的最大值和最小值

DSEG SEGMENT NUM DB -1,-4,0,1,-2,5,-6,10,4,0 ;待比较数字 DSEG ENDS CODE SEGMENT ASSUME DS:DSEG,CS:CODE START:MOV AX,DSEG MOV DS,AX LEA SI,NUM MOV DX,SI MOV CL,9 ;大循环计数寄存器初始化 NEXT1:MOV BL,CL ;大循环开始,小循环计数器初始化MOV SI,DX NEXT2:MOV AL,[SI+1] CMP [SI],AL ;比较 JGGONE ;如果后面大于前面跳到小循环末尾CHANGE:MOV AH,[SI] ;交换 MOV [SI+1],AH MOV [SI],AL JMP GONE GONE:add SI,1 DEC BL JNZ NEXT2

微机原理及接口技术习题解答与实验指导

第一部分学习指导与习题解答 (3) 第1章计算机基础 (3) 1.1 学习指导 (3) 1.2 单项选择题 (3) 1.3 判断题 (6) 1.4填空题 (6) 1.5 简答题 (7) 第2章微处理器 (9) 2.1 学习指导 (9) 2.2单项选择题 (11) 2.3判断题 (15) 2.4填空题 (17) 2.5 简答题 (19) 第3章80x86指令系统 (22) 3.1学习指导 (22) 3.2单项选择题 (23) 3.3 判断题 (29) 3.4 填空题 (30) 3.5 简答题、 (34) 3.6. 分析程序题 (40) 3.7 编程题 (43) 第四章 (45) 4.3 判断题 (52) 4.4 填空题 (54) 4.5 简答题 (64) 4.6 分析程序题 (76) 4.7 编程题 (85) 第5章半导体存储器及其接口技术 (118) 5.1 学习指导 (118) 5.2单项选择题 (118) 5.3判断题 (121) 5.4填空题 (122) 5.5简答题 (123) 5.6应用题 (126) 第6章微型计算机接口技术 (134) 6.1 学习指导 (134) 6.2单项选择题 (135) 6.3判断题 (138) 6.4填空题 (139) 6.4填空题 (141) 6.5简答题 (141) 第7章,简单接口电路设计 (148) 7.1 学习指导 (148) 7.2单项选择题 (149) 7.3判断题 (149) 7.5应用题 (150)

第8章可编程接口技术 (156) 8.1可编程计数器8253/8254 (156) 8.1.1学习指导 (156) 8.1.2单项选择题 (157) 8.1.3判断题 (159) 8.1.4填空题 (159) 8. 1 . 5 简答题 (160) 8.1.6 应用题 (160) 8.2 并行通信接口8255A (163) 8.2.1 学习指导 (163) 8.2.2 单选题 (163) 8.2.3 判断题 (164) 8.2.4 填空题 (165) 8.2.5应用题 (165) 8.3串行通信接口8250/8251 (170) 8.3.2 单项选择题 (172) 8.3.3判断题 (172) 8.4可编程中断控制器8259A (178) 8.4.1 学习指导 (178) 8.4.2单选题 (178) 8.4.3 判断题 (180) 8.4.4 填空题 (181) 8.4.5 简答题 (182) 8.4.6 应用题 (184) 第9章自检试卷 (187) 9.1 自检试题一 (187) 自检试题二 (192)

80x86微机原理与接口技术实验指导书

80x86微机原理与接口技术 实验指导书 长安大学信息工程学院电子信息与通信工程实验室

第1章 80X86 微机原理及其程序设计实验 本章主要介绍汇编语言程序设计,通过实验来学习80X86 的指令系统、寻址方式以及程序的设计方法,同时掌握联机软件的使用。 1.1 系统认识实验 1.1.1 实验目的 掌握TD-PITE 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 1.1.2 实验设备 PC机一台,TD-PITE 实验装置一套。 1.1.3 实验内容 编写实验程序,将00H~0FH 共16 个数写入内存3000H 开始的连续16 个存储单元中。 1.1.4 实验步骤 1. 运行Wmd86 软件,进入Wmd86 集成开发环境。 2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1-1 语言环境选择界面 3. 语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-1-2所示。默认文件名为Wmd861。 图1-1-2 新建文件界面 4. 编写实验程序,如图1-1-3所示,并保存,此时系统会提示输入新的文件名,输完后

点击保存。 图1-1-3 程序编辑界面 5. 点击,编译文件,若程序编译无误,则输出如图1-1-4所示的输出信息,然后再点击进行链接,链接无误输出如图1-1-5所示的输出信息。 图1-1-4 编译输出信息界面图1-1-5 链接输出信息界面 6. 连接PC与实验系统的通讯电缆,打开实验系统电源。 7. 编译、链接都正确并且上下位机通讯成功后,就可以下载程序,联机调试了。可以通过端口列表中的“端口测试”来检查通讯是否正常。点击下载程序。为编译、链 接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下载。起始运行语句下会有一条绿色的背景。如图1-1-6所示。

微机原理及应用实验报告81487

实 验 报 告 课 程 名 称 实 验 名 称 实 验 日 期 学 生 专 业 学 生 学 号 学 生 姓 名 教 师 姓 名 成 绩 南京理工大学机械工程学院 微机原理及应用 实验1 DEBUG 操作实验 实验2 汇编程序设计实验 实验3 8253定时/计数器实验 实验4 8255 并行接口实验 年 月 日 至 年 月 日

实验一DEBUG命令及其操作 一、实验目的 1.熟练掌握debug的常用命令,学会用debug来调试程序。 2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。 3.掌握各种寻址方法以及简单指令的执行过程。 二、实验要求 1.实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。 2.本实验要求在PC机上进行。 3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。三、实验内容 ●实验内容1:学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。 实验报告要求: 1.写出运行结果; 2.小结debug常用命令及使用体会 答:1.原文已给出(略) 2.a 汇编 d显示内存单元内容 e修改单元内存内容 g执行命令 t单步(或多步)调试 n指定文件路径文件名(含扩展名) u反汇编 r查看寄存器值及修改 l加载程序 w写盘命令 体会:提升学习热情和动手能力有助于理解代码执行过程 ●实验内容2 设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。 实验报告要求: 1.写出完成上述功能的程序段; 2.单步执行,并记录寄存器AX, BX及堆栈指针SP的值 答: A100 Mov ax,3000 ;ax:3000 bx:0000 sp:ffee Mov bx,5000 ;ax:3000 bx:5000 sp:ffee Push ax ;ax:3000 bx:5000 sp:ffec

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

微机原理实验指导

实验一 MASM For Windows 的使用及顺序程序设计 一、实验目的 1、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。 2、熟悉masm for windows调试环境及DEBUG常用命令的使用 二、实验内容 1.DEBUG常用命令(U、R、D、E、F、T、G、Q)的操作使用 2.编程实现两个16位无符号数的加、减、乘、除运算。 有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。 三、实验设备 PC机一台、masm for windows 汇编语言集成环境 四、实验准备 1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。 2) 画出流程图。 3) 写出源程序。 4) 对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。 五、实验步骤 1) 输入源程序。 2) 汇编、连接程序,生成 .EXE文件,执行文件,检查结果。 六、学生实验报告的要求 1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。 2) 说明程序中各部分所用的算法。

3) 说明主要符号和所用到寄存器的功能。 4) 上机调试过程中遇到的问题是如何解决的。 5) 对调试源程序的结果进行分析。 4) 说明标志位CF、SF和OF的意义。 DEBUG的常用命令 1、R 显示或修改寄存器的内容命令格式:-R 2、 D 显示存储单元的内容命令格式:-D[地址1, 地址2] 3、E修改存储单元的内容 命令格式:-E[地址1, 地址2] 4、U反汇编 命令格式:-U[地址1, 地址2] 5、T单步执行 命令格式:-T 6、G连续执行 命令格式:-G[=起始地址, 结束地址] A小汇编 命令格式:-A 7、Q退出DEBUG,返回DOS 实验一源程序 EXAM1-2 .ASM DATA SEGMENT A D B 34H,18H,2 DUP(0),’$’ B DB 56H,83H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,A MOV BL,B ADD AL,BL

微机原理实验指导书

微机原理实验指导书汕头大学机电系摘录

实验一P1口实验及延时子程序设计 1.实验目的 利用单片机的P1口作为I/O口进行实验验证,掌握利用P1口作为输入口和输出口的编程方法,理解并掌握延时子程序的设计方法。 2.实验设备及器件 IBM PC机一台 DP-51PRO单片机综合仿真实验仪一台 3.实验内容 (1)编写一段程序,用P1口作为控制端口,使D1区的LED轮流点亮。 (2)编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭(P1.7接按键,按下时LED 亮,不按时LED灭)。 图 1 4.实验要求 学会使用单片机的P1口作I/O口。如果时间充裕,也可以考虑利用P3口作I/O口来做该实验。 5.实验步骤 ①用导线把A2区的J61接口与D1区的J52接口相连。原理如图1所示。 ②先编写一个延时程序。 ③将LED轮流点亮的程序编写完整并调试运行。 ④使用导线把A2区J61接口的P1.0~P1.6与D1区J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区J53的KEY1相连。原理如图3.2(b)所示。 ⑤编写P1.7控制LED的程序,并调试运行(按下K1看是否全亮)。 ⑥A2区J61接口P1.7与D1区J54的SW1相连,然后再运行程序,拨动开关SW1查看结果。

6.实验预习要求 阅读附录内容,理解实验的硬件结构。可以先把程序编好,然后在Keil C51环境下进行软件仿真。 7.实验参考程序 程序1: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H LJMP M ain ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main: MOV A,#0FFH CLR C MainLoop: CALL Delay RLC A MOV P1,A ;把A的值输出到P1口 SJMP MainLoop Delay: MOV R7, #0 ;延时 Loop: MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R7, Loop RET ; END 程序2: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H LJMP Main ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main:JB P1.7,SETLED ;按键没有按下时,跳转到SETLED CLRLED: CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP Main SETLED: SETB P1.0 SETB P1.1

北邮微机原理与接口技术硬件实验报告

微原硬件实验报告 班级:07118 班 学号:070547 班内序号:26 姓名:杨帆

实验一熟悉实验环境及IO的使用 一,实验目的 1. 通过实验了解和熟悉实验台的结构,功能及使用方法。 2. 通过实验掌握直接使用Debug 的I、O 命令来读写IO 端口。 3. 学会Debug 的使用及编写汇编程序 二,实验内容 1. 学习使用Debug 命令,并用I、O 命令直接对端口进行读写操作, 2.用汇编语言编写跑马灯程序。(使用EDIT 编辑工具)实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度 等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) 三,实验步骤 1.实验板的IO 端口地址为EEE0H 在Debug 下, I 是读命令。(即读输入端口的状态---拨码开关的状态) O 是写命令。(即向端口输出数据---通过发光管来查看) 进入Debug 后, 读端口拨动实验台上八位拨码开关 输入I 端口地址回车 屏幕显示xx 表示从端口读出的内容,即八位开关的状态ON 是0,OFF 是 1 写端口 输入O 端口地址xx (xx 表示要向端口输出的内容)回车 查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。 2. 在Debug 环境下,用a 命令录入程序,用g 命令运行 C>Debug -a mov dx, 端口地址 mov al,输出内容 out dx, al

mov ah, 0bh int 21h or al, al jz 0100 int 20h -g 运行查看结果,修改输出内容 再运行查看结果 分析 mov ah, 0bh int 21h or al, al jz 0100 int 20h 该段程序的作用 3.利用EDIT 工具编写汇编写跑马灯程序程序 实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) C>EDIT 文件名.asm 录入程序 按Alt 键打开菜单进行存盘或退出 编译文件 C>MASM 文件名.asm 连接文件 C>LINK 文件名.obj 运行文件或用Debug 进行调试。 四,程序流程图

2013微机原理实验指导书

微机原理实验报指导书 实验一数据传送实验 1.实验名称实验一数据传送实验 2.实验目的 1、掌握微型计算机汇编软件调试汇编源程序的基本操作; 2、熟悉传送指令、简单运算类指令来编写汇编语言源程序; 3、掌握调试过程及实验结果分析; 3.实验仪器 微型计算机一台 4.实验原理或内容 1.数据段从3500H单元开始建立0---15共16个数据区,程序中见此段存入 数据00H,01H,02H---0AH---0FH,运行之,检查并记录结果。 2.将内存3500H开始的共10个单元内容传送到3600H单元开始的数据区中,运行之,记录结果。 5.实验步骤 1.启动Masm for Windows 集成实验环境2009.6。显示如下: 2.输入源程序 在模板处将程序完成,其中模板中段名可以自己修改定义,没有涉及的段可省略不写。 输入汇编语言源程序后,保存程序(规定扩展名为.asm)

3.汇编 编译/汇编成目标文件,单击运行菜单下“编译成目标文件(obj)”,等待系统汇编,若有错误,修改再编译,直至无错误为止。

4.连接 生成可执行文件。单击运行菜单下“生成可执行文件(exe)”,等待系统对汇编生成的.obj文件进行连接,生成相应的可执行文件。若有错误,修改错误重复3和4操作,直至无错误为止。

5.在DEBUG调试环境下进行程序的调试 1、反汇编。u回车 -u0000回车 2、单步运行。-T=0000回车 -T回车 3、连续运行。G=起始偏移地址结束偏移地址 4、内存单元内容显示。-Dds:3500回车 5、内存单元内容的修改。-EDS:3500回车.键入修改后内容再空格 完成后回车 6、查看修改寄存器。-R回车 -R跟寄存器名,显示寄存器内容:后可跟修改内容 -R IP 可查看修改IP值 7、退出debuf。Q命令 6.数据与结果 将运行结果记录于此处

微机原理及应用 上机实验报告2 数据传送

课程名称:_________微机原理及应用___________指导老师:_____钟崴_______成绩:__________________ 实验名称:_________数据传送___________实验类型:________________同组学生姓名:__________ 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求(必填) 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容和原理(必填) 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、主要仪器设备(必填) PC机一台。 四、操作方法和实验步骤 逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。 五、程序清单 1. ORG 0000H CLEAR MOV R0,#30H ;间接寻址 MOV A,#40H ;立即寻址 MOV @R0,A ;间接寻址 MOV A,30H ;直接寻址 MOV DPTR,#0100H ;间接寻址 MOV A,#36H MOVX @DPTR,A MOV R0,#50H ;立即寻址 MOV A,#10 MOVC A,@A+DPTR ;变址寻址 END

微机原理实验报告

微 机 原 理 实 验 报 告 班级: 指导老师:学号: 姓名:

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 图3-1

四、参考程序清单 DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX

MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL ADDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL

四川大学微机原理实验报告..

微机原理实验报告 学院: 专业班级: 姓名 学号

实验一汇编语言编程基础 1.3汇编语言程序上机操作和调试训练 一.功能说明 运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。 运用MASM﹒EXE文件进行汇编,修改程序中的各种语法错误,直至正确,形成*.OBJ文件。 运用LINK.EXE文件进行连接,形成*.EXE文件。 仔细阅读和体会DEBUG调试方法,掌握各种命令的使用方法。 运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。 再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单步执行等功能发现错误所在并加以改正。 二.程序流程图 设置被除数、商的地址指针 设置单位除法次数计数器 取被除数一位作十进制调整 作字节除法、存商 N 被除数各位已除完? Y 显示运算结果 结束 三.程序代码 修改后的程序代码如下: DATA SEGMENT A D B 9,6,8,7,5 B DB 5 C DB 5 DUP (0) N EQU 5 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX

MOV ES,AX CLD LEA SI,A LEA DI,C MOV CX,N MOV AH,0 LP1: LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C LP2: MOV DL,[DI] ADD DL,30H MOV AH,2 INT 21H INC DI LOOP LP2 MOV AH,4CH INT 21H CODE ENDS END START 四.实验感想和收获 通过这次试验,我对微机原理上级试验环境有了初步的认识,可以较为熟练地对汇编语言进行编译,汇编及连接,同时也学会了用DEBUG调试程序,收获很大。 在这次试验中我也遇到了一些困难。在刚开始我发现自己无法打开MASM.EXE,计算机提示是由于版本不兼容。我这才想起来我的操作系统是64位的,和该软件版本不兼容。不过我并没有放弃,经过我的摸索之后,我发现用DOSBOX这个程序可以解决我的电脑运行不了该程序的问题。在解决了第一个难题后,我开始着手改正试验1.3中的语法错误和逻辑错误,但是无论我怎么修改却始终都无法通过编译,并且基本上每句话都有编译错误。根据我多年编程的经验来看,这应该是中文输入法在搞鬼,之后我耐心地把程序重新输了一遍,果然通过了编译,并且之后的连接也进行的很顺利。在用DEBUG调试时发现得出的结果也很正确。 尽管这次的实验内容非常简单,仅仅是教会我们一些基本的操作,但我却明显感觉到了汇编语言和C语言等高级语言所不同的地方。越是底层,基础的东西就越不人性化,用C语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。

微机原理与接口技术实验指导书1_[1]...

微机原理与接口技术实验指导书 编者:王亭岭 华北水利水电学院 电气学院自动化教研室 二零一二年三月

目录 实验一标志寄存器应用 (1) 实验二指令寻址方式练习 (4) 实验三分支结构程序设计 (6) 实验四循环结构程序设计 (7) 实验五子程序结构程序设计 (8) 实验六DOS系统功能调用程序设计 (10) 实验七BIOS中断调用程序设计 (12) 实验八定时器中断程序设计 (14)

实验一标志寄存器应用 一、实验目的与要求 1.掌握汇编程序的编译过程; 2.掌握8086的标志寄存器的特点。 二、实验内容 微型计算机(80x86系列)。 四、实验参考程序 DATA SEGMENT A DW 123 B DW 456 SUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA START: MOV AX , DATA MOV DS , AX MOV AX , A SUB AX , B MOV SUM , AX MOV AH,4CH INT 21H CODE ENDS END START 五、实验步骤 步骤一、用鼠标单击开始菜单,单击运行。如下图所示:

步骤二、在运行窗口中键入cmd,回车进入命令提示符。如下图所示: 步骤三、在命令提示符中编译汇编源程序并连接*.obj文件。如下图所示:1.C:\>D: 回车 2.D:\ >CD MASM 回车 3.D:\MASM>MASM SY1.ASM 回车 4.D:\MASM>LINK SY1.OBJ 回车

步骤四、在命令提示行中运行并调试汇编程序。如下图所示:1.D:\MASM>SY1.EXE 回车 2.D:\MASM>DEBUG SY1.EXE 回车 六、实验结论 1.程序运行后变量SUM的值是多少? 2.程序运行前后标志寄存器的各标志位有何变化? 3.分析实验结果及所遇到的问题,并说明解决的方法。

微机原理与应用实验报告

微机原理及应用实验报告 班级:机械1301班 :黄佳清 学号:0801130117 座位号: 中南大学机电工程学院

实验一单片机仿真开发机操作和MCS-51指令系统应用 一.实验目的 1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整; 2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编; 3、掌握程序的调试和运行的各种方法。 三.实验容及步骤(完成分值:60分) 本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真 1.新建工程项目 2.设置工程文件参数 3.编写新程序事例 4.调试程序直至能够运行出结果。 四.实验程序 AJMP MAIN ORG 0030H MAIN: MOV R0,#20H MOV R2,#0FH MOV A,#00H A1: MOV R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#20H ;暂停,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A2: MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,A2 MOV R0,#030H ;断点,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A3: MOVX A,DPTR MOVX R0,A INC R0 INC DPTR DJNZ R2,A3 DO: LJMP DO END ;部存储器数据块赋值,搬运数据块到外部存储器,再搬运回部数据存储器。 五、附加题 1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光

2.在MOV R0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元容 3.

微机原理实验报告

微机原理实验报告 计算机网络的设计是一个要求动手能力很强的一门实践课程,在课程设计期间我努力将自己以前所学的理论知识向实践方面转化,尽量做到理论与实践相结合,在课程设计期间能够遵守纪律规章,不迟到、早退,认真完成老师布置的任务,同时也发现了自己的许多不足之处。 在课程设计过程中,我一共完成了11个实验,分别是1.制作直通电缆和交叉UTP、2.交换机Console口和Telnet配置、3.交换机端口和常规配置、4.虚拟局域网VLAN配置、5.路由器Console口Telnet 配置方法和接口配置、6.路由器静态路由配置、7单臂路由配置、8.动态路由协议配置、9.PPP协议配置、10路由器访问控制表(ACL)、11.网络地址转换(NAT)。 在制作直通电缆和交换UTP的实验中,我起初不能完全按照要求来剪切电缆,导致连接不通,后来在同学的帮助下,终于将实验完成。 在做到单臂路由配置和动态路由协议配置的实验,由于自身的基础知识掌握不牢,忘掉了一些理论知识,在重新翻阅课本和老师的指导之下,也成功的完成了试验。 从抽象的理论回到了丰富的实践创造,细致的了解了计算机网络连接的的全过程,认真学习了各种配置方法,并掌握了利用虚拟环境配置

的方法,我利用此次难得的机会,努力完成实验,严格要求自己,认真学习计算机网络的基础理论,学习网络电缆的制作等知识,利用空余时间认真学习一些课本内容以外的相关知识,掌握了一些基本的实践技能。 课程设计是培养我们综合运用所学知识,发现、提出、分析、解决问题的一个过程,是对我们所学知识及综合能力的一次考察。随着科学技术日新月异的不断发展,计算机网络也在不断的变化发展当中,这就要求我们用相应的知识来武装自己,夯实基础,为将来走向工作岗位,贡献社会做好充分的准备。

微机原理实验指导书(学生)

昆明理工大学微机原理及程序设计 实验指导书 段绍米编 昆明理工大学信息工程与自动化学院 自动化系 2013年10月

微机原理实验实验要求及运行环境 1、实验要求与注意事项: 交纸质版实验报告,实验要求: 2、实验运行环境 在电脑中装ASM Masm for windows 集成实验环境2008。双击图标打开ASM MasM for windows 集成实验环境运行工作界面,输入实验程序代码,调试、改错、保存、运行、查看结果,进行记录。

运行结果显示:

实验一两个多位十进制数相加的实验 一、实验目的 1、学习数据传送和算术运算指令的用法。 2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加。要求被加数均以ASCII码形式各自顺序存放在以DA TA1和DA TA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图

四、程序清单 CRLF MACRO ;宏定义,宏名:CRLF MOV DL, 0DH ;把0DH给DL MOV AH, 02H ; 把02H给AH INT 21H ;系统功能调用——实现回车功能 MOV DL, 0AH ;把0AH给DL MOV AH, 02H ; 把02H给AH INT 21H ;系统功能调用——实现换行功能ENDM ;宏定义结束——本段实现回车换行功能 DATA SEGMENT;数据段定义,段名DATA DATA1 DB 33H, 39H, 31H, 37H, 34H;变量DATA1中装入加数 DATA2 DB 36H, 35H, 30H, 38H, 32H;变量DATA2中装入被加数 DATA ENDS;数据段定义结束——本段实现了两个数据的定义 STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATA START: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV AX, TOP MOV SP, AX MOV SI, OFFSET DA TA2 MOV BX, 05 CALL DISPL CRLF MOV SI, OFFSET DA TA1 MOV BX, 05 CALL DISPL CRLF MOV DI, OFFSET DATA2 CALL ADDA MOV SI, OFFSET DA TA1 MOV BX, 05 CALL DISPL CRLF MOV AX, 4C00H INT 21H DISPL PROC NEAR

相关主题
文本预览
相关文档 最新文档