1、本科实验报告 实验名称 : 分支和循环实验 课程名称:CPU 与汇编语言和选修实验实验时间: 2017.10.24 任课教师:高平实验地点: 10-102 实验教师:高平 实验类型: 原理验证 综合设计 学生姓名:xx 自主创新 学号/班级: xx组号: 学院: 信息与电子学院同组搭档: 专业: 信号与信息处理成绩: 一、实验目的 1)掌握比较指令; 2)理解条件转移和无条件转移指令的区别; 3)掌握单分支、双分支、多分支的程序设计方法; 4)掌握循环程序设计方法。 二、实验内容 内容一 程序代码: DATASSEGMENT BUFDB12H,98H,45H,64H,78H,36H,55H,4
2、4H,0ABH,0CFH COUNT EQU$-BUF NUM1DB0 NUM2DB0 BUF1DB00,00 BUF2DB00,00 DATASENDS STACKSSEGMENT STACKSENDS CODESSEGMENT ASSUMCES:CODES,DS:DATAS,SS:STACKS START: MOVAX,DATAS MOVDS,AX MOVCX,COUNT MOVSI,0 MOVDI,0 L: MOVAL,BUFSI CMPAL,0 JGL1 INCNUM2 CBW ADCWORDPTRBUF2DI,AX JMP L2 L1: INCNUM1 CBW ADCWORDPTRB
3、UF1DI,AX L2: INCSI LOOP L MOVAH,4CH INT21H CODESENDS ENDSTART 程序运行结果: 和个数 正数02027 负数FF123 内容二 实验代码: DATASSEGMENT BUFDB12H,98H,45H,64H,78H,36H,55H,44H,0ABH,0CFH COUNT EQU$-BUF MAXDB0 MINDB0 DATASENDS STACKSSEGMENT STACKSENDS CODESSEGMENT ASSUMCES:CODES,DS:DATAS,SS:STACKS START: MOVAX,DATAS MOVDS,AX M
4、OVCX,COUNT MOVSI,0 MOVAL,BUFSI MOVMAX,AL L: INCSI MOVAL,BUFSI CMPAL,MAX JLL1 MOVMAX,AL L1: DECCX JNZL MOVCX,COUNT MOVSI,0 MOVAL,BUFSI MOVMIN,AL M: INCSI MOVAL,BUFSI CMPAL,MIN JAM1 MOVMIN,AL M1: DECCX JNZM MOVAH,4CH INT21H CODESENDS ENDSTART 程序运行结果: 所以可得有符号数的最大值为78H,无符号数的最小值12H。 内容三 实验代码: DATASSEGMEN
5、T BUF1DBCHAR,0DH,0AH,$ BUF2DBchar,0DH,0AH,$ DATASENDS STACKSSEGMENT STACKSENDS CODESSEGMENT ASSUMCES:CODES,DS:DATAS,SS:STACKS START: MOVAX,DATAS MOVDS,AX MOVAH,1H INT21H CMPAL,39H JLEL1 CMPAL,5AH JLEL2 LEADX,BUF2 MOVAH,09H INT21H JMP L L1: MOVDL,AL MOVAH,2 INT21HJMP L L2: LEADX,BUF1 MOVAH,09H INT21H
6、 JMP L L: MOVAH,4CH INT21H CODESENDS ENDSTART 代码运行结果: 输入数字 5 时输出 5 输入大写字符 Q 时输出 CHAR 输入小写字符 q 时输出 char 内容四 实验代码: DATASSEGMENT BUFDB12H,98H,0H,64H,51H,46H,62H,0H,0ACH,0AFH COUNT EQU$-BUF A1DB0 A2DB0 A3DB0 DATASENDS STACKSSEGMENT STACKSENDS CODESSEGMENT ASSUMCES:CODES,DS:DATAS,SS:STACKS START: MOVAX,DATAS MOVDS,AX MOVCX,COUNT MOVSI,0 L: MOVAL,BUFSI CMPAL,0 JGEL1 INCA2 JMP L2 L1: CMPAL,0 JGL3 INCA3 JMP L2 L3: INCA1 L2: INCSI LOOP L MOVAH,4CH INT21H CODESENDS ENDSTART 程序运行结果: 自定义的 BUF 缓存区中分别有正数5个,负数 3个,零 2个。