《太原理工大学硬件实验4.doc》由会员分享,可在线阅读,更多相关《太原理工大学硬件实验4.doc(5页珍藏版)》请在三一办公上搜索。
1、本科实验报告课程名称: 计算机硬件基础 实验项目: 实验四 汇编语言程序设计:综合程序设计实验 实验地点: 逸夫楼202与计算机硬件实验室701 专业班级: 软件* 学号: * 学生姓名: * 指导教师: 高劲松 2013年 5月17日实验名称:实验四 汇编语言程序设计:综合程序设计实验实验目的和要求: 1通过分支程序设计、循环程序设计实验,掌握无条件转移指令、条件转移指令的格式、功能及使用方法。2掌握分支程序的结构、单分支和多分支程序的设计方法。3了解循环程序的基本结构和控制循环的方法。 4掌握通过DOS中断调用使用键盘和显示器的方法。实验内容和原理:1预习汇编程序上机操作的全过程。编写一个
2、汇编语言源程序;以下是MASM5环境中运行步骤:(同学们也可以使用CV集成编译环境)(1)在dos环境下,如:d:masm 下输入命令:edit(2)打开编辑窗口(3)输入如下原程序后保存文件,例如 exp1.asm(4)输入下列指令进行编译: d:masm masm exp1.asm回车检查错误,如结果为0错误 0警告则编译成功,产生exp1.obj文件(5)输入下列指令进行链接: d:masmlink exp1.obj回车如结果为0错误 0警告则链接成功,产生exp1.exe文件(6)运行程序检验结果。d:masm exp1回车 2对已经汇编连接成功的可执行文件,使用DEBUG命令调试程序
3、找出程序的断点,执行程序,显示有关寄存器、存储单元的内容,分析程序的结果。主要仪器设备:HP6460b笔记本实验记录:1.编写一个汇编程序,要求对键盘输入的大写字母用小写字母显示出来,键盘输入的小写字母用大写字母显示出来。STACK SEGMENT STACKDB 200 DUP(0)STACK ENDSDATA SEGMENTX DB 0;DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV AH,01HINT 21HCMP AL,aJNL NEXTMOV X,a-AADD X,
4、ALMOV AH,02HMOV DL,XINT 21HMOV AH,4CHINT 21HNEXT:MOV X,A-aADD X,ALMOV AH,02HMOV DL,XINT 21HMOV AH,4CHCODE ENDSEND START2. 编写一个汇编程序,使得从键盘上输入十个以内的字符,以输入空格结束,然后按数字、字母和其它符号三类统计各自的个数,在屏幕上依次显示出统计结果。STACK SEGMENT STACKDB 200 DUP(0)STACK ENDSDATA SEGMENTX DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:S
5、TACKSTART: MOV AX,DATAMOV DS,AXSUB AX,AXMOV BX,0MOV DX,0MOV CX,10AA1:CMP CX,0JZ STOPMOV AH,1INT 21H CMP AL,20HJB STOPCMP AL,0JB CC2CMP AL,9JA CC1INC BHJMP NEXT1CC1:CMP AL,AJB CC2CMP AL,ZJB NEXT CMP AL,aJB CC2CMP AL,zJA CC2NEXT:INC BLJMP NEXT1CC2:INC DHNEXT1:LOOP AA1STOP:MOV AH,2MOV DL,BHADD DL,XINT 21HMOV AH,2MOV DL,BLADD DL,XINT 21HMOV AH,2MOV DL,DHADD DL,XINT 21HMOV AX,4C00HINT 21H4CODE ENDSEND START实验结果和分析:心得体会:由实验运行可知,上述两个程序正确。其中也由于一些编码时的粗心大意而导致一些错误。如在程序端未加MOV AX,4C00HINT 21H而将出现一些无缘无故的错误。并且一般而言使用中断时,必须有栈段。还有一些小的错误等。体会:通过使用-u来进行反编译也是一种很好的进行测试的方法。并且对于一些并不熟悉的ASCALL码有时可以通过直接用字符的方法去做,省去记忆字符。