1、汇编语言综合程序实验报告东 北 大 学计算机硬件技术基础实验报告专业班级:姓名:学号:20092100实验题目:综合程序设计日期:2011年12月12日一、实验内容1.自内存DATA 单元开始存放若干个无符号字节数,数据个数在COUNT单元存放。编制程序分别计算其中奇数,偶数的和,并分别存入 ODDSUM, EVENSM单元。设各类和不超过16位二进制数,可用一个字表示或存放。2.试编制一程序。从键盘输入一个字符,若为“1”,则显示“THE FIRST SUBROUTINE!”;否则显示“INPUT RIGHT CHARACTER”,返回DOS。3.计算一组字数据中正数,负数和零的个数,并分别
2、存放在PCOUNT,MCOUNT和ZCOUNT单元。设该组数据首地址为 ARRY,数据个数在CNT单元存放。二、算法描述流程图实验内容1、2、3的流程图分别为图1、图2、图3。图1图2图3图2图1图3三、实验步骤1.自内存DATA 单元开始存放若干个无符号字节数,数据个数在COUNT单元存放。编制程序分别计算其中奇数,偶数的和,并分别存入 ODDSUM, EVENSM单元。设各类和不超过16位二进制数,可用一个字表示或存放。1)输入源程序:DSEG SEGMENTDATA DB 45H,16H,63H,24H,0B1H,0A6H,0A4H,18HCOUNT DW 08ODDSSUM DW 0E
3、VENSSUM DW 0DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGMAIN:MOV AX,DSEG MOV DS,AX LEA SI,DATA MOV CX,COUNT XOR AX,AX XOR BX,BX XOR DX,DXAGAIN:MOV AL,SI TEST AL,01 JZ EVENS ADD BX,AX JMP CHCNTEVENS:ADD DX,AXCHCNT:INC SI LOOP AGAIN MOV ODDSSUM,BX MOV EVENSSUM,DX MOV AH,4CH INT 21HCSEG ENDS END MAIN2)
4、运行程序。3)检查结果无错误后将结果记录下来。2.试编制一程序。从键盘输入一个字符,若为“1”,则显示“THE FIRST SUBROUTINE!”;否则显示“INPUT RIGHT CHARACTER”,返回DOS。1)输入源程序:DATA SEGMENTSTR0 DB INPUT THE RIGHT CHARACTER,$STR1 DB INPUT CHARACTER:$STR2 DB THE FIRST SUBROUTINE!$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV DX,OF
5、FSET STR1 MOV AH,09H INT 21H MOV AH,01H INT 21H CMP AL,1 JZ SUBF MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H LEA DX,STR0 MOV AH,09H INT 21H JMP EXITSUBF: LEA DX,STR2 MOV AH,09H INT 21H JMP EXITEXIT: MOV AH,4CH INT 21HCODE ENDS END START2)运行程序。3)检查结果无错误后将结果记录下来。3.计算一组字数据中正数,负数和零的个数,并分
6、别存放在PCOUNT,MCOUNT和ZCOUNT单元。设该组数据首地址为 ARRY,数据个数在CNT单元存放。1)输入源程序:DSEG SEGMENTARRY DW 15,-5,1,5,0,123,964,-327,0CNT DW 9PCOUNT DW 0MCOUNT DW 0ZCOUNT DW 0DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART:MOV AX,DSEG MOV DS,AX LEA SI,ARRY MOV CX,CNT XOR AX,AX XOR BX,BX XOR DX,DXPMZN0:TEST WORD PTRSI,0FFF
7、FH JS MINUS JNZ PLUS INC DX JMP PMZN1PLUS: INC AX JMP PMZN1 MINUS: INC BX JMP PMZN1PMZN1: INC SI+2 LOOP PMZN0 MOV PCOUNT,AX MOV MCOUNT,BX MOV ZCOUNT,DX MOV AH,4CH INT 21HCSEG ENDS END START2)运行程序。3)检查结果无错误后将结果记录下来。四、实验结果1.自内存DATA 单元开始存放若干个无符号字节数,数据个数在COUNT单元存放。编制程序分别计算其中奇数,偶数的和,并分别存入 ODDSUM, EVENSM单
8、元。设各类和不超过16位二进制数,可用一个字表示或存放。程序运行结果如下界面所示:2.试编制一程序。从键盘输入一个字符,若为“1”,则显示“THE FIRST SUBROUTINE!”;否则显示“INPUT RIGHT CHARACTER”,返回DOS。程序运行结果如下界面所示:3.计算一组字数据中正数,负数和零的个数,并分别存放在PCOUNT,MCOUNT和ZCOUNT单元。设该组数据首地址为 ARRY,数据个数在CNT单元存放。程序运行结果如下界面所示:五、思考题1.测试最低位状态也可以用右移指令,然后判断CF的状态.请问如何修改程序语句?答:将AGAIN和EVENS语句改为:AGAIN:
9、MOV AL,SI SHR AL,1 JNC EVENS SHL AL,1 INC AL ADD BX,AX JMP CHCNTEVENS: SHL AL,1 ADD DX,AX2.请仔细阅读程序说明AH功能号分别为01H,02H,09H时所代表的功能。答:01H输入字符,02H显示字符,09H输出字符3.本程序利用TEST指令影响标志位来判别程序分支,请问程序利用的是哪两个标志位? 答:ZF和SF标志位六、扩展题1.有一班级,学生人数存储于内存NUB单元,该班同学某门课程的成绩存放于内存S开始的单元,编制程序,统计该班该课程的平均成绩,存放于E单元。答:DSEG SEGMENTS DW 5,
10、4,3,6,7 NUB DW 5E DW 0DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEG MOV DS,AX LEA SI,S MOV AX,0 MOV BX,0 MOV CX,NUBAGAIN: MOV BX,SI ADD AX,BX ADD SI,2 LOOP AGAIN DIV NUB MOV E,AX MOV AH,4CH INT 21HCSEG ENDS END START运行结果:2.编写程序在屏幕上显示AZ26个大写字母,要求用DOS系统功能调用INT 21H的02H号功能实现。答:DATA SEGM
11、ENT STR DB OUTPUT CHARACTER:$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV DX,OFFSET STR MOV AH,09H INT 21H MOV AH,02H MOV CX,26 MOV DL,AL0: MOV AH,2 INT 21H INC DL LOOP L0 MOV AH,4CH INT 21HCODE ENDSEND START运行结果:3.设有一组字节数据,编制程序求其全部正数的和。设和不超过16位二进制数,可用一个字表示或存放。答:DATA S
12、EGMENT BUF DB 15,-15,7,-6,-34,56,6FH BUF1 DW 0DATA ENDSCODE SEGMENT ASSUME CS:CSEG,DS:DSEGSTART:MOV AX,DATA MOV DS,AX MOV DX,0 MOV CX,8 MOV SI,OFFSET BUFL0: TEST BYTE PTRSI,0FFH JS L1 MOV AX,SI AND AX,00FFH ADD DX,AXL1: INC SI LOOP L0 MOV BUF1,DX MOV AH,4CH INT 21HCODE ENDS END START运行结果:七、实验心得这次综合程序的运行及思考题、扩展题的操作让我对汇编语言中的循环、求和、求平均值、判断正负、字符显示等有了更深的理解和更熟练的应用,但是通过运行第三个源程序也让我意识到自己对汇编语言的理解还不够深入,只是一味的照搬没有思考其中的语法错误,以后会加强学习争取做更熟练的操作。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1