实验三
分支程序、循环程序设计实验
一、实验目的
1.掌握分支程序的结构。
2.掌握分支程序的设计、调试方法。 3.加深对循环结构的理解。
4.掌握循环结构程序设计的方法以及调试方法。
二、实验设备
PC 机一台, TD-PITE 实验装置一套。
三、实验内容:
设计一数据块间的搬移程序。设计思想: 1 所示。
程序要求把内存中一数据区〔称为源数据块〕
传送
到另一存储区〔称为目的数据块〕 。源数据块和目的数据块在存储中可能有三种情况,如图
图 3-1 源数据块与目的数据块在存储中的位置情况
对于两个数据块别离的情况,如图 而遭到破坏,可有如下结论:
当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图 当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图 参考流程:如图 3-2 所示。
3-1〔 b〕所示。 3-1〔 c〕所示。
3-1〔 a〕,数据的传送从数据块的首地址开始,或从数据
“搬移 〞
块的末地址开始均可。但是对于有重叠的情况,那么要加以分析,否那么重叠局部会因
微机原理实验之分支程序、循环程序设计
实验程序
STACK SEGMENT STACK
DW DUP(?)
STACK 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
3-2程序流程图
图 微机原理实验之分支程序、循环程序设计
JNE A2
A3: CODE
JMP A3 ENDS
END START
实验步骤
1. 按流程图编写实验程序,经编译、链接无误后装入系统; 2. 用 E 命令在以 SI 为起始地址的单元中填入 3. 运行程序,然后再停止运行; 4. 通过 D 命令查看
DI 为起始地址的单元中的数据是否与
SI 单元中数据相同;
5. 通过改变 SI、DI 的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。
2. 计算 S= 1+ 2×3+ 3×4+4×5+ +N(N + 1),直到 N(N + 1)项大于 200 为止。
16 个数;
编写实验程序,计算上式的结果,参考流程图如图 3-3 所示。
图 3-3 程序流程图
实验程序
STACK SEGMENT STACK
DW DUP(?)
STACK ENDS
CODE
SEGMENT
ASSUME CS:CODE
START: MOV DX,0001H
MOV BL,02H
A1:
MOV AL,BL
INC BL MUL BL ADD DX,AX
;结果存于 DX 中
微机原理实验之分支程序、循环程序设计
CMP AX,00C8H
;判断 N(N+1) 与 200 的大小
JNA A1
A2:
CODE
JMP A2
ENDS
END START
实验步骤
〔1〕编写实验程序,编译、链接无误后装入系统; 〔2〕运行程序,然后再停止程序运行; 〔3〕运算结果存储在存放器 将产生数据溢出。
DX 中,查看结果是否正确;
〔4〕可以改变 N〔 N+ 1〕的条件来验证程序功能是否正确,但要注意,结果假设大于
FFFFH
2. 求某数据区内负数的个数
设数据区的第一单元存放区内单元数据的个数, 从第二单元开始存放数据, 在区内最后一个单元存放结果。 为统计数据区内负数的个数, 需要逐个判断区内的每一个数据, 然后将所有数据中但凡符号位为 1 的数据的个数累加起来,即得到区内所包含负数的个数。 实验程序流程图如图
3-4 所示。
图 3-4 程序流程图
实验程序
STACK SEGMENT STACK
DW DUP(?)
STACK ENDS
CODE
SEGMENT
ASSUME CS:CODE
START: MOV DI, 3000H
MOV CL, [DI] XOR CH, CH
;数据区首地址
;取数据个数
微机原理实验之分支程序、循环程序设计
MOV BL, CH INC DI
MOV AL, [DI] TEST AL, 80H JE A2 INC BL
;指向第一个数据
A1:
;检查数据首位是否为 1
;负数个数加 1
A2:
INC DI LOOP A1
MOV [DI], BL ;保存结果
A3: JMP A3 CODE
ENDS
END START
实验步骤
( 1〕按实验流程编写实验程序; ( 2〕编译、链接无误后装入系统; ( 3〕键入 E3000 ,输入数据如下:
3000= 06 〔数据个数〕 3001= 12 3002= 88 3003= 82 3004= 90 3005= 22 3006= 33
〔4〕先运行程序,然后停止程序运行; 〔5〕查看 3007 内存单元或存放器
BL 中的内容,结果应为〔6〕可以进行反复测试来验证程序的正确性。
03;
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务