微机原理及应用实验-简 - 图文 下载本文

《微机原理及应用》实验教程

实验二 循环结构程序设计

一、实验目的

1、掌握宏汇编程序的基本格式及加深对程序循环结构的理解。 2、掌握循环结构程序设计和调试的方法。

二、实验仪器、设备

计算机或EPC-1000型嵌入式微机实验仪。

三、实验内容

编写程序:

1、使 S=1+2*3+3*4+…+N*(N+1),直到N*(N+1)项大于200为止。 2、求某段数据区内负数的个数。

设数据区的第一个单元存放数据的个数,从第二个单元开始存放数据,在最后一个单元存放结果。 参考程序一:

STACK SEGMENT STACK

DB 32 DUP (?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STACK START: MOV DX, 0001H

MOV BL, 02H L1 : MOV AL, BL

INC BL

MUL BL ;al*bl=ax

ADD DX, AX

CMP AX, 00C8H ;200 JNA L1 INT 03H CODE ENDS

END START 参考程序二:(数据段内的数据可根据需要改变)

STACK SEGMENT STACK

DB 64 DUP(?) STACK ENDS

DATA SEGMENT

DB 06H,12H,88H,82H,90H,22H,33H DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STACK,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DI,0000H MOV CL,[DI] XOR CH,CH

11

《微机原理及应用》实验教程

MOV BL,CH INC DI

A1: MOV AL,[DI]

TEST AL,80H ;数据首位是否为1

JE A2 INC BL A2: INC DI LOOP A1 MOV [DI],BL MOV AX,4C00H INT 21H CODE ENDS

END START

四、实验步骤

1、编辑程序。用编辑软件如:EDIT,输入源程序,并保存,后缀名为 . ASM。

2、编译程序。在DOS 状态下,用MASM.EXE编译源程序。编译无错误后,会生成相应的OBJ目标文件和交叉文件。我们需要的是OBJ文件。操作系统为WIN2K,XP等的机器要求用MASM6.0以上版本。

格式:MASM EXAM1.ASM 或 MASM EXAM1.ASM ;

如果结尾不加分号,那么回车后会有一个提示,提示将要生成的OBJ文件名和相应的其他一些文件名是什么?可以一路回车取默认值,即与源文件同文件名。如果加上分号后,即可避免这些提示。直接生成同文件名的OBJ文件。

3、连接程序。用LINK. EXE 连接OBJ文件,生成可执行的EXE文件。

格式:LINK EXAM1.OBJ 或 LINK EXAM1.OBJ; (区别同上)

如果源程序中无堆栈段,则在连接完后,有一个警告提示,提示程序无堆栈段,此处警告可忽略。 4、运行程序。根据需要,可选择直接通过文件名的方式运行程序,或者是用DEBUG将生成的可执行EXE文件装入内存后,用G命令运行。

例:C:\\> DEBUG 文件名. EXE

-U ;先用反汇编来查看源程序装入的地址和数据段的地址 :

-G=xxxx:xxxx ;从程序装入的地址处,开始运行程序 5、查看程序运行结果。

6、也可使用EMU8086软件进行调试和运行。(使用方法此处省略)

五、实验报告要求

参考前言内相关部分内容。

六、实验注意事项

程序的输入要正确,养成良好的程序格式编辑习惯。

七、思考题

1、编写程序把存储区F000H:1000-10FFH单元的内容传送到地址为6000H:0000的存储区中。 2、修改程序2,使其能分别求出数据区中正数、零和负数的个数。

12

《微机原理及应用》实验教程

实验三 排序结构程序设计

一、实验目的

1、掌握分支、循环、子程序调用等基本程序结构。 2、学习综合程序的设计、编制及调试。

二、实验仪器、设备

计算机或EPC-1000型嵌入式微机实验仪。

三、实验内容

在数据区中存放着一组数,数据的个数就是数据缓冲区的长度,要求用大数沉底法(或冒泡法)对该数据区中数据按递增关系排序。

设计思想:

A、从最后一个数(或者第一个数)开始,依次把相邻的两个数进行比较,即第N个数与第N-1个数比较,第N-1个数与第N-2个数比较等等;若第N-1个数大于第N个数,则两者交换,否则不交换,直到N个数的相邻两个数都比较完为止。此时,N个数中的最小数将被排在N个数的最前列。

B、对剩下的N-1个数重复上步,找到N-1个数中的最小数。

C、重复第二步,直到N个数全部排序好为止。 编程:将DATA数据区内的10个16位有符号二进制数,由小到大排序,结果放在原数据区。 这10个数是:6666H, 7777H, 8888H, 9999H, 0AAAAH, 0BBBBH, 0CCCCH, 0DDDDH, 0EEEEH,

0FFFFH

参考程序:

DATA SEGMENT

DW 6666H, 7777H, 8888H, 9999H, 0AAAAH, 0BBBBH, 0CCCCH, 0DDDDH, 0EEEEH, 0FFFFH DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA START: MOV AX, DATA

MOV DS, AX MOV CX, 9 L1: MOV DX, CX

MOV BX, 0 L2: MOV AX, [BX]

INC BX INC BX

CMP AX,[BX]

JLE DONE ;有符号数的小于或等于转移 XCHG [BX], AX DEC BX DEC BX

MOV [BX], AX INC BX

INC BX

DONE: DEC DX

JNE L2

13

《微机原理及应用》实验教程

LOOP L1

MOV AX, 4C00H

INT 21H

CODE ENDS

END START

四、实验步骤:

(1)用编辑软件如:EDIT,输入源程序,并保存,后缀名为 . ASM。 (2)用MASM.EXE编译源程序,编译无错后,生成相应的OBJ目标文件。 (3)用LINK. EXE 连接OBJ文件,生成可执行的EXE文件。

(4)运行程序:根据需要,可选择直接通过文件名的方式运行程序,或者是用DEBUG将可执行的EXE文件跳入内存后,用G命令运行。

例:C:\\> DEBUG 文件名. EXE

-U ;先用反汇编来查看源程序装入的地址 :

-G=xxxx:xxxx ;从程序装入的地址处,开始运行程序 (5)查看实验结果。

五、实验报告要求

参考前言内相关部分内容。

六、思考题

如何用冒泡法来改写此程序。

14