实验6 循环结构程序设计

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

河北工业大学城市学院《汇编语言程序设计》实验报告

实验6 循环结构程序设计(1)

一、实验目的

1.掌握循环指令的使用方法,掌握循环结构程序编写、调试和运行的方法。

2.掌握使用汇编语言解决常见问题的方法。

二、实验内容

1.在内存数据区中从BUF1为首地址存放了10个字节数据,编程完成将数据块复制到BUF2为首址的存储区中。

解:程序代码为:

DATAS SEGMENT

BUF1 DB 01H,02H,03H,04H,05H

DB 06H,07H,08H,09H,10H BUF2 DB 10 DUP(?)

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS START:

MOV AX,DATAS

MOV DS,AX

MOV BL,BUF1 ;取源数据首址

MOV CL,BUF2 ;取目标数据首址

MOV CX,10

L1: MOV AL,BL

MOV CL,AL ;完成字符传送

INC BL ;修改地址指针

INC CL

LOOP L1

MOV AH,4CH

INT 21H

CODES ENDS

END START

2.内存地址BUFFER开始存放着10个带符号字节数组,编写程序求数组中正数、零和负数的个数,并分别将它们存于PLUS开始的单元。

解:程序代码为:

DATAS SEGMENT

BUFFER DB

12H,34H,00H,78H,90H , 00H,0ABH,0CDH,1AH,3CH PLUS DB ? DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS START:

MOV AX,DATAS MOV DS,AX XOR AH,AH XOR BL,BL XOR BH,BH MOV CX,10 LEA SI,BUFFER L: MOV AL,[SI] OR AL,AL JZ L1 SHL AL,1 JC L2 INC AH JMP L3 L2: INC BH JMP L3 L1: INC BL L3: INC SI DEC CX JNZ L

MOV PLUS,AH MOV PLUS[1],BL

MOV PLUS[2],BH MOV AH,4CH INT 21H CODES ENDS END START

执行结果部分截图为:

3.内存单元MEM 开始存放了一个长度为10的无符号字节数组,编写程序找出其中的最大值和最小值并存于MAX 和MIN 单元。

根据程序结果可得,正数为3个,零的个数为3个,负数的个数为4个。

解:程序代码为:

DATAS SEGMENT

MEM DB

12H,23H,34H,45H,56H,65H,54H,32H,3 1H,24H

MAX DB ?

MIN DB ?

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS START:

MOV AX,DATAS

MOV DS,AX

MOV CX,10

LEA SI,MEM

MOV AL,[SI]

MOV MAX,AL

MOV MIN,AL

LEA SI,MEM

LEA DI,MAX

LEA BP,MIN

AGAIN:

MOV AL,[SI]

CMP AL,[DI]

JA L1

CMP AL,[BP]

JB L2

JMP L3

L1: MOV MAX,AL JMP L3

L2: MOV MIN,AL L3: INC SI

LOOP AGAIN

MOV AH,4CH

INT 21H CODES ENDS

END START

执行结果部分截图为:

根据程序运行结果可得,最大值为65,最小

值为12

相关文档
最新文档