微机接口实验报告

2019-04-14 10:57

实验一:显示程序实验(2012年4月22日)

1、实验目的及实验内容

实验目的:

1.掌握在PC机上以十六进制数形式显示数据的方法

2.掌握部分DOS功能调用的使用方法

3.熟悉Tddebug调试环境和Turbo Debugger的使用

实验内容及说明:

本实验要求将指定的数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。

0~9的ASII码为:30H~39H,转换时,直接在原数据后面加上30H即可;A以后的数据

ASII码为:41H~ 在原数据上加上7H,再加上30H即可。 实验中可使用DOS功能调用(INT21H)。 1.显示单个字符 入口:AH=02H

调用参数:DL=输出字符 2.显示字符串 入口:AH=09H

调用参数:DS:DX:串地址,’$’为结束字符 3.键盘输入并回显 入口:AH=01H

调用参数:AL=输出字符

若不回显,入口:AH=07H 或 AH=10H 4.返回DOS系统

入口:AH=4CH

调用参数:AL=返回码

2、实验环境及实验步骤 实验环境:PC机一台 实验步骤:

1.运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序。显示部分实验流程图如下:

2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接 3.使用Run菜单中的Run运行程序,观察运行结果

4.使用Run菜单中的Debug调试程序,观察调试过程中的数据传输指令执行后各寄存器及数据区的内容

5.更改数据区中的数据,考察程序的正确性 本实验的显示部分试验流程如图所示

取字节的高4位N数据是否大于等于A?Y是A-F,加7H转换成ASCH码送屏幕显示取字节的低四位数据是否大于等于A?NY是A-F,加7H转换成ASCH码送屏幕显示

3、实验过程与分析

(1).取字节的高四位的实现

首先将一个字节读入寄存器,将该字节同0F0H相与,即可将该字节的高四位保持不变而第四位变为全0。然后将相与后的字节右移四位即得到原始字节的高四位。

(2).取字节的低四位的实现

同取字节的高四位方法类似,将字节同0FH相与,即可将该字节的低四位保持不变而高四位变为全0。这样保存原始字节的寄存器中内容变为字节的低四位。

(3).数据转换成16进制的ASCII码在屏幕显示的实现

根据转换公式,若高(低)字节数据是0~9,就直接加30H即可转化为相应的ASCII码,如对数据“A”高字节为“0100”,屏幕应该要显示“4”。故高字节“0100”需要加上30H即“0110000”才能构成4的ASCII码“0110100”即屏幕显示“4”。若高(低)字节数据是A~F,就直接加37H即可转化为相应的ASCII码,如对数据“K”的低字节为“1011”,屏幕应该要显示“B”,故低字节“1011”需要加上37H即“0110111”才能构成B的ASCII码“1000010”即屏幕显示“B“。 (注:A的16进制ASCII码为41H,K的16进制ASCII码为4BH)

(4).数据区内容输出的实现

显示单个字符即设置入口AH=02H,调用参数DL=输出字符。显示字符串即设置入口AH=01H,调用参数DS:DX:串地址,以“$”为结束符。

程序代码:

DATA SEGMENT USE16

MES DB 'Show a as hex:',0AH,0DH,'$' SD DB 'a' DATA ENDS

CODE SEGMENT USE16

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX

MOV DX,OFFSET MES ;Show message MOV AH,09H INT 21H

MOV SI,OFFSET SD MOV AL,DS:[SI]

AND AL,0F0H ;取高4位 SHR AL,4

CMP AL,0AH ;是否是A以上的数 JB C2 ADD AL,07H C2:ADD AL,30H

MOV DL,AL ;show character MOV AH,02H INT 21H

MOV AL,DS:[SI] AND AL,0FH CMP AL,0AH JB C3 ADD AL,07H C3:ADD AL,30H

MOV DL,AL ;show character MOV AH,02H INT 21H

MOV AX,4C00H ;go back to dos INT 21H CODE ENDS

END START

将上述程序保存为.ASM文件,编译、连接,再执行。

输出结果:61(a的ASII码)

4、实验结果总结

根据实验结果,程序运行能正常显示出字符串和相应数据的16进制ASCII码制,

达到了实验的目的。

本次实验代码有老师提供,主要是了解tddebug软件的使用,程序代码不难看懂,但其格式不甚了解,在自己编程的时候会感觉无从下手,应进一步的学习汇编语言。

实验二:描述符及描述符表实验(2012年5月13日) 1、实验目的及实验内容

实验目的:

1、熟悉保护模式的编程格式和描述符的声明方法 2、掌握使用选择符访问段的寻址方法

3、学习和掌握静态存储器6264的特性及扩展方法 4、熟悉通过保护模式访问扩展存储器的方法 实验内容:

32位微机保护模式下全局描述符及描述符表

要求实现在一个0级代码段中将源数据段中的一段数据复制到目标数据段中。其中

所有的段描述符均放置在GDT中。

2、实验环境及实验步骤

实验环境:PC机一台,TD-PIT实验装置一套。 实验步骤:

1、运行TDDebug软件,选择Edit菜单编写实验程序

描述GDT

声明各数据段

在0级代码段中实现数据传输

结束

2、使用Compile菜单中的Compile和Link对试验程序进行汇编、连接 3、使用Pmrun装入实验程序。如果装入成功屏幕上会显示“Load OK!”,否则会给

出相应的错误提示信息

4、若程序成功装入,可使用R命令查看调试系统为实验程序分配的系统资源 5、使用GDT命令查询系统的GDT,并查看实验程序中声明的代码段、数据段描述符

在GDT中的位置以及对应段的物理地址、段属性和段界限等 6、使用F9运行程序,如果程序正常结束,命令显示区中将显示“Correct Running” 7、使用T命令单步执行程序,在单步过程中使用D命令查询数据源数据区及目标

数据区中的数据,验证执行的正确性

3、实验过程与分析

1) 数据结构的组织实现

在程序开始声明一个数据段“DESG”来描述这三个段的描述符,其中有代码段描述符SCODE、源数据段描述符DATAS和目标数据段描述符DATAD,将他们的选择子分别定义为SCODE_SEL、DATAS_SEL、DATAD_SEL。 2) 三个描述符的定义实现

代码段描述符:SCODE DESC 源数据段描述符:DATAS DESC 目标数据段描述符:DATAD DESC 3) 确定装入程序的重定位信息的实现

为了给装入程序提供重定位信息,三个存储段描述符中地址的低16位用每个描述符对应的标号来填写。在程序装入内存时。调试系统会根据地址的低16位重定位该段对应的真实物理地址,并将该地址写入描述符中。

源程序: .386P DESC STRUC ;定义描述符结构 LIMITL DW 0 BASEL DW 0 BASEM DB 0 ATTR DB 0 LIMITH DB 0 BASEH DB 0 DESC ENDS ATCE = 98H ;定义特殊常量 ATDR = 90H ATDW = 92H DSEG SEGMENT PARA USE16 ;声明开始初始化GDT中的描述符 GDT LABEL BYTE

ID1 DESC <0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH> ;标记1

SCODE DESC <0FFFFH,CSEG,,ATCE,,> ;代码段描述符 DATAS DESC ;源数据段描述符 DATAD DESC ;目标数据段描述符 GDTLEN = $-GDT

SCODE_SEL = SCODE-GDT ;代码段选择子 DATAS_SEL = DATAS-GDT ;源数据段选择子 DATAD_SEL = DATAD-GDT ;目标数据段选择子

ID2 DESC <0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH > ;标记2 ID3 DESC <0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH > ;标记3 DSEG ENDS ;定义源数据段


微机接口实验报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:盖板涵首件工程施工总结

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: