实验六 循环程序设计
一 实验目的
1.加深对循环结构的理解 2.掌握循环结构程序设计的方法。 3.熟练掌握调试循环程序的方法。
二 实验设备
TDN86/51或TDN86/88教学实验系统一台
第 31 页 共 87 页
31
三 实验内容及步骤
1.流程图: 实验一:
1 DX 2 BL [BL] AL [BL]+1 AL [AL]*[BL] AX [DX]+[AX] DX N [AX]>200 结束 程序源代码:
STACK SEGMENT
DW 64 DUP(?) STACK ENDS CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,0001H ;将0001H传送给DX,DX=0001H MOV BL,02H ;将02H传送给BL,BL=02H A1: MOV AL,BL ;将BL传送给AL
INC BL ;对BL进行加一在传送给BL
MUL BL ;将AL与BL相乘并将结果传送给AX ADD DX,AX ;AX与DX相加并将结果传给DX
第 32 页 共 87 页 32
CMP AX,00C8H ;用目的操作数减去源操作数,AX减去00C8H,比较AX数是否大
于00C8H
JNA A1 ;当CF=1或ZF=1时进行跳转,如跳转则进行A1,如不跳转则进行
A2
A2: INT 03H ;对操作数加1 CODE ENDS
END START
第 33 页 共 87 页 33
开始 数据区首址 D1 数据个数 CL CH、BL置0 DI增1 数据首位=1? N Y BL+1 BL DI增1 N CX=0 存结果 结束 第 34 页 共 87 页
34
实验二: 流程图:
1.程序源代码:
STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT
ASSUME CS:CODE
START: MOV DI,3000H ;设数据区首址,将3000H传给DI,DI=3000H MOV CL,[DI] ;送数据个数,将DI的值传给CL XOR CH,CH ;CH清0 MOV BL,CH ;BL清0
INC DI ;指针指向第一个数据
A1: MOV AL,[DI] ;将DI的值传给AL TEST AL,80H ;判断数据首位是否为1
JE A2 ;判断,当ZF=1时跳转到A2,如不是则顺序执行 INC BL ;负数个数累加
A2: INC DI ;指针指向第一个数据 LOOP A1 ;循环指令,循环执行A1 MOV [DI],BL ;将BL数据传给DI INT 03H ;对操作数进行加1 CODE ENDS
END START
2.输入程序并检查无误,经汇编、连接后装入系统 3. E3000↙输入数据如下: 3000=06(数据个数) 3001=12、88、82、90、22、33 4.G=0000:2000↙,运行实验程序。 5.D=3007↙,显示结果03
第 35 页 共 87 页
35