微 机 原 理 实 验 报 告
班级: 姓名: 学号:
实验一 汇编语言程序设计 1 分支程序设计实验
1.1.1 实验目的
1. 掌握分支程序的结构。
2. 掌握分支程序的设计、调试方法。
1.1.2 实验设备
PC机一台,TD-PITE实验装置一套。
1.1.3 实验内容
设计一数据块间的搬移程序。设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图1.1所示。
0H源数据块0H目的数据块0H源数据块目的数据块目的数据块源数据块FFFFFHFFFFFHFFFFFH
(a) (b) (c)
图1.1 源数据块与目的数据块在存储中的位置情况
对于两个数据块分离的情况,如图1.1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:
当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图1.14(b)所示。
当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图1.14(c)所示。
实验程序流程图如图1.5所示。
开 始 源数据块首地址→SI 源数据块首地址→SI 搬移字节数→CX>> SI←[SI]+[CX]-1 DI←[DI]+[CX]-1DI←[(SI)] SI←[SI]-1 DI←[DI]-1CX←[CX]-1N[CX]=0?Y结 束[SI]>[DI]?DI←[(SI)] SI←[SI]+1 DI←[DI]+1CX←[CX]-1[CX]=0?YN
图1.5 程序流程图
1.1.4 实验程序如下 SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV CX,0010H MOV SI,3100H MOV DI,3200H CMP SI,DI JA A2 ADD SI,CX ADD DI,CX DEC SI DEC DI
A1: MOV AL,[SI] MOV [DI],AL DEC SI DEC DI DEC CX JNE A1 JMP A3 A2: MOV AL,[SI] MOV [DI],AL INC SI INC DI DEC CX JNE A2
A3: MOV AX,4C00H;程序终止 INT 21H CODE ENDS END START
1.1.5 实验步骤
1. 按流程图编写实验程序,经编译、链接无误后装入系统。 2. 用E命令在以SI为起始地址的单元中填入16个数。 3. 运行程序,待程序运行停止。
4. 通过D命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同。
5. 通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。
1.1.6 实验结果