资源描述:
《计算机硬件技术基础-循环程序(东北大学)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、东北大学计算机硬件技术基础实验报告专业班级:姓名:学号:实验题目:循环程序设计日期:实验目的:(1)加深对循环结构的理解。(2)掌握循环程序的设计方法。(3)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。实验内容:【程序1】已知以BUF为首地址的字储存区中存放着8个有符号二进制数,试编写程序将其中大于等于0的数依次送入BUF1为首地址的字储存区中,小于0的数依次送入以BUF2为首地址的字储存区中。同时将大于等于0的数的个数送入A字变量,将小于0的数的个数送入B字变量。实验步骤:(1)输入源程序如下:DATASEGMENTB
2、UFDW23,123,-12,-210,45,0,90,-453BUF1DW8DUP(0)BUF2DW8DUP(0)ADW0BDW0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,BUF1LEADI,BUF2MOVA,0MOVB,0MOVCX,8L0:MOVAX,[BX]CMPAX,0JGEL1MOV[DI],AXADDDI,2INCBJMPNEXTL1:MOV[SI],AXADDSI,2INCANEXT:ADDBX,2LOOPL0MOVAH
3、,4CHINT21HCODEENDSENDSTART(2)保存源文件,执行masm汇编源程序,生成.obj目标文件,结果无错误。(3)执行link连接程序,生成.exe可执行文件,结果无错误。(4)执行debug调试程序,使用T参数单步执行程序,在AL寄存器中得到计算结果46H,结果正确,执行R参数命令查看Z所在的地址单元中的数据为0002字节单元只能够存放46H.思考题:本程序属于循环次数已知的程序,使用CX寄存器存放计数值,使用LOOP指令完成循环。但是在有些情况下,是不可以用LOOP指令的,比如循环中要用到移位指令时需要占用C
4、L寄存器。我们仍可以两条指令完成完全相同的功能,问时哪两条指令?答:JMP指令与JCXZ指令。扩展题统计以BUF为首地址开始的字节数据块中的正数的个数,将统计结果放至RLT单元。答:具体程序如下:DATASEGMENTBUFDW23,123,-12,-210,45,0,90,-453BUF1DW8DUP(0)BUF2DW8DUP(0)ADW0BDW0RLTDW8DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEABX,BUFLEASI,BUF1LEAD
5、I,BUF2MOVA,0MOVB,0MOVCX,8L0:MOVAX,[BX]CMPAX,0JGEL1MOV[DI],AXADDDI,2INCBJMPNEXTL1:MOV[SI],AXADDSI,2INCANEXT:ADDBX,2LOOPL0MOVAH,4CHINT21HCODEENDSENDSTART