微机原理 实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京信息科技大学
自动化学院
实验报告
课程名称微型计算机原理与接口技术实验名称循环程序设计及子程序设计实验仪器 TDN86/88教学实验台
专业自动化学院
班级/学号自控0801/2008010827
学生姓名林明泉
实验日期
实验地点
成绩
指导教师
北京信息科技大学
自动化学院
(微机原理)实验报告
专业:自动化班级:自控0801 学号:2008010827 姓名:林明泉
实验名称循环程序、子程序
设计
实验地点实验楼706 实验时间10.10.18
1.实验目的:
1.加深对循环结构的理解;
2.掌握循环结构程序设计的方法;
3.熟练掌握调试循环程序的方法。
4.学习子程序的定义和调用方法;
5.掌握子程序的嵌套、递归子程序的结构;
6.掌握子程序的设计、编制及调用。
2.实验设备:
TDN86/88教学实验系统一台,计算机一台
3. 实验原理及内容:
STACK1 SEGMENT STACK
DW 64 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START:MOV DX,0001H
MOV BL,02H
A1:MOV AL,BL
INC BL
MUL BL
ADD DX,AX
CMP AX,00C8H
JNA A1
A2:INT 03H
CODE ENDS
END START
STACK1 SEGMENT STACK
DW 64 DUP(?) STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE START:MOV DI,3000H
MOV CL,[DI]
XOR CH,CH
MOV BL,CH
INC DI
A1:MOV AL,[DI]
TEST AL,80H
JE A2
INC BL
A2:INC DI
LOOP A1
MOV [DI],BL
INT 03H
CODE ENDS
END START
STACK1 SEGMENT STACK
DW 64 DUP(?) STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE START:MOV DI,3000H
MOV CL,[DI]
XOR CH,CH
MOV BL,CH
MOV BH,CH
MOV AH,CH
INC DI
A1:MOV AL,[DI]
TEST AL,80H
JE A2
INC BL
A2:TEST AL,0FFH
JZ A3
INC BH
JMP NEXT
A3:INC AH
NEXT:INC DI
LOOP A1
MOV [DI],BL
MOV [DI+1],AH
MOV [DI+2],BH
INT 03H
CODE ENDS
END START
STACK1 SEGMENT STACK
DW 64 DUP(?)
STACK1 ENDS
DATA SEGMENT
BUF1 DB 6 DUP(?)
PLUS DB 6 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA START:MOV AX,DATA
MOV DS,AX
MOV AX,OFFSET BUF1
MOV DI,AX
MOV AX,OFFSET PLUS
MOV SI,AX
MOV CX,6
A1:MOV AL,[DI]
TEST AL,80H
JNE A2
TEST AL,0FFH
JE NEXT
MOV [SI],AL
INC SI
NEXT:INC DI
JMP A3
A2:PUSH DI
PUSH CX
NEXT1:MOV BL,[DI+1]
MOV [DI],BL
INC DI
LOOP NEXT1
POP CX
POP DI
A3:LOOP A1
INT 03H
CODE ENDS
END START
STACK1 SEGMENT STACK
DW 64 DUP(?) STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE START:MOV SI,3000H
MOV CX,0008H
CALL BRANCH
INT 03H BRANCH:JCXZ A4
PUSH SI
PUSH CX
PUSH BX
MOV BH,[SI]
MOV BL,BH
A1:LODSB
CMP AL,BH
JBE A2
MOV BH,AL
JMP A3
A2:CMP AL,BL
JAE A3
MOV BL,AL
A3:LOOP A1
MOV AX,BX
POP BX
POP CX
POP SI
A4:RET
END START
STACK1 SEGMENT STACK
DW 64 DUP(?) STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE START:MOV AX,3010H
PUSH AX
MOV SI,3000H
MOV AX,[SI]
PUSH AX
MOV DI,0000H
CALL BRANCH
INT 03H
BRANCH:PUSH BP
MOV BP,SP
PUSH BX
PUSH AX
MOV BX,[BP+DI+06H]
MOV AX,[BP+DI+04H]
CMP AX,0000H
JZ A1
PUSH BX
DEC AX
PUSH AX
CALL BRANCH
MOV BX,[BP+DI+06H]
MOV AX,[BX]
PUSH BX
MOV BX,[BP+DI+04H]
MUL BX
POP BX
JMP A2
A1:MOV AX, 0001H
A2:MOV [BX],AX
POP AX
POP BX
POP BP
RET 0004H
CODE ENDS
END START
STACK1 SEGMENT STACK
DW 64 DUP(?)
STACK1 ENDS
DATA SEGMENT
ADDR DB 8 DUP(?)
DCP DB 1 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:MOV AX,DATA
MOV DS,AX
CALL SUM
MOV BL,08H
DIV BL
MOV DCP,AL
INT 03H
SUM:MOV CX,8
MOV AX,OFFSET ADDR
MOV DI,AX
XOR AX,AX
NEXT:ADD AX,BYTE PTR[DI]
INC DI
LOOP NEXT
RET
CODE ENDS
END START
1.只要更改跳转指令JBE为JLE,JAE为JGE ,即无符号数比较测试改为有符号数比较测试就可以了
2.返回CALL指令所在处,在子程序中执行RET指令程序就自动返回到子程序调用处,子程序执行前,先把IP(如果是长调用包括CS)入栈保护,子程序执行完之后,RET指令让IP(如果是长调用包括CS)出栈,继续执行主程序。
运算类编程:
1.输入源程序,进行编译、链接和加载。
2.运行程序并检查结果。
3.反复改变输入,考察程序的正确性。
5. 实验结果及分析:
说明:
1.实验名称、实验目的、实验设备、实验原理及内容由教师确定,实验前学生填好;
2.实验步骤、实验结果及分析由学生记录实验的过程,包括操作过程、实验结果、遇到哪些问题以及如何
解决等;
3.实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等。