1、东北大学计算机硬件技术基础实验报告专业班级: 姓名: 学号: 实验题目:循环程序设计 日期: 实验目的:(1)加深对循环结构的理解。(2)掌握循环程序的设计方法。(3)熟练掌握 DEBUG 的常用命令,学会用 DEBUG 调试程序。实验内容:【程序 1】已知以 BUF 为首地址的字储存区中存放着 8 个有符号二进制数,试编写程序将其中大于等于 0 的数依次送入 BUF1 为首地址的字储存区中,小于 0 的数依次送入以 BUF2 为首地址的字储存区中。同时将大于等于 0 的数的个数送入 A 字变量,将小于 0 的数的个数送入 B 字变量。实验步骤:(1)输入源程序如下:DATA SEGMENTB
2、UF DW 23,123,-12,-210,45,0,90,-453BUF1 DW 8 DUP(0)BUF2 DW 8 DUP(0)A DW 0B DW 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,BUF1LEA DI,BUF2MOV A,0MOV B,0MOV CX,8L0: MOV AX,BXCMP AX,0JGE L1MOV DI,AXADD DI,2INC BJMP NEXTL1: MOV SI,AXADD SI,2INC ANEXT: ADD BX,2LOOP L0MOV
3、AH,4CHINT 21HCODE ENDSEND START(2)保存源文件,执行 masm 汇编源程序,生成.obj 目标文件,结果无错误。(3)执行 link 连接程序,生成.exe 可执行文件,结果无错误。(4)执行 debug 调试程序,使用 T 参数单步执行程序,在 AL 寄存器中得到计算结果 46H,结果正确,执行 R 参数命令查看 Z 所在的地址单元中的数据为 0002 字节单元只能够存放 46H.思考题:本程序属于循环次数已知的程序,使用 CX 寄存器存放计数值,使用 LOOP 指令完成循环。但是在有些情况下,是不可以用 LOOP 指令的,比如循环中要用到移位指令时需要占用
4、CL 寄存器。我们仍可以两条指令完成完全相同的功能,问时哪两条指令?答:JMP 指令与 JCXZ 指令。扩展题统计以 BUF 为首地址开始的字节数据块中的正数的个数,将统计结果放至 RLT 单元。答:具体程序如下:DATA SEGMENTBUF DW 23,123,-12,-210,45,0,90,-453BUF1 DW 8 DUP(0)BUF2 DW 8 DUP(0)A DW 0B DW 0RLT DW 8DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA BX,BUFLEA SI,BUF1LEA DI,BUF2MOV A,0MOV B,0MOV CX,8L0: MOV AX,BXCMP AX,0JGE L1MOV DI,AXADD DI,2INC BJMP NEXTL1: MOV SI,AXADD SI,2INC ANEXT: ADD BX,2LOOP L0MOV AH,4CHINT 21HCODE ENDSEND START