微机原理与接口实验报告书Word下载.docx
- 文档编号:5005375
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:85
- 大小:959.14KB
微机原理与接口实验报告书Word下载.docx
《微机原理与接口实验报告书Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理与接口实验报告书Word下载.docx(85页珍藏版)》请在冰点文库上搜索。
本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
4、实验代码与截图
显示程序代码
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENTUSE16
MES1DB'
Showaashex:
'
0AH,0DH,'
$'
SDDB'
a'
DATAENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMES1;
showmessage
MOVAH,09H
INT21H
MOVSI,OFFSETSD
MOVAL,DS:
[SI]
ANDAL,0F0H
;
取高4位
SHRAL,4
CMPAL,0AH;
是否是A以上的数
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL;
showcharacter
MOVAH,02H
INT21H
ANDAL,0FH;
取低4位
CMPAL,0AH
JBC3
ADDAL,07H
C3:
ADDAL,30H
WAIT1:
MOVAH,1;
判断是否有按键按下
INT16H
JZWAIT1;
无按键则跳回继续等待,有则退出
MOVAX,4C00H;
gobacktodos
CODEENDS
ENDSTART
数据传送
DDATASEGMENT
MSRDB'
goodmorning!
LENEQU$-MSR
DDATAENDS
EXDASEGMENT
MSDDBLENDUP(?
EXDAENDS
CODESEGMENT
DDATA,ES:
EXDA
MOVAX,DDATA
MOVAX,EXDA
MOVES,AX
MOVSI,OFFSETMSR
MOVDI,OFFSETMSD
MOVCX,LEN
MOVBX,0
NEXT:
MOVAL,MSR[BX]
MOVES:
MSD[BX],AL
INCBX
LOOPNEXT
PUSHES
POPDS
MOVDX,OFFSETMSD
MOVAH,9
MOVAX,4C00H
六.思考题
1、常用的数据传送指令和算术运算指令有几种类型?
试归纳并举例说明。
把数据、地址或立即数传送到寄存器、存储单元以及I/O端口,或从内存单元、I/O端口中读取数据。
1.通用传送指令:
MOV,PUSH,POP,XCHG,XLAT
2.输入输出指令指令:
IN,OUT
3.目的地址传送指令:
LEA,LDS,LES
4.标志位传送指令:
LAHF,SAHF,PUSHF,POPF
二使用算术逻辑运算和移位指令,可以实现对二进制数据的加、减、乘、除等四则运算,与、或、非、异或等逻辑运算,以及移位运算和代码转换运算
2、在DEBUG下输入程序段,如何建立、修改、存盘?
文件名是被调试文件的名字。
如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。
如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。
命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。
3、程序段近过程与远过程有什么不同?
什么情况下是RET?
什么情况下是RETF?
ret分两种:
retn和retf
retn是近返回,用于段内返回,它返回到堆栈内保存的本段内的偏移地址
retf是远返回,一般用于段间返回,它返回堆栈内保存的段地址:
偏移地址
实验二代码转换
一.实验目的:
1.学习不同数及编码相互转换的程序设计方法。
2.进一步掌握程序编辑,编译,连接过程。
3.进一步掌握可执行文件在DEBUG里调试过程。
二.实验器材。
1.PC机一台;
2.QTH-2008PCI32位微机教学实验仪一套。
三.实验内容:
1.将ASCII码表示的十进制数转换为二进制数
十进制数可以表示为:
Dn×
10n+Dn-1×
10n-1+…+D0×
100=Di×
10i其中Di代表十进制数1、2、3…9、0。
上式可以转换为:
ΣDi×
10i=((…(Dn×
10+Dn-1)×
10)+Dn-2)×
10+…+D1)×
10+D0
由上式可归纳十进制数转换为二进制的方法:
从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数结果。
本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。
2.将十进制数的ASCII码转换为BCD码
本实验要求将键盘输入的一个五位十进制数54321的ASCⅡ码存放在数据区中,转换为BCD码后,并将转换结果按位分别显示于屏幕上。
若输入的不是十进制数的ASCⅡ码,则输出“FF”。
提示:
一字节AsⅡ码取其低四位即变为BCD码。
3.将十六进制数的ASCII码转换为十进制数
十六位二进制数的值域为0-65535,最大可转换为五位十进制数。
五位十进制数可表示为:
ND=D4×
104+D3×
103+D2×
102+D1×
10+D0
因此,将十六位二进制数转换为五位ASCⅡ码表示的十进制数,就是求D1-D4,并将它们转化为ASCⅡ码。
本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示在屏幕上。
4.BCD码转换为二进制码
本实验要求将四个二位十进制数的BCD码存放在某一内存单元中,转换出的二进制数码存入其后的内存单元中,转换结束,送屏幕显示。
四.实验步骤:
1.输入给定的程序,编译、连接并产生可执行文件。
2.DEBUG调试分析各程序的功能,观察调试过程中数据传输指令执行后,各寄存器及数据区的内容。
并给出16进制数转换成ASCII码数学表达式。
3.更改数据区的数据,考察程序的正确性。
五.实验代码与截图
将ASCII码十进制数转换为二进制数
Theasciicodeofdecimalcodeare:
BUFDB30H,30H,30H,31H,32H
DB10HDUP(0)
DDATA
MOVSI,OFFSETBUF
MOVBX,000AH
MOVCX,0004H
MOVAH,00H
MOVAL,[SI]
SUBAL,30H
A1:
IMULBX
ADDAL,[SI+01]
INCSI
LOOPA1
MOV[SI],AX
MOVDX,OFFSETMES1
MOVAH,09H
INCSI;
显示高字节
CALLSHOW
DECSI;
显示低字节
SHOWPROCNEAR
ANDAL,0F0H;
CMPAL,0AH;
JBC2
ADDAL,07H
ADDAL,30H
MOVDL,AL;
ANDAL,0FH;
ADDAL,07H
RET
ENDP
将十进制数的ASCII码转换为BCD码
TheBCDcodeofdecimalare:
BUFDB31H,32H,33H,34H,35H
MOVCX,0005H
MOVDI,OFFSETBUF
MOVBL,0FFH
MOVAL,[DI]
CMPAL,3AH;
比较AL中的数是否是0~9的ASCII码
JNBA2
SUBAL,30H
JBA2
MOVBL,AL
A2:
MOVAL,BL
MOV[DI+05H],AL
INCDI
LOOPA1
MOVSI,DI
MOVCX,05H
INT21H
A3:
MOVDL,20H
INCSI
LOOPA3
ANDAL,0F0H;
将十六进制的ASCII码转换为十进制数
Theasciicodeofhexare:
BUFDB0CH,00H
MOVDX,[SI]
MOVBX,SI
ADDBX,2
ADDSI,7
DECSI
MOVAX,DX
MOVDX,0000H
MOVCX,000AH
DIVCX
XCHGAX,DX
ADDAL,30H
MOV[SI],AL
CMPDX,0000H
JNEA1
CMPSI,BX
JZA3
MOVAL,30H
JMPA2
MOVCX,5
ADDSI,2
A4:
LOOPA4
BCD码转换为二进制码
MES1DB'
TheBCDcodeofbinaryare:
BUFDB01H,07H,03H,04H,05H,01H,06H,08H
MOVCX,0004H
ADDAL,AL
ADDAL,BL
MOVAH,00H
ADDAL,[DI]
MOV[DI+07H],AX
MOVCX,04H
MOVDI,OFFSETBUF
ADDDI,08H
MOVAX,[DI]
CALLSHWORD
INCDI
LOOPA2
SHWORDPROCNEAR
MOVBL,AH
MOVBL,AL
RET
PUSHAX
PUSHDX
MOVAL,BL
POPDX
POPAX
ENDP
六.思考题:
十进制数的ASCII码如何转换为BCD码?
ASII码可以查表,对应的你可以读出你所需的字符所对应的二进制代码,当你把8位二进制代码写出时,我们就可以转换为BCD码了,具体方法是:
8,4,2,1。
实验三运算类指令编程实验
1)掌握运算类指令编程及调试方法。
2)掌握运算类指令对各状态标志位的影响及测试方法。
80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表3-1所示的数据类型进行算术运算。
1.二进制双精度加法运算
本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,Y=0021B79EH。
实验利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。
由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。
在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。
2.十进制数的BCD码减法运算
本实验要求计算X-Y=Z,其中,X、Y、Z为BCD码,其中X=0400H,Y=0102H。
3.乘法运算
本实验要求实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,被乘数为54320H,乘数为3H,运算结束后,将乘积在屏幕上显示。
4.用减奇数开平方运算80x86指令系统中有乘除法指令但没有开平方指令,因此,开平方运算是通过程序来实现的。
用减奇数法可求得近似平方根,获得平方根的整数部分。
我们知道,N个自然数中的奇数之和等于N2,即:
1+3+5=9=32
1+3+5+7=16=42
1+3+5+7+9+11+13+15=64=82
若要做S的开方运算,那麽就可以从S中逐次减去自然数中的奇数1,3,5,7…,一直进行到相减数为0或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。
本实验要求利用减奇法计算0040H的开平方值,并将运算结果显示在屏幕上。
4、实验步骤
(1)运行Tdpit集成操作软件,按各实验要求编写实验程序。
(2)分别对实验程序进行编译、链接。
(3)使用运行功能运行程序,观察运行结果。
(4)使用调试功能调试程序,观察在调试过程中,各运算指令执行后,各寄存
器、标志位及数据区内容的变化。
(5)更改数据区中的数据,反复测试,验证程序功能。
5、实验代码及截图
二进制双精度加法运算
DATASEGMENT
Theresultis:
XLDW65A0H
XHDW0015H
YLDW0B79EH
YHDW0021H
DATA
MOVDS,AX
MOVAX,XL
ADDAX,YL
MOVBX,AX
MOVAX,XH
ADCAX,YH
PUSHBX
CALLSHWORD
POPBX
MOVAX,BX
show
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 实验 报告书