微机原理与接口技术实验报告参考Word格式文档下载.docx
《微机原理与接口技术实验报告参考Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验报告参考Word格式文档下载.docx(58页珍藏版)》请在冰豆网上搜索。
返回参数:
AL=输出字符
(4)返回DOS系统
AH=4CH
AL=返回码
四、实验步骤
1.运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Rmrun菜单中的Run,运行程序,观察运行结果;
4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;
5.更改数据区中的数据,考察程序的正确性。
图1-1显示程序实验流程图
五、程序清单
DATASEGMENT
MESDB'
laoshihao:
'
0AH,0DH,'
$'
SDDB'
b'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMES
MOVAH,09H
INT21H
MOVDI,OFFSETSD
MOVAL,DS:
[DI]
ANDAL,0F0H
SHRAL,4
CMPAL,0AH
JBL1
ADDAL,07H
L1:
ADDAL,30H
MOVDL,AL
MOVAH,02H
ANDAL,0FH
JBL2
L2:
MOVAX,4C00H
CODEENDS
ENDSTART
六、实验调试过程
调试过程中出现警告,显示没有使用堆栈段。
但是程序编写本身没有使用,因此程序运行相对正常。
第一个实验熟悉了轻松汇编软件的操作,为之后的实验打下了基础。
七、实验运行结果
实验二数据传送实验
1.熟悉Tddebug调试环境和TurboDebugger的使用;
2.掌握与数据有关的不同寻址方式。
将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
实验程序:
DDATASEGMENT
MSRDB"
LAOSHIXINKULE!
$"
LENEQU$-MSR
DDATAENDS
EXDASEGMENT
MSDDBLENDUP(?
)
EXDAENDS
MYSTACKSEGMENTSTACK
DW20DUP(?
MYSTACKENDS
DDATA,ES:
EXDA
MOVAX,DDATA
MOVAX,EXDA
MOVES,AX
MOVSI,OFFSETMSR
MOVDI,OFFSETMSD
MOVBX,0
MOVCX,LEN
NEXT:
MOVAL,MSR[BX]
MOVES:
MSD[BX],AL
INCBX
LOOPNEXT
PUSHES
POPDS
MOVDX,OFFSETMSD
MOVAH,9
ENDSTART
1.运行Tddebug软件,选择Edit菜单编写实验程序;
五、实验调试过程
程序中使用了寄存器相对寻址的方式。
编译、连接、运行后程序运行正常。
输入的字符显示在屏幕上。
六、实验运行结果
实验三数码转换程序实验
掌握不同进制数及编码相互转换的程序设计方法。
PC微机一台。
三、实验步骤
四、实验内容
计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。
因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。
计算机与外设间的数码转换关系如图3-1所示,数码对应关系如表3-1所示。
图3-1计算机与外设间的数码转换关系
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码转换成二进制数,并将转换结果按位显示在屏幕上。
转换过程的参考流程如图3-2所示。
(1)实验流程图
图3-2十进制ASCII转换为
二进制数参考流程
(2)实验程序
00012"
LENEQU$-MSR
CODESEGMENT;
CODE,DS:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETMSR
MOVCX,LEN-1
MOVAL,DS:
[SI]
MOVAH,0
SUBAX,30H
A1:
MOVBX,0AH
MULBX
INCSI
MOVDL,DS:
MOVDH,0
SUBDX,30H
ADDAX,DX
DECCX
JNZA1
MOVCL,16
MOVBX,AX
A2:
ROLBX,1
MOVDL,BL
ANDDL,01H
ADDDL,30H
MOVAH,2H
DECCL
JNZA2
MOVAX,4C00H
(3)调试过程
调试过程正常没有出现问题。
(4)实验结果
2.将十进制数的ASCII码转换为BCD码
本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为BCD码后,并将转换结果按位分别显示于屏幕上。
若输入的不是十进制数的ASCII码,则输出“FF”。
提示:
一字节ASCII码取其低四位即变为BCD码。
转换部分的实验流程参见3-3。
(1)实验流程
图3-3十进制ASCII转换为
BCD码参考流程
STRINGDB'
INPUT:
'
STRING1DB'
OUTPUT:
MSRDB6,?
6DUP(?
LEADX,STRING
MOVAH,09H
MOVDX,OFFSETMSR
MOVAH,0AH
MOVDL,0AH
MOVDL,0DH
LEADX,STRING1
MOVCL,[MSR+1]
MOVSI,0002H
MOVBX,OFFSETMSR
MOVAL,[BX+SI]
CMPAL,40H
JNCB1
SUBAL,30H
MOVCH,0
PUSHCX
MOVCL,4
MOVDH,AL
SHLDH,CL
ROLDH,1
MOVDL,DH
MOVAH,02H
POPCX
B1:
JZB2
MOVDL,46H
B2:
调试过程中在换行显示时遇到了问题,无法换行显示。
经过检查发现在显示过程中的换行代码写错了,改正之后程序显示正常。
3.将十六进制数的ASCII码转换为十进制数
十六位二进制数的值域为0-65535,最大可转换为五位十进制数。
五位十进制数可表示为:
ND=D4×
104+D3×
103+D2×
102+D1×
因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。
本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示在屏幕上。
图3-4将十六进制数的ASCII码转换为十进制数
MS