北航非电类微机原理实验指导书.docx
- 文档编号:9705852
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:71
- 大小:608.33KB
北航非电类微机原理实验指导书.docx
《北航非电类微机原理实验指导书.docx》由会员分享,可在线阅读,更多相关《北航非电类微机原理实验指导书.docx(71页珍藏版)》请在冰点文库上搜索。
北航非电类微机原理实验指导书
非电类工科专业
微机原理实验指导书
(x86系列)
北京航空航天大学
前言
本指导书是微机原理实验配套用书,主要实验内容围绕X86系列微机,以汇编语言和常用的硬件接口芯片为主要内容。
在实验内容的安排上,包括汇编基础与硬件基础、接口芯片的基本实验和汇编语言与接口芯片的综合实验,引导学生由浅入深逐渐熟悉和掌握汇编语言的知识,并以汇编语言为工具,通过实验编程,学习常用接口芯片的典型应用。
每章包含不同的实验,每个实验有不同的实验内容,教师可以根据实际情况,选择不同的实验内容组合,为了便于教师指导学生实验,随该实验指导书编写了相应的实验程序,供教师参考。
本实验指导书以清华大学的TPC-2003A微机原理接口试验箱为硬件平台,所有的硬件接口实验都是在该硬件平台上编程、调试完成的。
本实验指导书主要是以我校工科非电类专业学生为主要对象。
北京航空航天大学
自动化学院电工电子中心
袁海斌
2009年7月
目录
第一章汇编基础与硬件基础1
实验一汇编语言DEBUG应用基础1
实验内容1.1.1:
DEBUG汇编基础1
实验内容1.1.2:
指令的运行调试-数据传输与算术/逻辑运算1
实验内容1.1.3:
DEBUG环境下编程-数据传输与算术/逻辑运算2
实验报告3
实验二TPC-2003A集成开发环境编程5
实验内容1.2.1:
汇编程序编辑和编译执行-5
实验内容1.2.2:
分段存储结构和数据变量的定义5
实验内容1.2.3:
汇编程序设计---数据串操作6
实验内容1.2.4:
汇编程序设计--循环和分支程序7
实验内容1.2.5:
汇编程序设计---子程序及其调用7
实验内容1.2.6:
汇编程序设计--DOS中断调用8
实验内容1.2.7:
汇编程序设计--BIOS中断调用9
实验报告11
实验三TPC-2003A接口箱系统硬件及逻辑电路13
实验内容1.3.1:
地址译码13
实验内容1.3.2:
I/O译码电路应用-LED控制14
实验报告115
实验报告217
附录119
附录1.1常用DEBUG命令及上机调试19
附录1.2MASM5.0编译软件介绍21
附录1.3TPC2003A集成开发环境介绍22
附录1.4TPC2003A硬件介绍23
附录1.5TPC基地址的查询25
第二章基础实验26
实验一8253接口芯片基础26
实验内容2.1.1:
8253用于手动脉冲计数27
实验内容2.1.2:
8253用于分频28
实验二8255接口芯片基础28
实验内容2.2.1:
8255作为基本输入输出29
实验内容2.2.2:
8255方式0的应用-红绿灯控制30
实验内容2.2.3:
8255对8253GATE控制31
实验内容2.2.4:
手动脉冲计数输出显示32
实验报告134
第三章综合实验36
实验一AD/DA接口芯片基础36
实验内容3.1.1:
ADC0809的数据采集功能37
实验内容3.1.2:
DAC0832的波形输出功能39
实验二8253/8255综合实验40
实验内容3.2.1继电器控制40
实验内容3.2.2:
自动计数输出显示41
实验内容3.2.3:
直流电机转速显示与计算42
实验三8253/8255/DAC0832综合实验43
实验内容3.3.1:
直流电机转速控制43
实验内容3.3.2:
直流电机自动测速44
实验四8255综合实验46
实验内容3.4.1:
步进电机控制46
附录347
附录3.1步进电机工作原理47
第四章子程序及中断调用参考48
程序1:
延时子程序48
程序2:
程序执行/结束控制48
程序3:
十六进制数显示子程序48
程序4:
数码管显示子程序48
程序5:
程序执行/结束控制49
第一章汇编基础与硬件基础
实验一汇编语言DEBUG应用基础
实验目的:
通过本实验,熟悉汇编语言的上机环境,学习采用DEBUG练习各种指令,能够在DEBUG环境下对简单的指令实现输入、动态调试,单步运行,并查看各寄存器、存储器单元的内容及汇编指令的机器码;认识并理解存储器分段存储特性,加深对汇编语言和机器指令的了解。
掌握简单DOS系统功能和BIOS的调用方法。
预习内容:
本章附录1.18086/8088指令系统
实验设备:
PC机(XP操作系统)
实验内容1.1.1:
DEBUG汇编基础
1、在XP操作系统下,选择开始-运行,在弹出窗口输入cmd,进入虚拟DOS环境,按Alt+TAB键,让DOS屏幕窗口最大化,
2、在DOS提示符下输入debug,回车,
3、练习各种常用命令,完成下列操作:
(1)显示所有寄存器的指令,并记录各寄存器中的值;将DS、ES段寄存器值修改为3000H和4000H;
(2)显示存储单元4000H:
1000H开始的16个字节单元的内容,并用DEBUG命令将16个字节连续存储单元的内容修改为‘0123456789ABCDEF’;
(3)在DEBUG下用数据传输指令将4000H:
1000H的一个字长的存储单元内容传给AX寄存器;观察指令的机器码,该指令占用几个字节,写出用机器码表示的操作码和操作数;
(4)在DEBUG下输入MOVAX,0A20H指令,查看对应的机器码,为几个字节?
并将指令机器码写入代码段的2000H:
0100H开始的存储单元;然后单步执行该指令,验证AX寄存器的值是否为0A20H;
(5)整理实验结果。
实验内容1.1.2:
指令的运行调试-数据传输与算术/逻辑运算
1.在DEBUG环境下输入下列指令,要求指令代码段从逻辑地址3000H:
100H开始存放并单步执行;
ADDAX,BX
INCBX
XCHGAX,[BX]
MOVAH,35
MOVAL,48
SHLAL,1
MOVDX,[2000+BX]
DECDX
XCHGAX,DX
XORAH,FF
XORDX,DX
2.输入并练习常用指令,完成下列实验要求
(1)用DEBUG命令显示输入的各条指令的机器码;
(2)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况;并注意标志位有无变化。
(3)AH的各位与原来的各位是相反的吗,DX的值为多少?
(4)设计几条算术运算指令或逻辑运算指令指令,实现SF/CF/OF/ZF标志位的变化;
实验内容1.1.3:
DEBUG环境下编程-数据传输与算术/逻辑运算
1、进入DEBUG环境,输入下列指令;完成下列实验要求。
(注意在DEBUG环境下十六进制数后不加H)
MOVSI,100
MOVDI,200
MOVAX,1000
MOVDS,AX
MOVAX,2000
MOVES,AX
MOVCX,5
CLD
REPMOVSB
MOVAX,4C00H
INT21H
(1)在DS段1000H:
100H开始,装入“BEIHANGUIVERSITY”;
(2)单步运行,注意DS段和ES段中存储单元的变化,各条指令对应的机器码及操作数是什么?
(3)程序运行前后,在ES段2000H:
200H处开始的5个单元内容有变化吗?
(4)思考该程序段的功能。
实验报告
实验日期:
年月日班级:
学号:
姓名:
实验内容:
1、实验作业:
将你的姓名字符串送到以班级:
学号为逻辑地址的内存单元中。
(班级只取前四位数字)
2、实验分析及设计
3、实验数据及运行结果观察(包括程序运行过程及结果截图粘贴)
4、结果分析及体会
5、流程图及程序清单
实验二TPC-2003A集成开发环境编程
实验目的:
通过本实验,熟悉TPC-2300A的集成汇编环境和应用,能够在IDE下编写完整的程序,并能够掌握程序的动态调试,单步运行和排错功能,掌握TURBOASM/TURBODEBUGGER的使用方法。
预习内容:
附录1.2、附录1.3、指令系统、汇编程序语法
实验设备:
PC机(XP操作系统),TPC-2003A软件集成开发环境
实验内容1.2.1:
汇编程序编辑和编译执行-
1.点击计算机屏幕上的TPC2003A集成开发环境图标,进入TPC-2003A的集成开发环境,输入下列程序,
assumecs:
mycode
mycodesegment
buffdw5dup(3042H),10H,00H
movax,2000h
movds,ax
movbx,6
moval,[bx]
movah,0
movdx,0
movcx,5
movsi,sizebuff
s:
adddx,ax
loops
movax,4c00h
int21h
mycodeends
end
2.编译,连接,生成可执行文件.exe,进入ASM调试菜单,观察所产生的机器指令,并思考完成:
(1)用buffdw10DUP(1234H),10H,00H所定义的存储单元地址是多少?
,是在数据段2000h:
0000h地址开始的存储单元处吗?
(2)机器指令又从那些存储单元开始存放?
(3)程序段当前的IP值是多少,所对应的指令的机器码是多少?
是指令movax,2000h所编译后的机器码吗?
程序能否正常运行?
(4)要使程序从movax,2000h指令处开始运行,应该如何做?
并验证结果。
实验内容1.2.2:
分段存储结构和数据变量的定义
1、在实验内容1的基础上,添加语句,如下:
assumecs:
mycode,ds:
mydata
mydatasegment
buffdb5dup(12H),10H,00H
tmpdb5dup(?
)
mydataends
mycodesegment
start:
movax,mydata
movds,ax
movbx,6
moval,[bx]
movah,0
movdx,0
movsi,sizebuff
adddx,[si+5]
movax,4c00h
int21h
mycodeends
endstart
2、重新编译、连接,并调试,并思考:
(1)buffdb5dup(12H),10H,00H所定义的数据存放在那些单元?
编译后的机器指令又放在那些内存单元?
数据段和代码段是分开的吗?
(2)程序段当前的IP值是多少,所对应的指令的机器码是多少?
是指令movax,0ffffh所编译后的机器码吗?
程序能否正常运行?
(3)分析原因,整理实验结果。
3、实验作业:
编写程序统计字符串str的字符个数,存于counts单元。
字符串以“$”为结束符,长度小于255个字符。
实验内容1.2.3:
汇编程序设计---数据串操作
1、编译下列程序,并思考程序的功能
assumecs:
mycode,ds:
mydata
mydatasegment
mystrdb'CHINESE00'
mydataends
mycodesegment
start:
movax,mydata
movds,ax
moves,ax
easi,mystr
movdi,offsetmystr+8
movcx,7
con:
moval,byteptr[si+6]
addal,20h
movbyteptr[di],al
decsi
decdi
loopcon
movdl,0
mycodeends
endstart
2、
(1)思考loop指令中con中的值是多少,是如何得到的?
分析程序的功能,并验证;
(2)画出程序流程框图,整理实验结果。
3、实验作业:
将buffa开始的50个连续字节单元数传送到buffb开始的连续字操作数单元(不考虑数据块的重叠),用数据串传送指令实现。
实验内容1.2.4:
汇编程序设计--循环和分支程序
1、在TPC-2300A环境下编译下列程序,并通过调试,思考程序的功能
assumecs:
mycode,ds:
mydata
mydatasegment
xdb02h,80h,42h,0a1h,31h
mydataends
mycodesegment
start:
org100h
movax,mydata
movds,ax
movcx,5
movdi,150h
bbb:
movbl,0ffh
moval,[di]
testal,80h
jnsdone
moval,bl
negal
done:
shlal,1
mov[di+0ah],al
incdi
loopbbb
movdx,01
mycodeends
endstart
2、
(1)jnsdone和loopbbb指令中的done及bbb是多少,如何得到的?
(2)程序代码从什么内存单元开始存放;
(3)在执行testal,80h指令时,对02h,80h,42h,0a1h,31h,SF的标志如何变化?
(4)画出该程序流程框图;
(5)修改上述程序,使程序功能为:
统计变量X所定义的数中正数和负数的个数;
(6)整理实验结果。
3、实验作业:
在字节存储单元d1、d2和d3中存有三个不相等无符号数,由大到小排列后存于d1、d2、d2,注意使用无符号数比较时的转移指令。
实验内容1.2.5:
汇编程序设计---子程序及其调用
1、在TPC-2300A环境下编译下列程序,并通过调试,思考程序的功能
mydatasegment
datadb-20h,34h,21h
absmdb0
mydataends
mycodesegment
assumecs:
mycode,ds:
mydata
start:
movax,mydata
movds,ax
movsi,offsetdata
movcx,3
rept:
moval,[si]
callsubabs
mov[si],al
incsi
looprept
movah,4ch
int21h
mycodeends
endstart
subabsprocnear
andal,al
jnsbck
negal
bck:
ret
subabsendp
2、
(1)子程序的功能是什么?
(2)子程序的入口参数是什么?
3、实验作业:
修改程序,使程序的功能为:
计算3个带符号数的绝对值之和,三个数长度为字类型,要求用子程序计算绝对值,用主程序实现累加;整理实验结果。
实验内容1.2.6:
汇编程序设计--DOS中断调用
1、在TPC-2300A环境下编译下列程序,并通过调试,思考程序的功能
assumecs:
code,ds:
data
mydatasegment
stringdb‘helloworld’,‘$’
mydataends
mycodesegment
start:
movax,data
movds,ax
leadx,string
movah,9
int21h
movah,4ch
int21h
mycodeends
endstart
2、
(1)程序中都调用了那些DOS中断?
所定义的字符串在数据段的存储地址是多少?
(2)leadx,string指令执行后DX寄存器的值是多少,字符串的首地址是多少,二者相同吗?
(3)程序中DOS中断起什么功能?
(4)整理实验结果。
3、实验作业:
利用DOS中断6号功能调用,在屏幕上显示字符A~Z。
提示:
6号功能调用可做输入输出,入口参数:
如果DL=0FFH,表示调用输入功能,否则,表示将DL中的ASCII码输出到屏幕。
出口参数:
ZF=1表示无字符可读,ZF=0表示读取字符,AL为输入字符的ASCII码;输出时,无出口参数。
实验内容1.2.7:
汇编程序设计--BIOS中断调用
在TPC-2300A环境下编译下列程序,并通过调试,思考程序的功能
datasegment
stringdb'helloWorld!
','$'
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
moval,0
movbh,10h
movah,6
movcx,0
movdh,24
movdl,79
int10h
movah,2
movbh,0
movdh,10
movdl,30
int10h
moval,'a'
movcx,20
movbh,0
movbl,47h
movah,9
int10h
movah,4ch
int21h
codeends
endstart
(1)程序中都调用了那些BIOS中断?
所定义的字符串在数据段的存储地址单元是多少?
(2)运行程序,由程序运行结果思考程序的功能;
(3)去掉程序中的数据段,使程序仍然能够保持原来的功能;
(4)改变程序的功能,使程序在屏幕中心显示8086;
(5)整理实验结果。
实验报告
实验日期:
年月日班级:
学号:
姓名:
实验内容:
1、指定实验内容
2、实验分析及设计
3、实验数据及运行结果观察(包括程序运行过程及结果截图粘贴)
4、结果分析及体会
5、流程图及程序清单
实验三TPC-2003A接口箱系统硬件及逻辑电路
实验目的:
了解TPC-2300A实验硬件设备的结构、基本原理和功能,了解设备上各种硬件芯片及元件的类型、功能和作用,掌握测试并检查TPC-PCI总线转接卡地址,掌握74LS138译码器和I/O地址译码电路的工作原理,掌握通过IN/OUT指令执行I/O操作的方法。
了解实验接口箱上的逻辑电平开关电路、单脉冲电路、LED电路原理及功能。
实验设备:
PC机(XP操作系统),TPC-2003A实验接口箱,TPC-2003A软件集成开发环境,连接导线,万用表,示波器
实验内容1.3.1:
地址译码
1、图1.3.1.1是试验箱所用到的译码电路,所有的芯片的片选信号都由该译码电路的Yo-Y7提供,分析该译码电路图,确定Y0-Y7分别有输出时,地址线A0-A9的电平状态应该是多少,该地址线输出的电平状态即为I/O芯片的基地址;
2、当Y0~Y7端连接有I/O接口芯片时,就可以使用IN/OUT端口操作指令控制对I/O芯片的读写访问;如下:
INal,port或OUTport,al
其中port即为芯片的端口地址,具体为port=PC卡ioport+(Y0~Y7被选中时的A9~A0地址值),参考附录1.5.TPC基地址设定;
3、分析Y0~Y7端口接I/O芯片时的端口地址A0-A9的值,整理结果,完成实验报告。
提示:
首先分析74LS138S正常工作时使能端电平要求,再结合逻辑门电路U1/U2A/U2B/U2C/U2D/可得到A6~A9的电平信号,再由Y0~Y7输出确定A5~A4;
图1.3.1.174LS138译码器原理
实验内容1.3.2:
I/O译码电路应用-LED控制
(1)预习附录1.5TPC基地址设定,并对照图1.3.2.1,在接口实验箱找出各元件及接口位置,其中74LS74为双D触发器,使用触发器1时的引脚主要是2、3、5、6,74LS138为地址译码器。
(2)译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:
280H~287H,Y1:
288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。
(3)查找出PCI板卡的IO基地址,计算出译码地址,
(4)连线方式为:
CD----2A8H-2AFH(Y5);SD----+5V;D----+5V;Q----L7;CLK----2A0H-2A7H(Y4)
(5)假设此处查出的PCI板卡IO基地址为C400H,则在DEBUG环境下输入下列指令,并单步调试,观察LED7的变化,为了防止片选电平输出太快而不容易观察,在两次OUT指令之间调用延时程序延时;
MOVDX,0C420H;C400H-280H+2A0H,
OUTDX,AL(或INAL,DX指令,此时Y4输出一个负脉冲)
MOVDX,0C428H;C400H-280H+2A8H
OUTDX,AL(或INAL,DX,此时,Y5输出一个负脉冲。
)
(6)在TPC-2003A环境下编程,能够实现LED7连续闪烁(亮-灭),没有键按下时,持续显示,如有任意键按下,退出程序;通过实验验证结果,画出程序运行框图。
ioportequ0c000h-0280h
outport1equioport+(Y4地址值)
outport2equioport+(Y5地址值)
不同的计算机,分配给PCI卡的IO地址不同,因此,需要了解所用计算机的ioport,见附录1.5说明。
(7)画出实验流程图,写出已调试好的程序清单,并加上注释。
图1.3.2.1I/O译码实验电路图
实验报告1
实验日期:
年月日班级:
学号:
姓名:
实验内容:
1、指定实验:
对图1.3.1译码电路分析,写出在Y0~Y7端口分别被选中时的A9~A0的地址值,最后得到20位的端口地址值。
(不同的机器有所不同,请写出你所实验机器的端口地址值)。
2、实验分析及设计
3、实验数据及运行结果观察(包括程序运行过程及结果截图粘贴)
4、结果分析及体会
5、流程图及程序清单
译码输出
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
地址范围
Y0
X
X
X
Y1
X
X
X
Y2
X
X
X
Y3
X
X
X
Y4
X
X
X
Y5
X
X
X
Y6
X
X
X
Y7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北航 非电类 微机 原理 实验 指导书