当前位置:文档之家› 微机实验二、三

微机实验二、三

实验二运算类编程实验
一、实验目的
1)掌握使用运算类指令编程及调试方法。

2)掌握运算类指令对各状态标志位的影响及其测试方法。

3)学习使用软件监控变量的方法。

二、实验设备
PC一台,TD-PITE微机/单片机教学实验装置一套。

三、实验内容及步骤
1、十进制的加法运算
题目:计算X+Y=Z,其中X、Y、Z为2字节非压缩BCD数
实验程序如下:
STACK SEGMENT STACK
STACK ENDS
DA TA SEGMENT
X DW ?
Y DW ?
Z DW ?
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV SI, OFFSET X
MOV DI, OFFSET Z
MOV AL, [SI]
ADD AL, [SI+02H]
AAA
MOV [DI], AL
MOV AH, 00H
MOV AL, [SI+01H]
MOV AL, [SI+03H]
AAA
INC DI
MOV [DI], AX
MOV AL, 4CH
INT 21H
CODE ENDS
END START
实验步骤:
1)输入实验程序并检查无误,经汇编、连接后生成EXE文件。

2)使用U(CS):0000↓命令查看MOV AX,DATA语句得数据段段地址,即DS=DA-TA=XXXX,
记下该地址。

3)用E命令E(DS):0000↓给X、Y赋值,假定存入BCD数56和78:06 05 08 07
4)用G=(CS):0000↓命令运行以上程序
5)用D(DS):0004↓,显示计算结果:04 03 01
6)反复试几组数,检验程序的正确性。

编程练习
已知在起始地址为0500H的内存单元中,存放一组数据:10H,15H,0FH。

请编程求该数组的总和后将其扩大4倍,再转换成BCD数存入起始地址为0510H的单元中
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
ORG 0500H
DATA1 DB 10H, 15H, 0FH
ORG 0510H
RESULT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
LEA SI, DATA1
LEA DI, RESULT
MOV CX, 0002H
MOV AL, [SI]
A1: INC SI
ADD AL, [SI]
LOOP A1
MOV BL, 04H
MUL BL
MOV DL, 64H
MOV AH, 00H
DIV DL
MOV [DI], AL
INC DI
MOV AL, AH
MOV AH, 00H
MOV DL, 0AH
DIV DL
MOV [DI], AI
INC DI
MOV [DI], AH
INT 03H
CODE ENDS
ENDS START
实验步骤:
1)输入程序并检查无误,经汇编、连接后生成EXE文件。

2)使用U=(CS):0000↓命令查看MOV AX,DATA语句得数据段段地址。

3)用G=(CS):0000↓命令运行以上程序。

4)用D(DS):0005↓,显示计算结果:
5)反复试几组数,检验程序的正确性。

实验三分支、循环及子程序设计实验
一、实验目的
1)了解分支、循环、子程序等程序的基本结构。

2)掌握分支程序、循环结构程序的设计和调试方法。

3)掌握子程序的定义和调试方法。

二、实验设备
PC一台,TD-PITE微机/单片机教学实验装置一套。

三、实验内容与步骤
1、统计
题目:求某数据区内非零的正整数的个数
设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。

为统计数据区内非零的正整数的个数,需要逐个判断区内的每一个数据,然后将所有数据中非零且符号位为0的数据的个数累加起来,即得区内所包含非零的正整数额个数。

实验程序如下:
STACK SEGMENT STACK
DW 64 DUP (?)
STACK ENDS
DATA SEGMENT
ORG 0600H
DATA1 DB 16 DUP (?)
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
LEA DI, DATA1
MOV CL, [DI]
MOV CH, 00H
MOV BH, 00H
INC DI
A1: MOV AL,[DI]
CMP AL,0
JLE A2
INC BH
A2: INC DI
LOOP A1
MOV [DI],BH
INT 21H
CODE ENDS
END START
实验步骤:
1)输入实验程序并检查无误,经汇编、连接后生成EXE文件。

2)使用U(CS):0000↓命令查看MOV AX,DATA语句得数据段段地址,即DS=DA-TA=XXXX,记下该地址。

3)用E命令E(DS):0600↓输入07(数据个数)。

用E命令E(DS):0601↓输入12、85、01、88、22、90、33。

4)用G=(CS):0000↓命令运行以上程序。

5)用D命令查看D(DS):0608单元是否显示结果04。

6)反复试几组数,检验程序的正确性。

编程练习
设数据段SCORE单元开始连续存放着20个学生成绩,编写程序统计其中<60,60~69,70~79,80~89,>90分数段的人数,并把统计结果存放到从TOT开始的数据块中。

*设数据:64H,61H,5DH,55H,52H,44H,45H,48H,4DH,4FH,3CH,3FH,40H,41H,33H,56H,59H,30H 实验程序如下:
DATA SEGMENT
ORG 0500H
SCORE DB 64H,61H,5DH,55H,52H,44H,45H,48H,4DH,4FH,3CH,3FH,40H,41H, 33H, 56H, 59H, 30H
ORG 0550H
TOT DB 5 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
LEA SI, SCORE
LEA DI, TOT
MOV AX, 0
MOV BX, 0
MOV DX, 0
MOV CX, 20
FFF: MOV AL, [SI]
CMP AL, 90
JC AAA
INC AH
JMP EEE
AAA: CMP AL, 80
JC BBB
INC BH
JMP EEE
JC CCC
INC BL
JMP EEE
CCC; CMP AL, 60
JC DDD
INC DH
JMP EEE
DDD: INC DL
EEE: INC SI
LOOP FFF
MOV [DI], DL
MOV [DI+1], DH
MOV [DI+2], BL
MOV [DI+3], BH
MOV [DI+4], AH
MOV AH, 4CH
INT 21H
CODE ENDS
END START
实验总结
本次实验中,我已经可以熟悉的使用调制工具,但在运行中仍然是出现了许多报错,总结来说还是代码输入时的不准确,所以说输入代码时要一步一步的打,不要贪快,而是要准确有序。

相关主题