微机实验二、三

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档