如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
淮海工学院计算工程学院实验报告书课程名:《微机原理与接口技术》题目:实验一MASM、LINK指令的使用实验班级:G计算机11学号:2011151094姓名:评语:成绩:指导教师:批阅时间:年月日《微机原理与接口技术》实验报告实验1MASM、LINK指令的使用实验1.实验目的1.熟悉汇编语言的编辑、汇编、连接、运行的全过程。2.了解汇编语言的程序结构。2.实验要求1.编辑一个扩展文件名为ASM的汇编语言源程序。2.用汇编程序MASM或TASM汇编上述的汇编语言源程序,形成目标代码文件。(扩展名为OBJ)3.用连接程序LINK或TLINK连接目标代码文件,形成可执行文件。(扩展名为EXE)4.运行可执行文件。观察执行结果,以验证其正确性。3.实验内容设存储去有一数组ARRAY,现要求对数组中的数据分别按正数(含)0和负数的绝对值累加,并统计正数和负数的个数,累加与统计个数分别存入SUM1、SUM2、CUNT1和CUNT2单元中。AX+CH→AXDH+1→DH返回DOS4.实验步骤1.任选熟悉的编辑环境,输入示例程序,存盘取名为EX1.ASM2.利用MASM进行汇编,过程如下:输入C>MASMEX1屏幕显示:Microsoft(R)MacroAssemblerVersion5.00Copyright(C)MicosoftCop.1981-1985,1987Objectfilename[EX.OBJ]:Sourcelisting[NUL.LST]:Crossreference[NUL.CRF]:0WarningErrors0SevereErrors3.用连接程序对生成的EX.OBJ文件进行连接步骤如下:输入C>LINKEX1屏幕显示:Microsofe(R)OverlayLinkerVersion3.60Copyright(C)MicrosoftCop1983-1987.Allrightsreserved.5.源程序YNYN数为负?CL为零?AX+CH→AXDH+1→DH分配寄存器:AX、BX为正数、负数和;DH、DL为正数、负数的个数;CL为计数器;CH存待判断的数。寄存器清零取数值个数→CL从内存中取数→CH数取反BX+CH→BXDL+1→DLCL-1→CL存结果到指定内存返回DOSTITLEEXAMPLEDATASEGMENTARRAYDB12,34,56,-12,-34,-9,0,3,0,-5,3,5DB0AH,0FFH,4,0,77H,88H,0F0H,0BBHCOUNTEQU$-ARRAYSUM1DW0;存放正数累加和SUM2DW0;存放负数累加和CUNT1DB0;存放正数数据个数CUNT2DB0;存放负数数据个数DATAENDSSTACK1SEGMENTPARASTACKSTADW20HDUP(0)STACK1ENDSCOSEGSEGMENTASSUMECS:COSEG,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXXORAX,AXXORBX,BXXORCX,CXXORDX,DXLEASI,ARRAYMOVCL,COUNTLOP:TESTBYTEPTR[SI],80HJEPLUSMOVCH,[SI];求负数的绝对值NEGCHADDBL,CH;负数绝对值累加ADCBH,0INCDL;个数计数JMPNEXTPLUS:ADDAL,[SI];正数累加ADCAH,0INCDH;个数计数NEXT:INCSIDECCLJNELOPMOVSUM1,AX;存结果MOVSUM2,BXMOVCUNT1,DHMOVCUNT2,DLMOVAH,4CHINT21HCOSEGENDSENDSTART6.测试数据与实验结果执行此句是把AX的值赋给DS前四句执行后分别是把AX,BX,CX,DX清零,最后一句是将[0000]作为SI的初始地址第一句CL是计数的即COUNT为14,第二句判断SI中存的值是否为