机械专业的学生实验报告doc 18页正式版.docx
《机械专业的学生实验报告doc 18页正式版.docx》由会员分享,可在线阅读,更多相关《机械专业的学生实验报告doc 18页正式版.docx(18页珍藏版)》请在冰豆网上搜索。
机械专业的学生实验报告doc18页正式版
《中小企业管理全能版》
183套讲座+89700份资料
《总经理、高层管理》
49套讲座+16388份资料
《中层管理学院》
46套讲座+6020份资料
《国学智慧、易经》
46套讲座
《人力资源学院》
56套讲座+27123份资料
《各阶段员工培训学院》
77套讲座+324份资料
《员工管理企业学院》
67套讲座+8720份资料
《工厂生产管理学院》
52套讲座+13920份资料
《财务管理学院》
53套讲座+17945份资料
《销售经理学院》
56套讲座+14350份资料
《销售人员培训学院》
72套讲座+4879份资料
实验一汇编语言上机认识实验
一、实验主要内容
1、汇编语言源程序文件的建立;
2、汇编程序的编辑、汇编、连接、运行。
二、实验目的
熟悉汇编语言的上机环境,掌握汇编程序的编辑、汇编、连接、运行等步骤。
三、实验具体操作过程
汇编语言的上机的一般步骤为:
编辑(用编辑程序形成汇编语言源程序)、汇编(用汇编程序将源文件汇编成目标文件)、连接(用连接程序将目标程序转换为可执行文件)、调试运行(执行可执行性文件,若有错误,利用DEBUG调试程序进行调试,直到没有错误为止)。
1、进入DOS系统
单击windows的“开始”按钮,再单击“运行”命令,输入“cmd”命令,进入DOS模式。
再利用相应的DOS命令,切换到masm目录下。
2、编辑.asm源程序
在DOS提示符下输入“edit001.asm”,建立一个汇编源程序文件,本次实验的程序是在屏幕上输出一个字符串“Thisisasampleprogram!
”,具体程序如下:
DATASEGMENT
BUFDB'THISISASAMPLEPROGRAM!
'
DB0DH,0AH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,9
LEADX,BUF
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
3、汇编
在dos提示符下输入命令“masm001.asm”,若发现有语法错误,请回到源程序进行修改;若无错误,进行下一步。
4、连接
在dos提示符下输入命令“link001.obj”。
5、运行
在dos提示符下输入命令“001”,发现屏幕上输出“Thisisasampleprogram!
”,实验完成。
实验二DEBUG的应用
一、实验主要内容
1、进入和退出DEBUG程序
2、使用DEBUG中的常用命令
二、实验目的
1、熟悉DEBUG有关命令的使用方法
2、学会利用DEBUG掌握有关指令的功能
3、学会利用DEBUG运行简单的程序段
三、实验具体操作过程
1、debug的启动与退出
在dos提示符下输入“debug”,并回车,可进入debug状态;在debug提示符下输入“q”,可返回dos提示符。
2、用R命令查看、改变CPU寄存器的内容
①输入“r”,回车,可看到CPU内部所有寄存器内容和标志位状态;
②输入“RAX”,可显示AX的值,并将AX的值修改为1234H;
3、汇编命令A
在debug提示符下,输入“A100”,输入几条汇编指令。
MOVAL,0C
ADDAL,1E
ADCAL,30
4、单步执行命令T
先输入命令“T=0”,然后每次都输入命令“T”,查看输入的每条指令执行后的状态。
5、调试应用程序
debug001.exe
6、反汇编指令U
在debug提示符下,输入“U”指令,显示001.exe的汇编指令。
5、运行命令G
输入命令“G”,运行001.exe中的所有指令;输入命令“G=13f0:
0d”,运行指定区域内的指令。
7、显示内存单元命令D
输入“D1389:
0100”,显示1389H:
0100H单元为首的内存区域中存放的内容。
8、修改内在单元命令E
输入“E1389:
0100”,将0100H单元的内容修改为FFH。
实验三顺序结构程序设计
一、实验主要内容
将两个2字节长的二进制数相加,运算结果存放在相应结果单元中。
二、实验目的
掌握汇编语言的顺序结构程序设计方法。
三、实验具体操作过程
1、流程框图
2、源程序
DATASEGMENT
DATA1DB1,2;被加数
DATA2DB5,6;加数
DATA3DB0,0;和
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,0
CLC;清进位标志
MOVAL,DATA1[SI]
ADCAL,DATA2[SI];第一个字节相加
MOVDATA3[SI],AL
INCSI
MOVAL,DATA1[SI]
ADCAL,DATA2[SI];第二个字节相加
MOVDATA3[SI],AL
;..........输出显示部分........
MOVBX,OFFSETDATA3
MOVDL,[BX]
ADDDL,30H
MOVAH,2
INT21H
INCBX
MOVDL,[BX]
ADDDL,30H
MOVAH,2
INT21H
;..........输出显示结束........
MOVAH,4CH
INT21H;返回DOS
CODEENDS
ENDSTART
实验四分支结构程序设计
一、实验主要内容
接收键盘输入字符,将其中的小写字母转换为大写字母。
二、实验目的
学会汇编语言的分支结构程序设计方法。
三、实验具体操作过程
1、流程框图
2、源程序
DATASEGMENT
MSGDB‘ERROR!
',0DH,0AH,‘$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,1
INT21H;读入一字符送入AL
CMPAL,‘a'
JBERR;不是小写字母转出错处理
CMPAL,‘z'
JAERR;不是小写字母转出错处理
SUBAL,32;转换成大写字母后送到AL
MOVDL,AL
MOVAH,02
INT21H;输出转换后的字符
OVER:
MOVAH,4CH
INT21H;返回DOS
ERR:
MOVDX,OFFSETMSG
MOVAH,09
INT21H
JMPOVER
CODEENDS
ENDSTART
实验五循环结构程序设计
一、实验主要内容
统计一个有10人的班中,男、女生的人数各为多少。
将统计结果的男生人数存入变量BOY中,女生人数存入变量GIRL中。
二、实验目的
掌握汇编语言的循环结构基本设计方法。
三、实验具体操作过程
1.流程框图
2.参考程序
DATASEGMENT
BOYDB0;存放男生人数
GIRLDB0;存放女生人数
COUNTEQU10;班里的总人数
DISPDB0DH,0AH,‘BOYORGIRL1/0?
',‘$’
DISP1DB0DH,0AH,‘BOY:
’,‘$’
DISP2DB0DH,0AH,‘GIRL:
’,‘$’
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,COUNT
INPUT:
MOVDX,OFFSETDISP
MOVAH,9
INT21H
MOVAH,1
INT21H;读入一个字符
CMPAL,‘1’;是男生?
JZBOYCOUNT
CMPAL,‘0’;是女生?
JZGIRLCOUNT
JMPINPUT
BOYCOUNT:
INCBOY;男生人数加1
JMPLOOPNEXT
GIRLCOUNT:
INCGIRL;女生人数加1
LOOPNEXT:
LOOPINPUT
MOVAH,4CH
INT21H;返回DOS
CODEENDS
ENDSTART
实验六子程序设计
一、实验主要内容
编写一个程序,将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。
要求码型转换通过子程HEXAC实现,在转换过程中,通过子程序DISP实现显示。
二、实验目的
1、掌握汇编语言子程序的设计方法;
2、掌握主程序与子程序之间的调用关系及调用方法。
三、实验具体操作过程
1、分析:
该实验程序用子程序的近程调用实现。
由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。
实验过程中可以从堆栈的内容看到两个子程序的返回地址值。
由于是近调用,地址值只包括返回地址的段内偏移量。
在每个子程序的执行中,检查CS值是不变的。
2、源程序
DATASEGMENT
BUFDB0ABH,0CDH,0DEH,01H,02H,03H
DB3AH,4BH,5CH,6FH
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,10
LEABX,BUF
AGAIN:
MOVAL,[BX]
CALLHEXASC
INCBX
LOOPAGAIN
MOVAH,4CH
INT21H
HEXASCPROCNEAR
MOVDL,AL
PUSHCX
MOVCL,4
SHRDL,CL
POPCX
CALLDISP;显示高位HEX数
MOVDL,AL
ANDDL,0FH
CALLDISP
RET
HEXASCENDP
DISPPROP
CMPDL,9
JBENEXT
ADDDL,7
NEXT:
ADDDL,30H
MOVAH,2
INT21H;显示
RET
DISPENDP
CODEENDS
ENDSTART
实验七综合程序设计
一、实验主要内容
设计并实现一个小型应用实例,要求:
1、接收从键盘输入的一个班的学生成绩,存放于50字的grade数组中,其中grade+i保存学号为i+1的学生成绩。
2、根据grade中学生成绩,把学生名次填入50字的rank数组中,其中rank+i的内容是学号为i+1学生的名次。
3、最后按学号顺序把名次从终端显示出来。
二、实验目的
熟练掌握三种基本结构程序设计、掌握结构化程序设计方法,并能综合运用,从而培养学生综合分析问题和解决问题的能力。
三、实验具体操作过程
1、在该应用实例中,包括三个方面的内容:
一成绩输入;二计算名次;三是排序输出。
每一部分可对应一段子程序,程序结构是一个较为典型的层次结构,如下图:
①程序MAIN
功能:
根据输入的学生成绩,计算并显示出学生名次。
②程序INPUT
功能:
接收一个班级学生的成绩,各成绩之间用空格隔开。
③程序RANKP
功能:
计算一个班级学生的名次。
(可参照循环程序
(一)中的程序段)
④程序OUTPUT
功能:
输出(显示)一个班级的学生名次
⑤程序DECIBIN
功能:
十进制转换二进制,存入BX
⑥程序BINDEC
功能:
十进制转换二进制,并在屏幕上显示。
⑦程序DEC_DIV
功能:
BX的内容除以CX的内容,并在屏幕上显示一位商。
2、程序框图:
3、源程序
模块名:
main.ASM总控模块
EXTRNINPUT:
FAR
EXTRNRANKP:
FAR
EXTRNOUTPUT:
FAR
CODESEGMENT
ASSUMECS:
CODE
START:
CALLFARPTRINPUT
CALLFARPTRRANKP
CALLFARPTROUTPUT
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
模块名:
INPUT.ASM输入模块
PUBLICINPUT
PUBLICGRADE
PUBLICCOUNT
DATASEGMENTPUBLIC
GRADEDW50DUP(?
)
COUNTDW?
MESS1DB'GRADE?
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
INPUTPROCFAR
MOVAX,DATA
MOVDS,AX
LEADX,MESS1
MOVAH,09
INT21H
MOVSI,0
ENTER:
CALLDECIBIN
INCCOUNT
CMPDL,','
JZSTORE
CMPDL,13
JZEXIT
STORE:
MOVGRADE[SI],BX
ADDSI,2
JMPENTER
EXIT:
MOVGRADE[SI],BX
MOVDL,0AH
MOVAH,02H
INT21H
RET
DECIBINPROCNEAR
MOVBX,0
NEWCHAR:
MOVAH,1
INT21H
MOVDL,AL
SUBAL,30H
JLEXIT1
CMPAL,9D
JGEXIT1
CBW
XCHGAX,BX
MOVCX,10
MULCX
XCHGAX,BX
ADDBX,AX
JMPNEWCHAR
EXIT1:
RET
DECIBINENDP
INPUTENDP
CODEENDS
END
模块名:
RANKP.ASM学生成绩名次计算模块
EXTRNGRADE:
WORD
EXTRNCOUNT:
WORD
PUBLICRANKP
PUBLICRANK
DATASEGMENTPUBLIC
RANKDW50DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
RANKPPROCFAR
MOVAX,DATA
MOVDS,AX
MOVDX,COUNT
MOVBX,0
LOOP1:
MOVAX,GRADE[BX]
MOVRANK[BX],0
MOVCX,COUNT
LEASI,GRADE
NEXT:
CMPAX,[SI]
JGNO_COUNT
INCRANK[BX]
NO_COUNT:
ADDSI,2
LOOPNEXT
ADDBX,2
DECDX
JNELOOP1
RET
RANKPENDP
CODEENDS
END
模块名:
OUTPUT.ASM输出模块
EXTRNRANK:
WORD
EXTRNCOUNT:
WORD
PUBLICOUTPUT
DATASEGMENTPUBLIC
MESS2DB'RANK:
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
OUTPUTPROCFAR
MOVAX,DATA
MOVDS,AX
LEADX,MESS2
MOVAH,09H
INT21H
MOVSI,0
MOVDI,COUNT
NEXT1:
MOVBX,RANK[SI]
CALLBINIDEC
MOVDL,','
MOVAH,02
INT21H
ADDSI,2
DECDI
JNZNEXT1
RET
BINIDECPROCNEAR
PUSHBX
PUSHCX
;MOVCX,100
;CALLDEC_DIV
MOVCX,10
CALLDEC_DIV
MOVCX,1
CALLDEC_DIV
POPCX
POPBX
RET
BINIDECENDP
DEC_DIVPROC
MOVAX,BX
MOVDX,0
DIVCX
MOVBX,DX
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H
RET
DEC_DIVENDP
OUTPUTENDP
CODEENDS
END