微机原理实验报告.docx
- 文档编号:29805324
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:28
- 大小:620.99KB
微机原理实验报告.docx
《微机原理实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告.docx(28页珍藏版)》请在冰豆网上搜索。
微机原理实验报告
微
机
原
理
实
验
报
告
班级:
指导老师:
学号:
姓名:
实验一两个多位十进制数相加的实验
一、实验目的
学习数据传送和算术运算指令的用法
熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
二、实验内容
将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。
三、程序框图
图3-1
4、参考程序清单
DATASEGMENT
DATA1DB33H,39H,31H,37H,34H;被加数
DATA1ENDEQU$-1
DATA2DB34H,35H,30H,38H,32H;加数
DATA2ENDEQU$-1
SUMDB5DUP(?
)
DATAENDS
STACKSEGMENT
STADB20DUP(?
)
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVAX,TOP
MOVSP,AX
MOVSI,OFFSETDATA1END
MOVDI,OFFSETDATA2END
CALLADDA
MOVAX,4C00H
INT21H
ADDAPROCNEAR
MOVDX,SI
MOVBP,DI
MOVBX,05H
AD1:
SUBBYTEPTR[SI],30H
SUBBYTEPTR[DI],30H
DECSI
DECDI
DECBX
JNZAD1
MOVSI,DX
MOVDI,BP
MOVCX,05H
CLC
AD2:
MOVAL,[SI]
MOVBL,[DI]
ADCAL,BL
AAA
MOV[SI],AL
DECSI
DECDI
LOOPAD2
MOVSI,DX
MOVDI,BP
MOVBX,05H
AD3:
ADDBYTEPTR[SI],30H
ADDBYTEPTR[DI],30H
DECSI
DECDI
DECBX
JNZAD3
RET
ADDAENDP
CODEENDS
ENDSTART
5、实验结果与分析
这次实验依次将相加数与被加数存入AL,BL,依次从低位向高位相加,然后把结果放在内存中。
6、实验体会
这次实验是微机原理课的第一次实验,主要是为了通过这次的实验,让我们对这个软件的编程有更深的了解、知道如何运行程序。
在实验中误把C00H,写成了COOH.从中,我学到了许多课本里学不到的东西,有些意外,有些收获。
实验二排序实验
一、实验目的
掌握用汇编语言编写排序程序的思路和方法。
二、实验内容
将指定内存出开始的数据(最多为4位数)按从大到小的顺序排列。
第一个数字表示数据的个数(不是要比较的数值!
!
!
)。
三、程序流程图
图3-2
4、程序清单
DATASEGMENT
ADDRDW8,234,35,67,876,54,39,765,237
DATAENDS
STACKSEGMENT
STADW32DUP(?
)
TOPDW?
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,STACK
MOVSS,AX
MOVSP,TOP
MOVCX,WORDPTRADDR[0]
DECCX
LOOP1:
MOVDI,CX
MOVBX,2
LOOP2:
MOVAX,WORDPTRADDR[BX]
CMPAX,WORDPTRADDR[BX+2]
JGECCC
XCHGAX,WORDPTRADDR[BX+2]
MOVWORDPTRADDR[BX],AX
CCC:
ADDBX,2
LOOPLOOP2
MOVCX,DI
LOOPLOOP1
EXIT:
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
5、实验结果与分析
这次实验是给我们8个数字,按从大到小的顺序排列出来,定义的数字中8是一个指示数字的个数量。
6、实验体会
通过此次的实验,懂得了用汇编语言编写排序程序的思路和方法,知道义的数字中8是一个指示数字的个数量,不是一个数。
更加加强了我对程序的操作的熟练程度。
实验三字符串按ASCII值的查找
1、实验目的
1.掌握字符串按ASCII值查找的方法。
二、实验设备
计算机一台。
预装WindowsXP、宏汇编MASM5。
三、实验内容
编写能够实现以下要求的汇编语言程序,并上机实现。
1.对一个给定的字符串,统计其中0~9的个数,并在屏幕上显示这个字符串和0~9的个数(3位十进制数)。
四、实验框图
五、程序清单
DATASEGMENT
STRINGDB'GFDsfgfdsGDA0935J/:
@[]`{}KO6ASD78','$'
L1DB?
DATAENDS
STACKSEGMENTPARASTACK'STACK'
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
STARTPROCFAR
BEGIN:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
LEABX,STRING
MOVDL,0
LP2:
MOVAL,[BX]
CMPAL,30H
JBLP3
CMPAL,39H
JALP3
INCDL
LP3:
CMPAL,'$'
JELP4
INCBX
JMPLP2
LP4:
MOVL1,DL
LEADX,STRING
MOVAH,9
INT21H
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
MOVAL,L1
MOVAH,0
CALLB_D
RET
STARTENDP
B_DPROC;二——十进制转换及显示
MOVCL,100
DIVCL
PUSHAX
MOVDL,AL
ADDDL,30H
MOVAH,2
INT21H
POPAX
MOVAL,AH
MOVAH,0
MOVCL,10
DIVCL
PUSHAX
MOVDL,AL
ADDDL,30H
MOVAH,2
INT21H
POPAX
MOVDL,AH
ADDDL,30H
MOVAH,2
INT21H
RET
B_DENDP
CODEENDS
ENDBEGIN
六、实验结果与分析
大写的英文字符A~Z的ASCII码是41H~5AH,小写的英文字符a~z的ASCII码是61H~7AH,如果一个字符的ASCII码在这两个范围内,则满足要求。
7、实验体会
通过此次的实验更加加强了我对ASCII码转换的应用,以后可以对这个问题,有更深的了解,而且我能很快的用它进行查找,很有收获。
实验四DOS输入输出功能的使用
一、实验目的
1.掌握8086汇编语言程序的汇编、链接、运行的方法。
2.掌握用软中断调用DOS输入输出功能的方法。
3.掌握将二进制数转换成十进制数的编程方法。
二、实验设备
计算机一台。
预装WindowsXP、宏汇编MASM5。
3、实验内容
四、程序清单
datasegment
string1db'1234567890abcdefg','$';准备显示的字符串
countdb$-string1-1;上面字符串的长度
dataends
stacksegmentparastack'stack'
db100dup(100)
stackends
codesegment
startprocfar
assumecs:
code,SS:
STACK,ds:
data
begin:
pushds
movax,0
pushax
movax,data
movds,ax
leadx,string1;输出字符串
movah,9
int21h
;输出回车和换行符,以实现另起一行
movdl,0dh;输出回车命令
movah,2
int21h
movdl,0ah;输出换行命令
movah,2
int21h
moval,count;将字符串长度转换成3位十进制数输出
movah,0;高8位补0
movcl,100
divcl;除以100获得百位数
pushax;暂存结果和余数
movdl,al
adddl,30h;换成ASCII码
movah,2;输出字符到屏幕
int21h
popax;恢复结果和余数
moval,ah;余数作为被除数
movah,0
movcl,10
divcl;除以10获得十位数
pushax
movdl,al
adddl,30h
movah,2
int21h
popax
movdl,ah
adddl,30h
movah,2
int21h
movdl,0dh;输出回车命令
movah,2
int21h
movdl,0ah;输出换行命令
movah,2
int21h
ret
startendp
codeends
endbegin
五、实验结果及分析
这就是二进制转为十进制的结果
六、实验体会
这次实验,我基本掌握8086汇编语言程序的汇编、链接、运行的方法。
同时也学会了用软中断调用DOS输入输出功能的方法,还有基本的掌握将二进制数转换成十进制数的编程方法。
这次实验学到了很多,希望以后更有进步。
实验五8255并行I/O口实验
一、实验要求
利用8255可编程并行口芯片,实现输入/输出实验,实验中用8255PA口作输入,PB口作输出。
二、实验目的
1、了解8255芯片结构及编程方法。
2、了解8255输入/输出实验方法。
三、预备知识
8255是Intel公司生产的与Intel8080/8085系列的MPU配套的可编程外围接口电路,简称PPI。
它有A、B、C三个八位端口寄存器,通过24位端口线与外部设备相连,基中C口可分为上半部和下半部。
这24根端口线全部为双向三态。
三个端口可分二组来使用,可分别工作于三种不同的工作方式。
四、实验原理图及连线
1、本实验主要用到的模块:
8255模块、开关量输出模块、0-1指示模块、实验译码单元等;
2、PA0-PA7分别接开关量输出模块S0-S7对应的插座;
3、PB0-PB7分别接0-1指示模块DO71-DO78对应的插座;
4、8255A的片选/CS接地址译码单元的2A0-2A7;
5、数据线XD0—XD7接系统数据线区的任一插座。
图3-3
五、实验内容
将实验的线路连接好后,编程,将8255的A口作为输入,输入信号由8个逻辑电平开关提供,B口作为输出,其内容由发光二极管来显示。
六、程序清单
L8255_CMDEQU2A3H
L8255_PAEQU2A0H
L8255_PBEQU2A1H
L8255_PCEQU2A2H
CODESEGMENT
ASSUMECS:
CODE,DS:
CODE
BEGIN:
MOVCX,0FFH
AA:
LOOPAA
MOVDX,L8255_CMD
MOVAL,9CH;10011000
OUTDX,AL
NOP
NOP
NOP
NOP
NOP
BB:
MOVDX,L8255_PA
INAL,DX
XORAL,0FFH
MOVDX,L8255_PB
OUTDX,AL
JMPBB
CODEENDS
ENDBEGIN
七、程序框图
图3-4
八、实验步骤
1、参照图中的内容连好线;
2、运行上位机软件,装载并运行相应程序即可(联机请参考程序8255.asm)。
注意:
同学们自己编写程序时,8255的/CS连线可以接地址译码单元的其他信号,其它连线相同。
如果用的端口与本实验不一样,也可以改变IO口的连线。
九、仪器配置
ZY15MicInt12BB微机原理及接口实验箱一台。
十、实验现象
当读到某个开关处于高电平时,对应的发光二极管就会亮。
11、思考题
根据程序列出实验中8255的各个端口的地址,如果8255的/CS改接译码信号280H,其它信号不变,那么对应的端口地址又是多少?
答:
8255命令-2A3H
PA-2A0HPB-2A1HPC-2A2H;
8255的/CS改接译码信号280H后对应的端口地址是8255命令-283H
PA-280HPB-281HPC-282H
12、实验结果与分析
按照实验指导连接电路后,将所有的开关都置于高电平,会发现所有的灯都亮了。
然后所有的开关置于低电平,所有的灯都熄了。
13、实验体会
本次实验是按照老师要求和讲解做的,刚开始时,按照老师说的步骤,将线路连接好后,通过众友连接,发现连接不上电路,最后换了一个串口线,最终成功的连上了,通过了编译但又在运行的时候出现了问题,和其他人做了比较,依旧没有发现问题,最后经过自己耐心的检查,发现有根线接错了,改正之后重新编译运行,最后所有的LED灯亮了。
此次实验也让我收获颇多,做实验的时候我们应该仔细认真。
实验六ADC0809A/D转换实验
一、实验目的
1、加深理解逐次逼近法模数转换器的特征和工作原理;
2、掌握A/D转换芯片与8088/86的接口方法;
3、了解A/D芯片ADC0809转换性能及编程方法。
二、预备知识
A/D转换器大致有三类:
一是双积分A/D转换器,优点是精度高,抗干扰性好;价格便宜,但速度慢;二是逐次逼近A/D转换器,精度,速度,价格适中;三是并行A/D转换器,速度快,价格也昂贵。
实验用的ADC0809属第二类,是八位A/D转换器。
每采集一次一般需100us。
本程序是用延时查询方式读入A/D转换结果,也可以用中断方式读入结果,在中断方式下,A/D转换结束后会自动产生EOC信号,做为转换完成的信号。
三、实验原理说明及连线
1、本实验的位置在实验箱的“ADC0809模块”;
2、本实验用芯片ADC0809的片选地址为2B8H,实验箱上已固定好,不需要再连线;
3、将该实验模块的CLOCK和“信号源模块”的1MHz信号连接起来;
4、用排线将“系统数据总线输出单元”中的任意一组数据线和本实验模块的“ADC0809:
XD0-XD7”连接起来;
5、将通道0模拟量输入端IN0接模拟信号产生电路模块中的电位器R093的中心抽头,然后将R093的两端一端接地,另一端接VCC(+5V)。
图3-8
四、实验内容
利用电位器输出一个幅值可调的直流电压信号,送入ADC0809的通道0,将转换后的结果在屏幕上显示出来,并验证它与输入电压的关系。
五、实验步骤
1、确认连接好线路;
2、装载运行程序。
六、实验框图
图3-9
七、仪器配置
ZY15MicInt12BB微机原理及接口实验箱一台
八、实验现象
当用户扭动电阻器时,屏幕将显示相应的数值。
九、思考题
按图中的连接线路,输入一个3V的模拟信号,输出的数字信号的理论值是多少,在实验箱上验证该值的正确性。
实验中用的ADC0809的IN0的地址是什么?
答:
3V的模拟信号转化成数字信号后的理论值是99H.
实验中用的ADC0809的IN0的地址是2B8H。
10、程序清单
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,2B8H;2B0H-2B7H
MOVAL,00H
OUTDX,AL
CALLDELAY
INAL,DX
CALLSHOW
CALLDELAY
JMPSTART
SHOWPROCNEAR
PUSHDX
PUSHAX
MOVCL,4
SHRAL,CL
ANDAL,0FH
CALLH2C
JCSHOW_OUT
MOVDX,88H
OUTDX,AL
POPAX
ANDAL,0FH
CALLH2C
JCSHOW_OUT
MOVDX,88H
OUTDX,AL
MOVCX,0FFH
DELA:
LOOPDELA
SHOW_OUT:
POPDX
RET
SHOWENDP
H2CPROCNEAR
CMPAL,0
JAEN0_9
JMPH2C_ERR
N0_9:
CMPAL,9
JBEN0_9_OK
CMPAL,0AH
JAEHEX_CMP
JMPH2C_ERR
HEX_CMP:
CMPAL,0FH
JBEHEX_CMP_OK
JMPH2C_ERR
HEX_CMP_OK:
CLC
ADDAL,37H
JMPCMP_OUT
N0_9_OK:
CLC
ADDAL,30H
JMPCMP_OUT
H2C_ERR:
STC
CMP_OUT:
RET
H2CENDP
DELAYPROCNEAR
MOVCX,0FFH
DELEA:
LOOPDELEA
RET
DELAYENDP
CODEENDS
ENDSTART
11、实验结果与分析
接好电路后,微调电位器,我们就会看到显示屏上的数字从00到FF的变换。
最后通过询问我们班的学霸才知道,这是将模拟电转换为数字信号,而且还可以通过显示的数字知道电压是多少。
12、实验体会
这次实验,因为有了上次实验的经验,所以做的格外的顺利。
但是要能完全理解,需要下功夫。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 报告