本科实验报告课程名称:计算机硬件技术基础(实验一)实验地点:专业班级:软件13xx班学号:201300xxxx学生姓名:指导教师:高劲松2015年5月8日太原理工大学学生实验报告学院名称软件学院专业班级学号学生姓名实验日期2015-5-8成绩课程名称硬件技术基础实验题目汇编语言程序设计:顺序程序实验一、实验目的和要求1.通过宏汇编(MASM)上机操作,使学生掌握汇编语言源程序的编辑、汇编、连接和执行的完整过程。2.掌握汇编过程中各命令的作用及使用方法,了解汇编和连接的过程。3.掌握8086/8088指令系统中已学指令的书写格式、功能及其作用。4.结合实例程序掌握汇编语言程序上机过程,熟悉DEBUG程序中常用命令的使用。二、实验内容和原理1.预习汇编程序上机操作的全过程。以下是MASM5环境中运行步骤:(同学们也可以使用CV集成编译环境)32位机运行过程:编写一个汇编语言源程序如exp1.asm,放在MASM5文件夹下;(1)在dos环境下,如:d:\masm\下输入命令:edit(2)打开编辑窗口(3)输入如下原程序后保存文件,例如exp1.asm(4)输入下列指令进行编译:d:\masm\masmexp1.asm回车,出现如下界面:Microsoft(R)MacroAssmblerVersion5.00Copyright(C)MicrosoftCorpl981--1985,1987.AHrightsreserved.Objectfilename[exp1.obj]:(回车)SourceListing[NUL.LST]:(回车)Croesreferencs[NUL.CRF]:(回车)0WarningErrors0SeversErrors检查错误,如结果为0错误0警告则编译成功,产生exp1.obj文件(5)输入下列指令进行链接:d:\masm\linkexp1.obj回车,出现如下界面:RunFile[exp1.EXE]:(回车)ListFILE[NUL.MAP]:(回车)Libraries[.LIB]:(回车)LINK:warningL4021:NoSTACKsegment如结果为0错误0警告则链接成功,产生exp1.exe文件64位机运行过程:汇编编译器masm无法在64位下运行,在64位下使用masm编译器会提示不兼容,这时我们可以安装DOS虚拟机,即DOSBox。(1)假设编译器在E:\masm5,就是那个有masm.exe,debug.exe,link.exe的那个文件夹(2)输入命令mountCE:\masm5(把文件夹E:\masm5当作虚拟机的C盘)(3)然后输入C:(进入虚拟的C盘,其实就是E:\masm5)(4)之后就跟32位机上运行过程一样。2.对已经汇编连接成功的可执行文件,使用DEBUG命令调试程序找出程序的断点,执行程序,显示有关寄存器、存储单元的内容,分析程序的结果。三、主要仪器设备HP242g1四、操作方法与实验步骤编制程序计算Z=X+Y,其中X、Y、Z均为字型无符号数。参考源程序如下DATASEGMENTXDW10HYDW20HZDW?DATAENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVAX,XADDAX,YMOVZ,AXRETMAINENDPCODEENDSENDSTART(1)编辑源程序,汇编并连接之,若有错误则编辑修改并重新汇编、连接,形成EXE文件。(2)分别用DEBUG调试程序中的T命令、D命令找到断点、运行程序、显示程序的运行结果。实验内容与要求1.编写程序计算Z=(A+B)-(C-D),其中A=30H,B=20H,C=10H,D=05H均为字节单元无符号数。STACKSEGMENTSTACKDB50DUP(0)STACKENDSDATASEGMENTADB30HBDB20HCDB10HDDB05HZDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAL,AADDAL,BMOVAH,DSUBAH,CSUBAH,ALMOVZ,ALCODEENDSENDSTART2.设W、X、Y、Z、V均为16位字单元有符号数,编程计算W=(X*Y-50)/Z,将结果存入变量W,而余数存入变量W+2中。(X为非零数,并假设X、Y、Z的值分别为50、20、10、15)STACKSEGMENTSTACKDB50DUP(0)STACKENDSDATASEGMENTXDW50HYDW20HZDW10HWDW?DATAENDS第3/7页CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,XIMULYSUBAX,50MOVBX,ZIDIVBXMOVW,AXMOV[W+2],DXCODEENDSENDSTART五、实验数据记录和处理。六、实验结果与分析由调试过程可知,上述实验结果正确七、讨论、心得在实验过程中,遇到了许多困难,第一次实验,有很大程度上是对基本知识不熟悉造成的,通过查阅书籍和上网查资料找到了解决问题的方法,在今后的学习中,我要多注重基本知识的学习,回归课本,在课本中再延伸。本科实验报告课程名称:计算机硬件技术基础(实验二)实验地点:专业班级:软件13xx班学号:201300xxxx学生姓名:指导教师:高劲松2015年5月15日太原理工大学学生实验报告学院名称软件学院专业班级学号学生姓名实验日期2015-5-15成绩课程名称硬件技术基础实验题目汇编语言程序设计:分支和循环程序实验一,实验目的和要求1.通过分支程序设计、循环程序设计实验,掌握无条件转移指令、条件转移指令的格式、功能及使用方法。2.掌握分支程序的结构、单分支和多分支程序的设计方法。3.了解循环程序的基本结构和控制循环的方法。二、实验内容和原理要求学生按教师指定题目进行汇编语言程序设计,并上机调试,以实现较复杂的程序设计。1.已知X、Y、Z、MAX为16位的带符号数,求三个数中最大值,结果存入MAX单元。2.求10个学生成绩中的最高成绩,结果存入MAX字节单元中,已知成绩为字节型。三、主要仪器设备HP242g1四、操作方法与实验步骤DB200DUP(0)STACKENDSDATASEGMENTXDW10HYDW20HZDW30HMAXDW?DATAENDS第2/6页CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,XMOVBX,YCMPAX,BXJNLNEXTXCHGAX,BXNEXT:MOVBX,ZJNLNEXT1XCHGAX,BXNEXT1:MOVMAX,AXCODEENDSENDSTARTSTACKSEGMENTSTACKDB200DUP(0)STACKENDSDATASEGMENTA1DB96,73,34,86,99,20,15,4,100,0MAXDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVCX,10MOVBX,0MOVAL,A1[BX]AGAIN:INCBXCMPA1[BX],ALJBENEXTXCHGAL,A1[BX]NEXT:LOOPAGAINMOVMAX,ALCODEENDSENDSTART五、实验数据记录和处理六、实验结果与分析由以上的调试步骤以及分析可知实验正确。七、讨论、心得通过一步一步的调试可能找到错误的原因。写循环使用LOOP,其中处理数据的形式,即A1[BX]。忘记其中的语句的语义是否正确可以使用调试开验证是否正确。在自己一步步的调试过程中,我的动手能力和实际编程能力得到了极大的提高。实验地点指导教师高劲松本科实验报告课程名称:计算机硬件技术基础(实验三)实验地点:专业班级:软件13xx班学号:201300xxxx学生姓名:指导教师:高劲松2015年5月22日太原理工大学学生实验报告学院名称软件学院专业班级学号学生姓名实验日期2015-5-22成绩课程名称硬件技术基础实验题目汇编语言程序设计:综合程序设计实验一,实验目的和要求1.通过分支程序设计、循环程序设计实验,掌握无条件转移指令、条件转移指令的格式、功能及使用方法。2.掌握分支程序的结构、单分支和多分支程序的设计方法。3.了解循环程序的基本结构和控制循环的方法。4.掌握通过DOS中断调用使用键盘和显示器的方法。二、实验内容和原理编写一个汇编程序,要求对键盘输入的大写字母用小写字母显示出来,键盘输入的小写字母用大写字母显示出来。三、主要仪器设备笔记本电脑四、操作方法与实验步骤STACKSEGMENTSTACKDB200DUP(0)STACKENDSDATASEGMENTXDB0;DATAENDS第2/5页CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAH,01HINT21HCMPAL,'a'JNLNEXTMOVX,'a'-'A'ADDX,ALMOVAH,02HMOVDL,XINT21HMOVAH,4CHINT21HNEXT:MOVX,'A'-'a'ADDX,ALMOVAH,02HMOVDL,XINT21HMOVAH,4CHCODEENDSENDSTART五、实验数据记录和处理六、实验结果与分析由上述过程得知,实验结果正确。七、讨论、心得通过使用-u来进行反编译也是一种很好的进行测试的方法。并且对于一些并不熟悉的ASCALL码有时可以通过直接用字符的方法去做,省去记忆字符。实验地点指导教师高劲松本科实验报告课程名称:计算机硬件技术基础(实验四)实验地点:专业班级:软件13xx班学号:201300xxxx学生姓名:指导教师:高劲松2015年5月29太原理工大学学生实验报告学院名称软件学院专业班级学号学生姓名实验日期2015-5-29成绩课程名称硬件技术基础实验题目汇编语言程序设计:综合程序设计实验一,实验目的和要求1.通过分支程序设计、循环程序设计实验,掌握无条件转移指令、条件转移指令的格式、功能及使用方法。2.掌握分支程序的结构、单分支和多分支程序的设计方法。3.了解循环程序的基本结构和控制循环的方法。4.掌握通过DOS中断调用使用键盘和显示器的方法。二、实验内容和原理编写一个汇编程序,使得从键盘上输入十个以内的字符,以输入空格结束,然后按数字、字母和其它符号三类统计各自的个数,在屏幕上依次显示出统计结果。完善下面的原程序CODESEGMENTMAINPROCFARASSUMECS:CODESTART:PUSHDSSUBAX,AXPUSHAXMOVBH,0;统计数字的个数MOVBL,0;统计字母的个数MOVDH,0;统计其它字符的个数MOVCX,10AA1:CMPCX,0JZSTOP;输入字符超过10个MOVAH,1INT21H;从键盘接收一个字符CMPAL,20HJZSTOPCMPAL,’0’JBCC1CMPAL,’9’JACC1INCBH自行写出比较是否为字母的情况CC2:INCDHDECCXSTOP:MOVDL,BHMOVAH,02INT21H自行写出输出字母的个数自行写出输出其它字符的个数RETMainendpCodeendsEnd三、主要仪器设备HP242g1四、操作方法与实验步骤STACKSEGMENTSTACKDB200DUP(0)STACKENDSDATASEGMENTXDB'0'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXSUBAX,AXMOVBX,0MOVDX,0MOVCX,10AA1:CMPCX,0