微机实验二、三
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二运算类编程实验
一、实验目的
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