微机原理及应用实验报告Word文件下载.docx
《微机原理及应用实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机原理及应用实验报告Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
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:
0300内存单元的内容0AH
MOVAX,0001[BX]基址相对寻址AX:
0301内存单元的内容0BH
MOVAX,[BX][SI]基址变址寻址AX:
0302内存单元的内容0CH
MOVAX,0001[BX][SI]基址变址寻址AX:
0303内存单元的内容0DH
●实验内容4
设AX=0002H,编写程序将AX的内容乘10,要求用移位的方法完成。
写出实现上实验报告要求:
1.述功能的程序段;
2.单步执行程序,记录每条指令的机器码及相关寄存器的内容
注意:
左移指令用SHL,而不能使用SAL
A100
Movax,2机器码:
b80200ax:
0002dx:
0000cl:
00
Movdx,0机器码:
ba0000ax:
Shlax,1机器码:
d1e0ax:
0004dx:
Movdx,ax机器码:
01d0ax:
0004cl:
00
Movcl,2机器码:
b102ax:
02
Shlax,cl机器码:
d3e0ax:
0010dx:
02
Addax,dx机器码:
01d0ax:
0014dx:
Int20机器码:
cd20ax:
实验二简单程序的编写及汇编连接
1.熟练掌握编写汇编语言源程序的基本方法和基本框架。
2.学会编写顺序结构、分支结构和循环结构的汇编程序,掌握宏定义与宏调用的方法。
3.掌握程序中数据的产生与数输出的方法。
4.熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。
1.实验前准备
1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。
2写出算法或画出流程图。
3写出源程序。
4对程序中的结果进行分析,并准备好上机调试的过程。
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
next:
loopchkmax
movmax,ax
ret
staendp
codeends
endsta
1.把待汇编的程序放在存放汇编、链接程序的文件夹里打开汇编程序输入待汇编的程序名字,以默认配置生成obj文件,再打开链接程序输入待链接的程序名字以默认配置生成exe文件
2.执行前后buff数据数据块不变max执行前数据为0000H执行后为7ffdH
3.顺利
实验2:
display“0~9”100times
stacsegmentstack'
stacends
codsegmentpara'
cod,ss:
stac
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
movdx,5
l1:
movcx,0ffffh
again:
loopagain
decdx
jnzl1
popcx
loopgoon
ret
codends
作业:
编程并且在计算机上调试。
①用汇编语言编写一个加法程序:
1234+5678
请用ASCII码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加的结果显示输出。
②假设有一组数据:
5,-4,0,3,100,-51,……,请编一程序,判断每个数是否大于0,等于0,还是小于0,并输出判断结果。
即:
1当x>
y=0当x=0
-1当x<
①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]
adcal,ah
mov[bx+2],al
moval,[si+1]
movah,[di+1]
mov[bx+1],al
moval,[si]
movah,[di]
mov[bx],al
movcx,4
movah,2h
a1:
movdl,[bx]
incbx
loopa1
codeends
endsta
②sstacksegmentstack'
buffdb12,-23,5,-4,0,3,100,-51,3,-45,9,2
countequ$-buff
assumess:
data,cs:
code
startprogfar
xorax,ax
leabx,buff
leasi,count
movcx,[si]
loop1:
moval,[bx]
cmpal,0
jzaa1
andal,80h
jzaa2
movah,2
movdl,2dh
aa:
looploop1
jmpov
aa1:
movah,2
movdl,30h
int21h
jmpaa
aa2:
movdl,31h
ov:
ret
startendp
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
ICW3
MOV21H,01H
OUT21H,AL;
ICW4
MOVAL,6FH;
OCW1
OUT21H,AL
;
初始化8254
MOVDX,CON8254
MOVAL,________;
计数器0,方式0
OUTDX,AL
MOVDX,A8254
给计数器0送初值
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
ASSUMECS:
CODE
START:
MOVDX,CON8254
MOVAL,________;
8254控制字,计数器0,方式3
OUTDX,AL
MOVDX,A8254
MOVAL,________
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显示,验证程序功能。
DW32DUP(?
SSTACKENDS
ASSUMECS:
MOVDX,0646H
MOVAL,__________;
8255的工作方式控制字
MOVDX,0640H
INAL,DX
CALLDELAY
MOVDX,0642H
JMPAA1
延时子程序
DELAY:
PUSHCX
MOVCX,0F00H
AA2:
PUSHAX
POPAX
LOOPAA2
POPCX
RET
ENDSTART
2、流水灯显示实验
使8255的A口和B口均为输出,数据灯D7DO由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
实验接线图如图5-5所示。
实验步骤如下所述:
(1)按图5-5连接实验线路图;
(2)编写实验程序,经编译、链接无误后装入系统;
(3)运行程序,观察LED灯的显示,验证程序功能;
图5-58255流水灯实验接线图
(4)自己改变流水灯的方式,编写程序。
Start:
movdx.0646h
Moval,80h
Outdx,al
Movbx,0180h
Aa1:
movdx,0640h
Moval,bl
Calldelay
Movdx,0642h
Moval,bh
Rorbl,1
Rol,bh,1
Jmpaa1