微机原理及应用实验报告.docx
- 文档编号:9354569
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:26
- 大小:1.52MB
微机原理及应用实验报告.docx
《微机原理及应用实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理及应用实验报告.docx(26页珍藏版)》请在冰豆网上搜索。
微机原理及应用实验报告
实验报告
课程名称
实验日期
学生专业
学生学号
学生姓名
教师姓名
成绩
南京理工大学机械工程学院
实验一DEBUG命令及其操作
一、实验目的
1.熟练掌握debug的常用命令,学会用debug来调试程序。
2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。
3.掌握各种寻址方法以及简单指令的执行过程。
二、实验要求
1.实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。
2.本实验要求在PC机上进行。
3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。
三、实验内容
●实验内容1:
学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。
答:
1运行结果:
.
2.小结debug常用命令及使用体会
a汇编
d显示内存单元内容
e修改单元内存内容
g执行命令
t单步(或多步)调试
n指定文件路径文件名(含扩展名)
u反汇编
r查看寄存器值及修改
l加载程序
w写盘命令
体会:
●实验内容2
设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。
请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
实验报告要求:
1.写出完成上述功能的程序段;
2.单步执行,并记录寄存器AX,BX及堆栈指针SP的值
答:
●实验内容3
设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H~304H连续单元装入0AH,0BH,0CH,0DH,0EH。
在DEBUG状态下送入下面的程序,并用单步执行的方法,分析每条指令源地址的形成过程?
当数据传送完毕时,AX中的内容是什么?
A100;给各内存单元赋值
Movdi,0300
Movdx,0a
Movcx,5
1oop1:
mov[di],dx
Incdi
Incdx
1ooploop1
程序清单如下:
寻址方式和AX的内容
MOVBX,0300立即寻址
MOVSI,0002立即寻址
MOVAX,BX寄存器寻址AX:
0300
MOVAX,0304H立即寻址AX:
0304
MOVAX,[0304H]存储器直接寻址AX:
ds:
0304内存单元的内容0EH
MOVAX,[BX]寄存器间接寻址AX:
ds:
0300内存单元的内容0AH
MOVAX,0001[BX]基址相对寻址AX:
ds:
0301内存单元的内容0BH
MOVAX,[BX][SI]基址变址寻址AX:
ds:
0302内存单元的内容0CH
MOVAX,0001[BX][SI]基址变址寻址AX:
ds:
0303内存单元的内容0DH
●实验内容4
设AX=0002H,编写程序将AX的内容乘10,要求用移位的方法完成。
写出实现上实验报告要求:
1.述功能的程序段;
2.单步执行程序,记录每条指令的机器码及相关寄存器的内容
注意:
左移指令用SHL,而不能使用SAL
A100
Movax,2机器码:
b80200ax:
0002dx:
0000cl:
00
Movdx,0机器码:
ba0000ax:
0002dx:
0000cl:
00
Shlax,1机器码:
d1e0ax:
0004dx:
0000cl:
00
Movdx,ax机器码:
01d0ax:
0004dx:
0004cl:
00
Movcl,2机器码:
b102ax:
0004dx:
0004cl:
02
Shlax,cl机器码:
d3e0ax:
0010dx:
0004cl:
02
Addax,dx机器码:
01d0ax:
0014dx:
0004cl:
02
Int20机器码:
cd20ax:
0014dx:
0004cl:
02
实验二简单程序的编写及汇编连接
一、实验目的
1.熟练掌握编写汇编语言源程序的基本方法和基本框架。
2.学会编写顺序结构、分支结构和循环结构的汇编程序,掌握宏定义与宏调用的方法。
3.掌握程序中数据的产生与数输出的方法。
4.熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。
二、实验要求
1.实验前准备
1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。
2写出算法或画出流程图。
3写出源程序。
4对程序中的结果进行分析,并准备好上机调试的过程。
2.本实验要求在PC机上进行。
3.汇编过程中出现问题,可用DEBUG进行调试。
三、实验内容
1.实验内容1
①编辑源程序(参考程序见下),建立.ASM文件;
②用MASM程序汇编,生成.OBJ文件;查看.LST文件的内容
③用LINK程序链接,生成.EXE文件;
4使用DEBUG命令将.EXE文件调进内存,执行后查看程序运行结果;
⑤使用DEBUG命令,检查各段在内存当中分配情况。
参考程序:
;exercize21
datasegment
org0200h
bufferdw0,1,-5,10,256,-128,-100,45,6,3,
dw-15,-67,39,4,20,-1668,-32766,32765,-525,
dw300
countequ($-buffer)/2
maxdw?
dataends
stacksegmentstack'stack'
db100dup('s')
stackends
codesegmentpara'code'
assumecs:
code,ds:
data,ss:
stack
staprocfar
pushds
xorax,ax
pushax
movax,data
movds,ax
leasi,buffer
movcx,count
deccx
movax,[si]
chkmax:
addsi,2
cmp[si],ax
jlenext
movax,[si]
next:
loopchkmax
movmax,ax
ret
staendp
codeends
endsta
答:
1.把待汇编的程序放在存放汇编、链接程序的文件夹里打开汇编程序输入待汇编的程序名字,以默认配置生成obj文件,再打开链接程序输入待链接的程序名字以默认配置生成exe文件
2.执行前后buff数据数据块不变max执行前数据为0000H执行后为7ffdH
3.顺利
实验2:
;display“0~9”100times
stacsegmentstack'stack'
db100dup('s')
stacends
codsegmentpara'code'
assumecs:
cod,ss:
stac
staprocfar
pushds
xorax,ax
pushax
movcx,100
movbl,0
goon:
pushcx
movah,2
movdl,0dh
int21h
Movah,2
Movdl,0ah
Int21h
moval,bl
incal
daa
andal,0fh
movbl,al
oral,30h
movdl,al
movah,2
int21h
movdx,5
l1:
movcx,0ffffh
again:
loopagain
decdx
jnzl1
popcx
loopgoon
ret
staendp
codends
endsta
作业:
编程并且在计算机上调试。
①用汇编语言编写一个加法程序:
1234+5678
请用ASCII码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加的结果显示输出。
②假设有一组数据:
5,-4,0,3,100,-51,……,请编一程序,判断每个数是否大于0,等于0,还是小于0,并输出判断结果。
即:
1当x>0
y=0当x=0
-1当x<0
①sstacksegment
dw32dup(?
)
sstackends
datasegment
data1db‘1234'
data2db‘5678’
data3db4dup(?
)
dataends
codesegment
assumecs:
code,ss:
sstack,ds:
data
sta:
pushds
xorax,ax
pushax
movax,data
movds,ax
leasi,data1
leadi,data2
leabx,data3
moval,[si+3]
movah,[di+3]
andal,0fh
andah,0fh
addal,ah
oral,30h
mov[bx+3],al
moval,[si+2]
movah,[di+2]
andal,0fh
andah,0fh
adcal,ah
oral,30h
mov[bx+2],al
moval,[si+1]
movah,[di+1]
andal,0fh
andah,0fh
adcal,ah
oral,30h
mov[bx+1],al
moval,[si]
movah,[di]
andal,0fh
andah,0fh
adcal,ah
oral,30h
mov[bx],al
movcx,4
movah,2h
a1:
movdl,[bx]
int21h
incbx
loopa1
ret
codeends
endsta
②sstacksegmentstack'stack'
dw32dup(?
)
sstackends
datasegment
buffdb12,-23,5,-4,0,3,100,-51,3,-45,9,2
dataends
countequ$-buff
codesegment
assumess:
sstack,ds:
data,cs:
code
startprogfar
pushds
xorax,ax
pushax
movax,data
movds,ax
leabx,buff
leasi,count
movcx,[si]
loop1:
moval,[bx]
cmpal,0
jzaa1
andal,80h
jzaa2
movah,2
movdl,2dh
int21h
aa:
incbx
looploop1
jmpov
aa1:
movah,2
movdl,30h
int21h
jmpaa
aa2:
movah,2
movdl,31h
int21h
jmpaa
ov:
ret
startendp
codeends
endstart
实验三8254定时/计数器应用实验
一、实验目的
1、掌握8254的工作方式及应用编程;
2、掌握8254典型应用电路的接法。
二、实验设备
PC机一台,TD-PIE实验装置一套,示波器一台。
三、实验内容
1、计数应用实验。
编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1+’5次后,产生一次计数中断,并在屏幕上显示一个字符‘M’。
2、定时应用实验。
编写程序,应用8254的定时功能,产生一个1ms的方波。
1、计数应用实验
编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符‘M’。
实验步骤:
(1)实验接线如图4-2所示;
(2)编写实验程序,经编译、链接无误后装入系统;
(3)运行程序,按动KK1+产生单次脉冲,观察实验现象;
(4)改变计数值,验证8254的计数功能。
图4.28254计数应用实验接线图
实验程序清单:
A8254EQU06C0H;8254计数器0的端口地址
B8254EQU06C2H;8254计数器1的端口地址
C8254EQU06C4H;8254计数器2的端口地址
CON8254EQU06C6H;8254控制字寄存器的端口地址
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
SSTACK
START:
PUSHDS
MOVAX,0000H
MOVDS,AX
Leaax,irq7
movsi,3ch
mov[si],ax
movax,segirq7
mov[si+2],ax
CLI
POPDS
;初始化主片8259,其端口地址为20H和21H
MOVAL,11H
OUT20H,AL;ICW1
MOVAL,08H
OUT21H,AL;ICW2
MOVAL,04H
OUT21H,AL;ICW3
MOV21H,01H
OUT21H,AL;ICW4
MOVAL,6FH;OCW1
OUT21H,AL
;初始化8254
MOVDX,CON8254
MOVAL,________;计数器0,方式0
OUTDX,AL
MOVDX,A8254
MOVAL,________;给计数器0送初值
OUTDX,AL
STI
AA1:
JMPAA1
;中断服务程序
IRQ7:
MOVAX,014DH
INT10H;显示字符M
MOVAX,0120H
INT10H
MOVAL,_______
OUT_______,AL;中断结束命令
IRET
CODEENDS
ENDSEGMENT
2、定时应用实验
编写程序,将8254的计数器0设置为方式3,用信号源1MHz作为CLK0时钟,OUT0输出波形为1ms方波。
实验步骤:
(1)接线图如图4-3所示;
(2)根据实验内容,编写实验程序,经编译、链接无误后装入系统;
(3)运行实验程序,用示波器测试OUT0输出,验证程序功能。
图4.38254定时应用实验接线图
实验程序清单
A8254EQU06C0H
B8254EQU06C2H
C8254EQU06C4H
CON8254EQU06C6H
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,CON8254
MOVAL,________;8254控制字,计数器0,方式3
OUTDX,AL
MOVDX,A8254
MOVAL,________;给计数器0送初值
OUTDX,AL
MOVAL,________
OUTDX,AL
AA1:
JMPAA1
CODEENDS
ENDSTART
六、思考题
1、在将计数初值赋给8254后,马上就可以启动并进行定时或计数吗?
2、若CLK0输入1.925MHz的时钟,能否在OUT0实现输出30ms的定时脉冲?
实验四8255并行接口实验
一、实验目的
1、学习并掌握8255的工作方式及其应用;
2、掌握8255典型应用电路的接法。
二、实验设备
PC机一台,TD-PITE实验装置一套。
三、实验内容
1、基本输入输出实验。
本实验系统中,8255的端口地址分别为0640H,0642H,0644H以及0646H。
编写程序,使8255的A口为输入,接拨动开关,B口为输出,接发光二极管;要求只要开关拨动,发光二极管的显示就发生相应改变。
2、流水灯显示实验。
编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
四、实验原理
图5.18255内部结构及外部引脚图
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A,B,C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:
方式0——基本输入/输出方式、方式1——选通输入/输出方式、方式2——双向选通工作方式。
8255的内部结构及引脚如图5-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图5-2所示。
五、实验步骤
1、基本输入输出实验
本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。
用一组开关信号接入端口A,端口B输出线接至一组发光二极管上,然后通过对8255芯片编程来实现输入输出功能。
具体实验步骤如下述:
图5.28255控制字格式
(1)实验接线图如图5-3所示,按图连接实验线路图;
(2)编写实验程序,经编译、连接无误后装入系统;
图5-38255基本输入输出实验接线图
(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。
实验程序清单
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,0646H
MOVAL,__________;8255的工作方式控制字
OUTDX,AL
AA1:
MOVDX,0640H
INAL,DX
CALLDELAY
MOVDX,0642H
OUTDX,AL
JMPAA1
;延时子程序
DELAY:
PUSHCX
MOVCX,0F00H
AA2:
PUSHAX
POPAX
LOOPAA2
POPCX
RET
CODEENDS
ENDSTART
2、流水灯显示实验
使8255的A口和B口均为输出,数据灯D7DO由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
实验接线图如图5-5所示。
实验步骤如下所述:
(1)按图5-5连接实验线路图;
(2)编写实验程序,经编译、链接无误后装入系统;
(3)运行程序,观察LED灯的显示,验证程序功能;
图5-58255流水灯实验接线图
(4)自己改变流水灯的方式,编写程序。
实验程序清单
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
Start:
movdx.0646h
Moval,80h
Outdx,al
Movbx,0180h
Aa1:
movdx,0640h
Moval,bl
Outdx,al
Calldelay
Movdx,0642h
Moval,bh
Outdx,al
Calldelay
Rorbl,1
Rol,bh,1
Jmpaa1
DELAY:
PUSHCX
MOVCX,0F00H
AA2:
PUSHAX
POPAX
LOOPAA2
POPCX
RET
CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 应用 实验 报告