《微机原理》
实验报告
班级:
学号:
姓名:
2013年6月
目录
第一部分上机实验
实验一显示程序实验 (1)
实验二数据传送实验 (3)
实验三数码转换程序实验 (5)
实验四运算类程序实验 (14)
实验五分支程序设计实验 (17)
第二部分接口实验
实验一简单I/O口扩展验 (1)
实验二存储器读写实验 (3)
实验三 8255并行口实验 (14)
实验四 8253定时器/计数器实验 (19)
第一部分上机实验
实验一显示程序实验
一、实验目的
1. 掌握在PC机上以十六进制形式显示数据的方法;
2. 掌握部分DOS 功能调用使用方法;
3. 熟悉Tddebug 调试环境和Turbo Debugger 的使用。
二、实验内容
一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS 功能调用完成一
些提示信息的显示。实验中可使用DOS 功能调用(INT 21H )。
(1) 显示单个字符输出
入口:AH=02H
调用参数:DL= 输出字符
(2) 显示字符串
入口:AH=09H
调用参数:DS:DX=串地址,’$’为结束字符
(3) 键盘输入并回显
入口:AH=01H
返回参数:AL= 输出字符
(4) 返回DOS 系统
入口:AH=4CH
调用参数:AL= 返回码
三、实验设备
PC微机一台
四、实验代码
DATA SEGMENT
MES DB 'Show a as hex:', 0AH,0DH,'$'
SD DB 'a'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV DX, OFFSET MES
MOV AH, 09H
INT 21H
MOV DI, OFFSET SD
MOV AL, DS:[DI]
AND AL, 0F0H
SHR AL,4
CMP AL, 0AH
JB C2
ADD AL, 07H
C2: ADD AL, 30H
MOV DL, AL
MOV AH, 02H
INT 21H
MOV AL, DS:[DI]
AND AL, 0FH
CMP AL, 0AH
JB C3
ADD AL, 07H
C3: ADD AL, 30H
MOV DL, AL
MOV AH, 02H
INT 21H
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
五、运行结果
实验二数据传送实验
一、实验目的
1. 熟悉Tddebug调试环境和Turbo Debugger的使用;
2. 掌握与数据有关的不同寻址方式。
二、实验所用设备
PC微机一台。
三、实验内容
将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
参考实验程序:
DDATA SEGMENT ;定义源数据段
MSR DB "ONE WORLD ONE DREAM!$"
LEN EQU $- MSR; 源字符串的字节数,作为循环次数
DDATA ENDS
EXDA SEGMENT ;定义附加数据段
MSD DB LEN DUP(?)
EXDA ENDS
MYSTACK SEGMENT STACK ;定义堆栈段
DW 20 DUP(?)
MYSTACK ENDS
CODE SEGMENT ;定义代码段
ASSUME CS:CODE, DS:DDATA, ES:EXDA
START: MOV AX, DDATA
MOV DS, AX ;装载数据段寄存器
MOV AX, EXDA
MOV ES,AX ;装载附加数据段寄存器
MOV SI, OFFSET MSR ;设置SI (源传地址指针)
MOV DI, OFFSET MSD ;设置DI(目的传地址指针)
MOV CX, LEN; 源字符串的字节数,作为循环次
NEXT: MOV AL, [SI] ;开始传输数据, 以字节为单位,源串给目的串
MOV ES:[DI], AL; 要有段超越形式
INC SI
INC DI
DEC CX
JNZ NEXT
PUSH ES; 将附加段寄存器的段值赋给数据段寄存器
POP DS ;9号调用必用DS:DX的首地址形式,所以一定给DS、DX赋值
MOV DX, OFFSET MSD;而要显示的内容在附加段中
MOV AH, 9
INT 21H
MOV AX, 4C00H ;利用DOS功能调用返回DOS状态
INT 21H
CODE ENDS
END START
将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示:
MOV BX, 0
MOV CX, LEN
NEXT: MOV AL, MSR[BX]
MOV ES:MSD[BX], AL
INC BX
LOOP NEXT
四、实验步骤
1.运行Tddebug软件,选择Edit菜单编写实验程序;
2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;
3.使用Rmrun菜单中的Run,运行程序,观察运行结果;
4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,
各寄存器及数据区的内容;
5.更改数据区中的数据,考察程序的正确性。
五、实验运行结果
实验三数码转换程序实验
一、实验目的
掌握不同进制数及编码相互转换的程序设计方法。
二、实验所用设备
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加次位的操作,依次类推,则可求出二进制数结果。