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