微机原理与系统设计实验6.docx
- 文档编号:4692542
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:18
- 大小:107.19KB
微机原理与系统设计实验6.docx
《微机原理与系统设计实验6.docx》由会员分享,可在线阅读,更多相关《微机原理与系统设计实验6.docx(18页珍藏版)》请在冰豆网上搜索。
微机原理与系统设计实验6
微机原理与系统设计实验指导书
电子科学与技术
福州大学物理与信息工程学院
目录
实验一数据传送程序1
实验二数据运算程序2
实验三键盘、显示器操作程序3
实验四8255接口实验5
实验五8253音频接口实验6
实验六0832小直流机转速实验9
实验七综合实验11
附:
DEBUG主要命令12
实验一数据传送程序
一、实验目的:
1、掌握传送类程序的基本设计框架;
2、掌握程序汇编、连接、调试的全过程;
3、掌握汇编程序Debug的使用及观察方式。
二、实验内容
已知有一个以“$”为标志结束的字符串存于以地址string1开始的内存中,编程将上述字符串存于以地址string2开始的内存中。
三实验步骤
用masm.exe实现正确编译,用link.exe实现正确连接,用debug.exe实现对程序的跟踪、调试、观察。
用debug.exe对程序调试、观察
-NC:
\JK\JK\CAI2000\STR.EXE
-L;调入文件
-T;单步运行
-T30;运行
-DDS:
0000;看结果
-Q;退出
四、编程提示
由于字符串未知不能用计数方式,要使用“$”来控制循环的退出。
参考程序(有部分错误,需要修改)
DATASEGMENT
STRING1DB'MNOPQXYZ$'
STRING2DB50DUP(?
)
DATAENDS
COEGSEGMENT
ASSUMEDS:
DATA,CS:
COEG
START:
MOVAX,DATA
MOVDS.AX
LEASI,STRING1
LEADI.STRING2
NEXT:
CMPBYTEPTR[SI],'$'
JZJSP
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
JMPNEXT
JSP:
MOVAH,4CH
INT21H
COEGENDS
ENDSTART
五思考问题
1单步运行的结果如何查看。
2Debug各常用指令T,D,Q,G,L,N的用法。
3各段寄存器的内容及指针的内容如何看。
4内存的查看及表示含义,字符串查看的方法。
5结果正确与否,如何验证?
6每一指令的具体用途?
实验二数据运算程序
一、实验目的:
1、掌握运算类程序的基本设计框架;
2、掌握汇编程序调试和验证方法;
3、掌握Debug的使用及观察方式。
二、实验内容
从内存num开始的单元中存放8个同学的某门课的考试成绩,试编写程序求出该门课的总成绩及平均成绩。
三、实验步骤:
用debug.exe对程序调试、观察。
-NC:
\JK\JK\CAI2000\STR.EXE
-L;调入文件
-T
-T30(G00000030);运行
-DDS:
0000H;看结果
-Q;退出
四、编程提示
由于循环次数已知,可用movcx,08h;loopsum方式循环。
注意:
除法运算、移位运算、累加和的进位等.
参考程序
DATASEGMENT
numDw1,2,3,4,5,6,7,8
sumdw?
avedw?
DATAENDS
STACKSEGENT
STACKENDS
COEGSEGMENT
ASSUMEDS:
DATA,SS:
STACK,CS:
COEG
START:
MOVAX,DATA
MOVDS.AX
LEASI,NUM
MOVCX,08H
MOVAX,0H
LOP:
ADDAX,[SI]
INCSI
INCSI
LOOPLOP
MOVSUM,AX
SHRAX.1
SHRAX,1
SHRAX,1
MOVAVE,AX
MOVAH,4CH
INT21H
COSEGENDS
ENDSTART
五思考要求
1如何验证结果的正确及运行过程中的错误。
2比较字节与字的存储。
3修改程序,求出最大值,放入内存。
4内存的查看及表示含义,数的查看。
实验三键盘、显示器操作程序
一、实验目的:
1、掌握EXE文件的执行;
2、掌握汇编程序的DOS功能调用;
3、掌握汇编程序的键盘和显示器的使用。
二、实验内容
从键盘上输入5个字符如ABCDE,每组中间用空格分割后加括号输出
三、实验步骤:
执行exe程序,直接观察结果。
四、编程提示
验证结果的正确(通读程序,对程序修改,需要增加指令后,才能看到结果,然后再按要求修改程序)
DATASEGMENT
NUMDB'<',13DUP(?
),'>','$'
DATAENDS
STACKSEGMENT
STACKENDS
COSEGSEGMENT
ASSUMEDS:
DATA,SS:
STACK,CS:
COSEG
START:
MOVAX,DATA
MOVDS,AX
LEASI,NUM
INCSI
MOVCX,05H
LOP:
MOVAH,01H
INT21H
MOV[SI],AL
INCSI
MOV[SI],20H
INCSI
LOOPLOP
DECSI
MOV[SI],'>'
LEADX,NUM
MOVAH,4CH
INT21H
COSEGENDS
ENDSTART
五问题思考
1比较前两次程序运行如何看结果。
2理解程序中内存分配的意思。
3结果正确与否?
实验四8255接口实验
一、实验目的:
1、掌握汇编程序的接口8255原理及使用方法
2、掌握接口实验箱的使用方法。
3、掌握实验平台对外部接口的控制观察方式。
二、实验内容
通过实验箱外接8255芯片用键盘控制小灯,让小灯显示,设定8255的PA口为开关量输入,PB口为开关量输出,要求能随时将PA口的开关状态通过PB口的发光二极管显示出来。
三、实验步骤:
1、查看实验箱的内的组成部件,连线实验箱电路,理解外接电路。
2、程序跟踪,观察每步结果,理解过程。
3、修改程序,达到要求。
四实验电路及连线
将K1-K8用连线连至8255的PA0-PA7,将DL1-DL8用连线连至8255的PB0-PB7,8255CS用连线连至译码处的200H-207H这个插孔。
五编程提示
1在Debug下使用IN,OUT指令对外部接口操作,验证硬件的连接。
.-O200,39
-O201,FF
2注意8255的各个端口的地址及初始化操作
3编程验证结果的正确。
参考程序(部分有错,地址错误)
DATASEGMENT
DATAENDS
STACKSEGMENTSTACK
STADW50DUP(?
)
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVDX,209H;设置为A口输入,B口输出
MOVAL,90H
OUTDX,AL
BG:
MOVDX,208H;将A口状态从B口输出
INAL,DX
MOVDX,202H
OUTDX,AL
JMPBG
CODEENDS
六问题思考
1理解程序的意思及调试方法
2修改程序,使K1-K8中的K1键合上时,其余键打开时,退出程序。
3输入使小灯循环亮的程序。
注意延时子程序的调用。
实验五8253音频接口实验
一、实验目的:
1、掌握了解定时器8253的硬件连接方法及时序关系。
掌握8253的各种模式编程及原理
2、了解如何利用PC机内部电路产生音乐的方法.
3、了解音乐产生的基本原理。
二、实验内容
通过计算机的内部电路的8253定时芯片时芯片及8255芯片,编程使计算机的数字键1,2,3,8等作为电子琴按键产生相应的音阶。
三、实验原理
1、对于音乐的每个音阶都有确定的频率,能产生不同的音符。
2、利用PC机内部的8253定时芯片产生一个方波的数据,就可以发出不同的声音。
利用PC机内部的8255芯片可以控制8253是否工作。
不同频率的区别,可通过调节8253转换器输出数据的时间间隔,例如:
发"1"频率为261.1HZ,周期为1/261.1=3.83ms,输出数据的时间间隔为3.83ms/32=0.12ms。
按下某键后发音时间的长短可以由发出的方波的个数多少来控制
四、实验步骤:
1、看懂电路,理解电路连接原理。
2、理解程序,了解不同按键的代码
3、修改程序,使键盘控制音乐达到要求。
五、实验电路
六编程提示
datasegment
Freqdw131,147,165,175,196,220,247,262
dw262,294,330,349,392,440,492,524
dw524,588,660,698,784,880,988,1048
dataends
codesegment
assumecs:
code,ds:
data
stgo:
movax,data
movds,ax
loop0:
movsi,0
loop1:
movah,0
int16h
cmpal,1bh
jedone
cmpal,2ch
jeloop0
cmpal,2eh
jnenext1
movsi,16
jmploop1
next1:
cmpal,2fh
jnenext2
movsi,32
jmploop1
next2:
subal,30h
jznext3
decal
cmpal,8
jaeloop1
movbl,al
movbh,0
shlbx,1
movcx,freq[bx][si]
moval,0b6h
out43h,al;PC8253地址
movdx,12h
movax,3280h
divcx
out42h,al;PC8253地址
moval,ah
out42h,al;
inal,61h
oral,3
out61h,al;PC8255地址
jmploop1
next3:
inal,61h;PC8255地址
andal,0fch
out61h,al
jmploop1
done:
movah,4ch
int21h
codeends
endstgo
七问题
1哪些按键能影响音乐,如何影响。
2对照硬件,理解整个软件过程。
3修改程序,使ASD等按键发出1,2,3的声音。
实验六0832小直流机转速实验
一、实验目的:
1、掌握0832性能及编程方法
2、掌握接口实验箱的使用方法。
3、掌握直流电机的控制方法。
二、实验内容
通过实验箱外接0832芯片及直流电机,利用0832输出一串脉冲,经放大后驱动小直流电机,利用开关K1-K5控制改变脉冲的电平及持续时间,达到使电机加速减速的目的。
三、实验原理
小直流电机的转速是由输出脉冲的占空比决定,正向占空比越大,转速越快,反之越慢。
再本实验中模拟量的输出为双级性,当输出数字输出数字为0H时,输出为0,当输出数字大于0H时,输出为正,本实验的输入数字量只有2个(0H,FFH),通过不同的延迟时间,达到改变小电机转速目的。
四实验步骤:
1、按要求连接实验箱电路,理解外接电路。
2、测试不同输出电压时直流电机的转速,达到要求。
五实验电路及连线
用导线将0832片选信号CS接至138译码200H-207H,将Aout接直流电机的输入端.将8255的片选信号CS接至208H-20FH,将PA0-PA5接K0-K5.
六、编程提示
Port1equ290h
Port2equ28bh
port3equ28ah
datasegment
buf1dw?
buf2dw?
dataends
codesegment
assumecs:
code
start:
movdx,port2
moval,8bh
outda,al
moval,80h
movdx,port1
outdx,al
movah,1
int16h
jeintk
movah,4ch
int21h
intk:
movdx,port3
inal,dx
testal,01h
jnzk0
testal,02h
jnzk1
testal,04h
jnzk2
testal,08h
jnzk3
testal,10h
jnzk4
testal,20h
jnzk5
jmplll
k0:
movbuf1,0400h
movbuf2,0330h
delay:
movcx,buf1
delay1:
loopdelay1
moval,0ffh
movdx,port1
outda,al
movcx,buf2
delay2:
loopdelay2
jmplll
k1:
movbuf1,0400h
movbuf2,0400h
jmpdelay
k2:
movbuf1,0400h
movbuf2,0500h
jmpdelay
k3:
movbuf1,0400h
movbuf2,0600h
jmpdelay
k4:
movbuf1,0400h
movbuf2,0700h
jmpdelay
k5movbuf1,0400h
movbuf2,0800h
jmpdelay
codeends
endstart
七提问题
1,理解程序的意思及调试方法
2,修改程序,使转速加快或减速.
实验七综合实验
一、实验目的:
1、灵活利用所学的知识,编写出具有一定功能的程序
2、深入利用接口实验箱的各种器件设计程序。
3、应用计算机的键盘、显示器和声音交互的功能。
二、实验内容
通过实验箱及计算机的键盘或显示器,利用所学的程序,编写出具有一定功能的综合实验的内容。
实验内容必须包含硬件控制。
三、实验要求
(1)设计具体的实验内容
(2)硬件连接
(3)软件实现
(4)结果验证
(5)书写设计报告(包括目的,内容,硬件,软件,结果,使用器件等)
附:
DEBUG主要命令
DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
一、DEBUG程序的调用
在DOS的提示符下,可键入命令:
C:
\DEBUG[D:
][PATH][FILENAME[.EXT>[PARM1][PARM2]
其中,文件名是被调试文件的名字。
如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。
如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。
命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。
在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。
二、DEBUG的主要命令
1、显示存储单元的命令D(DUMP),格式为:
_D[address]或_D[range]
例如,按指定范围显示存储单元内容的方法为:
-d100120
18E4:
0100c70604023801c706-06020002c7060802G...8.G.....G...
18E$:
01100202bb0402e80200-CD20505156578B37..;..h..MPQVW.
18E4:
01208B
其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。
这里没有指定段地址,D命令自动显示DS段的内容。
如果只指定首地址,则显示从首地址开始的80个字节的内容。
如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。
2、修改存储单元内容的命令有两种。
·输入命令E(ENTER),有两种格式如下:
第一种格式可以用给定的内容表来替代指定范围的存储单元内容。
命令格式为:
-Eaddress[list]
例如,-EDS:
100F3'XYZ'8D
其中F3,'X','Y','Z'和各占一个字节,该命令可以用这五个字节来替代存储单元DS:
0100到0104的原先的内容。
第二种格式则是采用逐个单元相继修改的方法。
命令格式为:
-Eaddress
例如,-EDS:
100
则可能显示为:
18E4:
010089.-
如果需要把该单元的内容修改为78,则用户可以直接键入78,再按"空格"键可接着显示下一个单元的内容,如下:
18E4:
010089.781B.-
这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。
·填写命令F(FILL),其格式为:
-Frangelist
例如:
-F4BA:
01005F3'XYZ'8D
使04BA:
0100~0104单元包含指定的五个字节的内容。
如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。
3)检查和修改寄存器内容的命令R(register),它有三种格式如下:
·显示CPU内所有寄存器内容和标志位状态,其格式为:
-R
例如,-r
AX=0000BX=0000CX=010ADX=0000SP=FFFEBP=0000SI=0000DI=0000
DS=18E4ES=18E4SS=18E4CS=18E4IP=0100NVUPDIPLNZNAPONC
18E4:
0100C70604023801MOVWORDPTR[0204],0138DS:
0204=0000
·显示和修改某个寄存器内容,其格式为:
-Rregistername
例如,键入
-RAX
系统将响应如下:
AXF1F4:
即AX寄存器的当前内容为F1F4,如不修改则按ENTER键,否则,可键入欲修改的内容,如:
-Rbx
BX0369:
059F
则把BX寄存器的内容修改为059F。
·显示和修改标志位状态,命令格式为:
-RF系统将响应,如:
OVDNEINGZRACPECY-
此时,如不修改其内容可按ENTER键,否则,可键入欲修改的内容,如:
OVDNEINGZRACPECY-PONZDINV
即可,可见键入的顺序可以是任意的。
4)运行命令G,其格式为:
-G[=address1][address2[address3…>
其中,地址1指定了运行的起始地址,如不指定则从当前的CS:
IP开始运行。
后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。
5)跟踪命令T(Trace),有两种格式:
·逐条指令跟踪
-T[=address]
从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。
如未指定地址则从当前的CS:
IP开始执行。
·多条指令跟踪
-T[=address][value]
从指定地址起执行n条指令后停下来,n由value指定。
6)汇编命令A(Assemble),其格式为:
-A[address]
该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。
必须注意:
DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。
7)反汇编命令U(Unassemble)有两种格式。
·从指定地址开始,反汇编32个字节,其格式为:
-U[address]
例如:
-u100
18E4:
0100C70604023801MOVWORDPTR[0204],0138
18E4:
0106C70606020002MOVWORDPTR[0206],0200
18E4:
010CC70606020202MOVWORDPTR[0208],0202
18E4:
0112BBO4O2MOVBX,0204
18E4:
0115E80200CALL011A
18E4:
0118CD20INT20
18E4:
011A50PUSHAX
18E4:
011B51PUSHCX
18E4:
011C56PUSHSI
18E4:
011D57PUSHDI
18E4:
011E8B37MOVSI,[BX]
如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
·对指定范围内的存储单元进行反汇编,格式为:
-U[range]
例如:
-u10010c
18E4:
0100C70604023801MOVWORDPTR[0204],0138
18E4:
0106C70606020002MOVWORDPTR[0206],0200
18E4:
010CC70606020202MOVWORDPTR[0208],0202
或
-u100112
18E4:
0100C70604023801MOVWORDPTR[0204],0138
18E4:
0106C70606020002MOVWORDPTR[0206],0200
18E4:
010CC70606020202MOVWORDPTR[0208],0202
可见这两种格式是等效的。
8)命名命令N(Name),其格式为:
-Nfilespecs[filespecs]
命令把两个文件标识符格式化在CS:
5CH和CS:
6CH的两个文件控制块中,以便在其后用L或W命令把文件装入存盘。
filespecs的格式可以是:
[d:
][path]filename[.ext]
例如,
-Nmyprog
-L
-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 系统 设计 实验