汇编语言循环程序实验报告

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

一、实验目的

(1) 加深对循环结构的理解;

(2) 掌握循环程序的设计方法;

(3) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

二、实验内容

1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。

2.设STR字符串是以0结尾。试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。

3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。

三、算法描述流程图

实验内容1、2、3的流程图分别为图1、图2、图3。

1 图

2 图3

四、实验步骤

1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。

1)输入源程序:

DATA SEGMENT

BUF DW 23,123,-12,-210,45,0,90,-453

BUF1 DW 8 DUP(0)

BUF2 DW 8 DUP(0)

A DW ?

B DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA

START: MOV AX, DATA

MOV DS, AX

LEA BX, BUF

LEA SI, BUF1

LEA DI, BUF2

MOV A,0

MOV B,0

MOV CX,8

L0: MOV AX,[BX]

CMP AX,0

JGE L1

MOV [DI],AX

ADD DI,2

INC B

JMP NEXT

L1: MOV [SI],AX

ADD SI,2

INC A

NEXT: ADD BX,2

LOOP L0

MOV AH, 4CH

INT 21H

CODE ENDS

END START

2)运行程序。

3)检查结果无错误后将结果记录下来。

2.设STR字符串是以0结尾。试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。

1)输入源程序:

DATA SEGMENT

STR DB 'HOW arE YoU!',0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET STR

AGAIN:MOV DL,[SI]

OR DL,DL

JZ OK

CMP DL,'A'

JB NEXT

CMP DL,'Z'

JA NEXT

ADD DL,20H

MOV [SI],DL

NEXT: MOV AH,2

INT 21H

INC SI

JMP AGAIN

OK: MOV AH,4CH

INT 21H

CODE ENDS

END START

2)运行程序。

3)检查结果无错误后将结果记录下来。

3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。1)输入源程序:

DATA SEGMENT

COUNT DW ?

TOTAL DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV CX,0

MOV AX,0

MOV BX,0

LOOP1: INC BX

ADD AX,BX

INC CX

CMP AX,5050

JLE LOOP1

MOV COUNT,CX

MOV TOTAL,AX

CODE ENDS

END START

2)运行程序。

3)检查结果无错误后将结果记录下来。

五、实验结果

1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。程序运行结果如下界面所示:

2.设STR字符串是以0结尾。试编写一个把字符串中的所有大写字母改为小

写字母的程序并将转换后的字符串显示输出。程序运行结果如下界面所示:

3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。程序运行结果如下界面所示:

六、实验心得

通过运行分析源程序,让我更加了解了循环程序的基本要求和步骤。通过思考题深入学习了四种循环指令同时对ASCII码表进一步熟悉,为以后更加熟练操作编程提供方便。今后我会进一步学习汇编语言为以后学习单片机做准备。

相关文档
最新文档