1、 本科实验报告 实验名称: 分支和循环实验 课程名称: CPU与汇编语言和选修实验 实验时间: 2017.10.24 任课教师: 高平 实验地点: 10-102 实验教师: 高平 实验类型: █ 原理验证 □ 综合设计 □ 自主创新 学生姓名: xx 学号/班级: xx 组 号: 学 院: 信息与电子学院 同组搭档: 专 业: 信号与信息处理 成 绩: 一、 实验目的 1) 掌握比较
2、指令; 2) 理解条件转移和无条件转移指令的区别; 3) 掌握单分支、双分支、多分支的程序设计方法; 4) 掌握循环程序设计方法。 二、 实验内容 内容一 程序代码: DATAS SEGMENT BUF DB 12H,98H,45H,64H,78H,36H,55H,44H,0ABH,0CFH COUNT EQU $-BUF NUM1 DB 0 NUM2 DB 0 BUF1 DB 00,00 BUF2 DB 00,00 DATAS ENDS STACKS SEGMENT STAC
3、KS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV CX,COUNT MOV SI,0 MOV DI,0 L: MOV AL,BUF[SI] CMP AL,0 JG L1 INC NUM2 CBW ADC WORD PTR BUF2[DI],AX JMP L2 L1: INC NUM1
4、 CBW ADC WORD PTR BUF1[DI],AX L2: INC SI LOOP L MOV AH,4CH INT 21H CODES ENDS END START 程序运行结果: 和 个数 正数 0202 7 负数 FF12 3 内容二 实验代码: DATAS SEGMENT BUF DB 12H,98H,45H,64H,78H,36H,55H,44H,0ABH,0CFH COUNT EQU $-BUF
5、 MAX DB 0 MIN DB 0 DATAS ENDS STACKS SEGMENT STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV CX,COUNT MOV SI,0 MOV AL,BUF[SI] MOV MAX,AL L: INC SI MOV AL,BUF[SI] CMP AL,MAX
6、 JL L1 MOV MAX,AL L1: DEC CX JNZ L MOV CX,COUNT MOV SI,0 MOV AL,BUF[SI] MOV MIN,AL M: INC SI MOV AL,BUF[SI] CMP AL,MIN JA M1 MOV MIN,AL M1: DEC CX JNZ M MOV AH,4CH INT 21H CODES ENDS EN
7、D START 程序运行结果: 所以可得有符号数的最大值为78H,无符号数的最小值12H。 内容三 实验代码: DATAS SEGMENT BUF1 DB 'CHAR',0DH,0AH,'$' BUF2 DB 'char',0DH,0AH,'$' DATAS ENDS STACKS SEGMENT STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX
8、 MOV AH,1H INT 21H CMP AL,39H JLE L1 CMP AL,5AH JLE L2 LEA DX, BUF2 MOV AH,09H INT 21H JMP L L1: MOV DL,AL MOV AH,2 INT 21H JMP L L2: LEA DX, BUF1 MOV AH,09H INT 21H JMP L L:
9、 MOV AH,4CH INT 21H CODES ENDS END START 代码运行结果: 输入数字5时输出5 输入大写字符Q时输出CHAR 输入小写字符q时输出char 内容四 实验代码: DATAS SEGMENT BUF DB 12H,98H,0H,64H,51H,46H,62H,0H,0ACH,0AFH COUNT EQU $-BUF A1 DB 0 A2 DB 0 A3 DB 0 DATAS ENDS STACKS SEGMENT STACKS EN
10、DS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV CX,COUNT MOV SI,0 L: MOV AL,BUF[SI] CMP AL,0 JGE L1 INC A2 JMP L2 L1: CMP AL,0 JG L3 INC A3 JMP L2 L3: INC A1 L2: INC SI LOOP L MOV AH,4CH INT 21H CODES ENDS END START 程序运行结果: 自定义的BUF缓存区中分别有正数5个,负数3个,零2个。






