下微机原理实验教程.docx
- 文档编号:8872089
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:60
- 大小:145.76KB
下微机原理实验教程.docx
《下微机原理实验教程.docx》由会员分享,可在线阅读,更多相关《下微机原理实验教程.docx(60页珍藏版)》请在冰豆网上搜索。
下微机原理实验教程
《微机原理》实验教程
计算机系统教研室《微机原理》课程组
计算机科学与技术学院
2011年9月
目录
目录1
实验一汇编程序设计初步2
一、实验目的与要求2
(一)、实验目的2
(二)、实验要求2
二、实验方法(汇编工具的使用)3
(一)、用编辑程序建立asm文件3
(二)、用汇编程序对源文件汇编产生目标文件obj3
(三)、用连接程序link产生执行文件exe4
(四)、运行程序5
(五)、程序调试及结果查看5
实验二循环程序设计7
一、实验目的与要求7
二、实验内容7
三、实验报告要求7
实验三分支程序设计8
一、实验目的与要求8
二、实验内容8
三、实验报告要求8
实验四子程序设计9
一、实验目的与要求9
二、实验内容9
三、实验报告要求9
实验五简单I/O10
一、实验目的与要求10
二、实验内容10
三、实验报告要求10
实验六8255A实验11
一、实验目的与要求11
二、实验内容11
三、实验报告要求11
实验七8253定时器实验12
实验八模/数转换实验13
附录14
附录1常用DOS命令14
附录2DEBUG主要命令16
附录3汇编程序出错信息19
附录4常用字符ASCII码值23
附录58088/8086指令系统24
附录6IBMPC/AT中断功能表27
附录7常用DOS功能调用(INT21H)28
附录8BIOS功能调用31
实验一汇编程序设计初步
一、实验目的与要求
(一)、实验目的
学习程序设计的基本方法和技能,进一步加深对微机接口芯片原理及工作过程的理解,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。
为后继课程打下坚实的基础。
(二)、实验要求
1.上机前要做好充分的准备,包括程序框图、源程序清单、调试步骤、测试方法、对运行结果的分析等。
2.上机时要遵守实验室的规章制度,爱护实验设备。
要熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法及实验仪器。
在程序的调试过程中,有意识地学习及掌握debug程序的各种操作命令,以便掌握程序的调试方法及技巧。
为了更好地进行上机管理,要求用硬盘储存程序,并建立和使用子目录,以避免文件被别人删除。
有关目录及文件操作的DOS命令见附录1。
此外,为了便于统一管理硬盘中的文件,要求实验者按以下形式命名实验文件:
字母学号.asm
其中字母取a~z中的一个字母,按实验顺序从a至z排列。
如学号为850431学生的第二个实验程序所对应的文件名应为b850431.asm。
3.程序调试完后,须由实验指导教师在机器上检查运行结果。
每个实验完成后,应写出实验报告。
实验报告的要求如下:
1设计说明:
用来说明设计的内容、硬件原理图。
它包括:
程序名、功能、原理及算法说明、程序及数据结构、主要符号名的说明等。
2调试说明:
便于学生总结经验提高编程及调试能力。
它包括:
调试情况,如上机时遇到的问题及解决办法,观察到的现象及其分析,对程序设计技巧的总结及分析等;程序的输出结果及对结果的分析;实验的心得体会等。
3程序框图。
4程序清单。
二、实验方法(汇编工具的使用)
(一)、用编辑程序建立asm文件
用文字处理软件编辑源程序。
常用编辑软件有:
EDIT.EXE、记事本、WORD等。
无论采用何种编辑工具,生成的文件必须是纯文本文件,且文件扩展名为asm。
下列程序完成两个字节数相加,并将和存于SUM变量中。
用编辑软件建立以abc.asm为文件名的源程序文件。
DATASEGMENT
BUFDB41H,6BH
SUMDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,BUF
ADDAL,BUF+1
MOVSUM,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
(二)、用汇编程序对源文件汇编产生目标文件obj
当源程序建立以后,用汇编程序masm对abc.asm源程序文件进行汇编,操作步骤如下:
(以下划线部分为用户键盘输入,“↙”代表回车,未划线部分为屏幕显示,小字部分为说明)。
C:
\MASM>masmabc↙
Microsoft(R)MacroAssemblerVersion5.00
Copyright(C)MicrosoftCrop1981-1985,1987,Allrightsreserved
Objectfilename[abc.obj]输入目标文件名,若采用括号[]中的名字,按↙
Sourcelisting[NUL.LST]若需要列表文件,输入文件名,按↙;如果不需要,直接按↙
Cross-reference[NUL.CRF]若需要交叉索引文件,输入文件名;如不需要,直接按↙
49758+451602Bytessymbolspacefree
0WarningErrors
0SevereErrors
回答上述问题后,汇编程序就对源程序进行汇编。
若汇编中发现源程序有语法错误,则列出错误语句所在行、错误代码及错误性质说明。
错误分警告错误(WarningErrors)和严重错误(SevereErrors)。
警告错误指汇编程序认为的一般性错误;严重错误指汇编程序认为无法进行正确汇编的错误,给出其错误个数,错误性质。
这时,就要对错误进行分析,找出问题和原因,然后再调用编辑程序对源程序进行修改。
修改后重新汇编,直到无错误为止。
除了用上述方法分步回答问题外,还可以用命令行的形式按顺序对相应提示予以回答,其格式是:
masm源文件名,目标文件名,列表文件名,交叉引用文件名;
其中文件名都不必给出扩展名,汇编程序会按照缺省情况使用或产生。
若只想对部分提示给出回答,则在相应位置用逗号隔开,若不想对剩余部分作答,则用分号结束。
例如以下命令经汇编后在当前目录下产生abc.obj文件,不产生lst文件和crf文件。
C:
\MASM>masmabc;↙
(三)、用连接程序link产生执行文件exe
C:
\MASM>linkabc↙
Microsoft(R)8086ObjectLinkerVersion5.00
Copyright(C)MicrosoftCrop1981-1985,1987,Allrightsreserved
RunFile[abc.exe]输入可执行文件名,若采用括号[]中的名字,按↙
ListFile[NUL.MAP]若需要映象文件,输入文件名,按↙;如果不需要,按↙
Libraries[NUL.LIB]若需要库文件,输入文件名,按↙;如果不需要库文件,按↙
Warning:
nostacksegment
上述给出的警告信息,表示用户程序没有定义堆栈段。
该警告不影响可执行程序的生成和正常运行,因为运行时会自动使用系统提供的缺省堆栈。
回答上述问题后,连接程序开始连接,若连接过程中有错,则显示错误信息。
此时,按错误提示,修改源程序,然后,回到第二步。
直至汇编无错误,连接无错误(错误NoStackSegment除外),在当前目录下产生可执行文件(exe),进入第四步。
同样也可以用命令行的形式按顺序对相应提示予以回答,其格式是:
link目标文件名,可执行文件名,内存映象文件名,库文件名;
其中不必给出扩展名,连接程序会按照缺省情况使用。
若只想对部分提示给出回答,则在相应位置用逗号隔开,若不想对剩余部分作答,则用分号结束。
例如以下命令行对abc.obj文件连接后在当前目录下产生abc.exe文件,其余文件均不需要。
C:
\MASM>linkabc;↙
从6.0版以后,Microsoft公司把MASM和LINK的功能由一个ML.EXE程序完成,只需一个命令就可以把源程序汇编并连接生成.EXE文件。
而不再需要分两步操作。
ML.EXE常用格式为:
ML[/F1][/Fm][/Fr][/c]源文件
其中,源文件名的扩展名(.asm)不能省,[]中的F必须大写,l,m,r,c必须小写,各可选项含义如下:
/F1:
产生.lst列表文件,缺省时不产生。
/Fm:
产生.map内存映象文件,缺省时不产生。
/Fr:
产生.sbr交叉参考文件,缺省时不产生。
/c:
只产生,obj目标文件,不产生.exe可执行文件。
缺省时只产生.exe文件。
例:
ML/Flabc.asm
以上命令会对已存在的abc.asm文件汇编且连接,并在当前目录下生成一个列表文件abc.lst和一个可执行文件abc.exe.
(四)、运行程序
设连接生成的执行文件为abc.exe,运行程序只需在DOS提示符下键入文件名即可,如:
C:
\MASM>abc↙
若程序能够运行但不能得到预期结果,则需要静态或动态查错。
静态查错即检查源程序,并对源程序进行修改,然后再汇编、连接、运行。
如果静态检查无法发现错误,则需动态查错。
(五)、程序调试及结果查看
这里使用DEBUG程序进行调试,DEBUG是一种使用广泛的强有力的汇编语言程序或二进制文件的调试工具。
设abc.asm经汇编及连接后,产生abc.exe文件,对它的调试操作如下:
1.把程序装入内存,并显示程序清单
C:
\MASM>debugabc.exe↙
-
此时,debug已将执行程序装入内存,可键入debug的有关命令调试程序。
-U↙用反汇编命令U列出程序清单
13E3:
0000B8E213MOVAX,13E2
13E3:
00038ED8MOVDS,AX
13E3:
0005A00000MOVAL,[0000]
13E3:
000802060100ADDAL,[0001]
13E3:
000CA20200MOV[0002],AL
13E3:
000FB44CMOVAH,4CH
13E3:
0011CD21INT21
……
2.查看数据段内容或查看寄存器内容
-DDS:
0000↙查看数据段内容
13E2:
0000416B000000000000-0000000000000000Ak..............
可见0000、0001单元内容为数据段定义的内容,分别为47H、6AH。
DEBUG状态下,缺省数制为十六进制数。
-R↙查看寄存器内容
AX=13E2BX=0000CX=0023DX=0000SP=0000BP=0000SI=0000DI=0000
DS=13D2ES=13D2SS=13E2CS=13E3IP=0003NVUPEIPLNZNAPONC
若查看指定寄存器内容,在R命令后跟上寄存器名,例:
-RAX↙查看寄存器AX的内容
AX13E2
:
↙ 若需修改AX的值,则键入新值;若无需更改,按回车。
3.连续运行程序,查看结果
-G↙或G=00013↙运行程序,0为运行起始地址,0013为断点地址
-DDS:
0000↙查看内存结果
13E2:
0000416BAC00000000000000000000000000
可见0002单元中内容已变为0000和0001两单元内容之和。
4.如果连续得不到正确结果,需分步跟踪运行
-T=0000↙0000这所需要运行指令的地址
AX=13E2BX=0000CX=0023DX=0000SP=0000BP=0000SI=0000DI=0000
DS=13D2ES=13D2SS=13E2CS=13E3IP=0003NVUPEIPLNZNAPONC
13E3:
00038ED8MOVDS,AX
显示单步执行后寄存器和标志状态之后,停在下一条指令开始处。
-T↙顺序运行下一条指令
5.退出DEBUG
-Q↙
实验二循环程序设计
一、实验目的与要求
1.熟悉汇编语言运行、调试环境及方法。
2.掌握循环程序的设计方法。
3.掌握显示输出DOS功能调用的使用方法。
4.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。
二、实验内容
(一)、在数据段中有从STRING单元开始存放的100个字节数据,编写程序要求将字符串中的大写字母转换为小写字母,并显示到屏幕上。
(二)、用表格形式显示字符:
按15行×16列的表格形式显示ASCII码为10H~FFH的所有字符。
每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII码为0)分隔。
分析与提示
1.显示字符可使用DOS功能调用的2号功能,使用方法如下:
MOVDL,需显示字符的ASCII码值
MOVAH,02H
INT21H
本实验中可把BL寄存器初始化为10H,显示完当前字符后使其加1以取得下一个字符的ASCII码。
若需显示的字符在BL寄存器中,则上述第二条指令为:
MOVDL,BL
2.显示空白符时,用其ASCII码值0置入DL寄存器。
每行结束时,用显示回车符(ASSII码值为0DH)和换行符(ASSII码值为0AH)来结束本行并开始下一行。
3.本程序为两重循环,需设置两个循环计数器,可用CL寄存器作为行计数器,初始值为15,CH寄存器作为列计数器,初始值为16。
三、实验报告要求
1.记录汇编源程序。
2.记录调试过程中遇到的问题和解决的方法。
实验三分支程序设计
一、实验目的与要求
1、掌握分支程序的设计方法。
2、掌握键盘输入DOS功能调用的使用方法。
2.掌握二进制转换为十进制的方法
二、实验内容
(一)、通过键盘输入9个16进制的个位数,数据存入BUFF缓冲区中,编写程序分别统计BUFF中小于8H和大于等于8H的个数,并分别存放到PLUS和MINUS单元中。
(二)、程序接收用户键入的一行字符(个数<80,字符串以回车结束),按字母、数字及其它字符分类统计,并以十进制数形式显示统计结果。
分析与提示
1、程序可使用DOS功能调用的0AH功能接收用户键入的字符,然后再逐个取出分类统计,大、小写字母均作为字母统计。
2、将统计结果以十进制数形式显示方法有两种,一是将统计结果除以10,商转换为ASCII码并显示,余数转换为ASCII码并显示(因字符总个数<80);二是在统计过程中,某类字符个数加1后,用DAA指令调整为十进制数,然后将统计结果从左到右每四位为一组,转换为ASCII码并显示。
3.程序的执行过程如下:
Pleaseinputstring:
a6BC&*1423g
Letter:
04
Digit:
05
Other:
02
三、实验报告要求
1.记录汇编源程序。
2.记录调试过程中遇到的问题和解决的方法。
实验四子程序设计
一、实验目的与要求
1.掌握子程序的设计方法。
2.掌握十六进制转换二进制、二进制转换为十进制的方法
二、实验内容
(一)、用子程序调用的形式,编写程序从键盘键入0~FFFFH之间的十六进制数,并存放到存储器中。
(二)、从键盘键入0~FFFFH之间的十六进制数,并转换成十进制在屏幕上显示出来。
分析与提示
1.采用子程序结构将据要求分成几个子程序实现。
子程序HEXIBIN实现从键盘取得十六进制数并转换为二进制数;子程序BINIDEC实现把此二进制数转换为十进制数并显示;另外用CRLF子程序显示回车和换行。
2.假设接收的十六进制数为a1a2a3a4,转换为二进制数的方法为:
(((0×16+a1)×16+a2)×16)+a3)×16+a4
可用BX存放部分和,初始化为0;每输入一位数,完成(BX)×16+该位数
3.二进制数转换为十进制数的方法是用该二进制数除以10000,商转换为ASCII码并用DOS功能调用的02H功能显示;再将余数除以1000,以次类推。
三、实验报告要求
1.记录汇编源程序。
2.记录调试过程中遇到的问题和解决的方法。
实验五简单I/O
一、实验目的与要求
1.熟悉ProteusISIS编辑环境及仿真调试方法。
2.掌握I/O程序设计方法。
3.在ProteusISIS环境下,仿真调试简单I/O程序。
二、实验内容
利用74LS245和74LS373作为简单输入输出接口,设计一个8路开关控制电路,实现对8路发光二极管的控制。
要求:
设计实验电路,在ProteusISIS环境下输入电路原理图,编写汇编源程序,并进行仿真调试,验证电路和程序的正确性。
参考实验电路如下:
三、实验报告要求
1.记录汇编源程序。
2.记录调试过程中遇到的软、硬件问题和解决的方法。
实验六8255A实验
一、实验目的与要求
1.熟悉ProteusISIS编辑环境及仿真调试方法。
2.掌握8255并行口芯片的工作原理及应用。
3.掌握翻转法识别矩阵键盘按键的工作原理。
4.掌握动态扫描LED数码管显示的工作原理。
5.在ProteusISIS环境下,仿真调试程序。
二、实验内容
利用8255A作为输入输出接口,设计一个矩阵键盘识别电路,采用翻转法获取按键键值,并以下面两种方法显示键值:
①利用8个发光二极管以二进制形式显示按键键值。
②在LED数码管上以十进制和十六进制两种形式显示按键键值,可利用开关切换,选择用哪种进制形式显示按键键值。
要求:
设计实验电路,在ProteusISIS环境下输入电路原理图,编写汇编源程序,并进行仿真调试,验证电路和程序的正确性。
矩阵键盘参考实验电路如下:
其中,按键的器件名是:
BUTTON,电阻的器件名是:
PULLUP,发光二极管的器件名是:
LED-GREEN。
三、实验报告要求
1.记录汇编源程序。
2.记录调试过程中遇到的软、硬件问题和解决的方法。
实验七8253定时器实验
一、实验目的
1.掌握8253定时器的工作原理及应用。
2.掌握8253定时器的编程方法。
二、实验原理及电路说明
如图所示是实验箱提供的定时器电路原理图。
8253的工作频率为0—2.6MHZ,所以,输入频率要在2.6MHZ以下。
图8253定时器电路原理图
三、实验内容及要求
1、利用8253定时器设计播放音乐的程序。
设计方案1:
用PC机实现,电路参考图如图7-1所示。
设计方案2:
在proteus环境下实现,电路参考图如图7-2所示。
任选一种方案
2、利用的开关模块、8255模块、8253定时器模块、LED指示灯、LED七段数码管及其他相关模块,设计一数字式秒表。
要求研究设计方案,完成实验电路的设计,画出电路原理图,完成控制程序的编程设计与调试并记录实验结果。
实验八模/数转换实验
一、实验目的
1.掌握逐次逼近A/D转换器的工作原理。
2.掌握ADC0809的工作原理及应用。
3.完成A/D转换的编程实验。
二、实验原理及电路说明
如图16所示是实验仪提供的模拟量发生器及ADC0809模块电路原理图。
模拟量发生器的电位器两边的插孔已经分别接好电源+5V和地,ADC0809的VREF+已接+5V,VREF-已接地,在实验过程中不需要再接线。
图16模拟量发生器及ADC0809模块电路原理图
三、实验内容及要求
利用实验箱提供的8255模块、8253定时器模块、LED指示灯、LED七段数码管及其他相关模块,设计一模拟电压采集系统,实现循环采集模拟通道信号,并显示转换后的数字量和根据数字量计算出的模拟电压值。
要求各实验小组研究设计方案,完成实验电路的设计,画出电路原理图,完成控制程序的编程设计与调试并记录实验结果。
附录
附录1常用DOS命令
1.显示目录命令DIR
该命令用来列出指定盘、指定目录或指定文件的目录。
命令格式有一下三种:
DIR[<盘符>][/P][/W]
DIR[<目录路径名>][/P][/W]
DIR[<文件路径名>][/P][/W]
其中/P表示分页显示;/W表示紧缩格式显示,即一行显示多个文件。
[]中内容为任选项;<>中内容必须输入。
文件路径名为:
[<盘符>][<路径>]<文件名>
目录路径名为:
[<盘符>]<路径>
文件名中可用通配符“*”和“?
”,“*”代表任意一串字符,“?
”代表任意一个字符。
例如:
若要显示D盘MASM目录下的所有扩展名为ASM文件的DOS命令为:
DIRD:
\MASM\*.ASM
2.文件改名命令REN
该命令用来更改文件名,格式为:
REN<旧文件路径名><新文件名>
旧文件路径名定义同第一点中的文件路径名,文件名中可用通配符“*”和“?
”。
例如:
若要将D盘MASM目录下的test.lst文件改名为test.asm,其DOS命令为:
REND:
\MASM\TEST.LSTTEST.ASM
3.文件复制命令COPY
该命令将一个或多个文件复制成副本,格式为:
COPY<文件路径名><文件路径名>
文件路径名定义同第一点中的文件路径名,文件名中可用通配符“*”和“?
”。
例如:
若要将D盘MASM目录下的所有扩展名为ASM的文件复制到C盘的EXAMPLE目录下,其DOS命令为:
COPYD:
\MASM\*.ASMC:
\EXAMPLE
若要将当前目录下的TEST.ASM文件复制成TEST1.ASM,其DOS命令为:
COPYTEST.ASMTEST1.ASM
4.文件删除命令DEL
该命令将一个或多个文件删除,格式为:
DEL<文件路径名>
文件路径名定义同第一点中的文件路径名,文件名中可用通配符“*”和“?
”。
例如:
若要将D盘MASM目录下的所有扩展名为ASM的文件删除,其DOS命令为:
DELD:
\MASM\*.ASM
5.建立子目录命令MD
该命令用于建立子目录,格式为:
MD<目录路径名>
目录路径名定义同第一点中的目录路径名。
例如:
MDSUBDIR1
MD\SUBDIR1\SUBDIR2
MD\USER1
其中第一条命令在当前目录下建一个名为SUBDIR1的子目录;第二条命令在子目录SUBDIR1中建立SUBDIR2子目录;第三条命令表示在根目录中建立USER1子目录。
6.删除子目录命令RD
该命令用于删除一个空目录,但不允许删除根目录和当前目录,格式为:
RD<目录路径名>
目录路径名定义同第一点中的目录路径名。
例如:
若要删除根目录下的USER1子目录,其DOS命令为:
RD\USER1
在删除USER1子目录前,子目录USER1必须为空,且USER1不是当前目录。
7.改变当前目录命令CD
该命令用于显示或改变当前目录,格式为:
CD[<目录路径名>]
目录路径名定义同第一点中的目录路径名。
例如:
CD\USER1
CD\
CD..
CD
其中第一条命令是将根目录下的USER1子目录设为当前目录;第二条命令是将根目录设为当前目录;第三条命令是将当前目录的上一级目录设为当前目录(即退回到上一级目录)。
第四条命令为显示当前目录。
8.设置可执行文件的搜索
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 教程