| 系别 | 计算机 | 班级 | B100505 | 学号 | B10050527 | 姓名 | 张勋 | ||
| 课程名称 | 微机原理与接口技术 | 实验日期 | 4.23 | ||||||
| 实验名称 | 循环程序设计 | 成绩 | |||||||
| 实验目的:1、加深对循环结构的理解; 2、掌握循环程序的设计方法; 3、学会用DEBUG调试程序。 | |||||||||
| 实验条件:1、计算机一台 2、MASM for Windows 或者 MASM5.0以上编译环境 | |||||||||
| 实验内容: 一、 试验题目: 1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。 2.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。 二、 试验程序: 1.汇编程序如下: DATA SEGMENT BUF DW -2,3,14,-4,8,-2,11,25 BUF1 DW 8 DUP(0) BUF2 DW 8 DUP(0) A DW ? B DW ? DATA ENDS STACK SEGMENT PARA STACK 'STACK' DB 200 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA, ES: DATA, SS: STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX XOR DX,DX MOV CX,8 MOV DI,OFFSET BUF MOV SI,OFFSET BUF1 MOV BX,OFFSET BUF2 BEGIN:MOV AX,[DI] CMP AX,0000H JGE F1 MOV [BX],AX INC BX INC BX JMP F2 F1: MOV [SI],AX INC DL INC SI INC SI F2: INC DI INC DI LOOP BEGIN MOV DI,OFFSET A MOV SI,OFFSET B MOV [DI],DL MOV DH,8 SUB DH,DL MOV [SI],DH MOV AH,4CH INT 21H CODE ENDS END START 已知有5个正数,3个负数,则DH、DL分别为03和05,运行程序结束后,查询这两个区域,运行结果如图: | |||||||||
2.汇编程序如下: DATA SEGMENT COUNT DB ? TOTAL DB ? DATA ENDS STACK SEGMENT PARA STACK 'STACK' DB 200 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA,ES:DATA, SS: STACK START: MOV AX,DATA MOV DS,AX MOV DI,OFFSET COUNT MOV SI,OFFSET TOTAL XOR DX,DX XOR AX,AX BEGIN: INC DX ADD AX,DX CMP AX,55 JBE BEGIN MOV [SI],AX MOV [DI],DX MOV AH,4CH INT 21H CODE ENDS END START 用AX来存放TOTOL,DX存COUNT,运行结果如图: | |||||||||
| 实验总结: 通过本次实验,对循环结构程序设计能熟练掌握并且应用,同时弥补了一些没有注意到的细节,比如取某段数据首地址,偏移量等语句的使用,通过练习操作,相信会使我对微机及汇编知识的学习大有帮助。 | |||||||||