您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 计算机系统概论实验报告-(2)
《计算机系统概论》实验报告实验题目:汇编语言实验时间:2015-5-9实验班级:12级双专业实验人学号:3112001868实验人姓名:张士杰实验教师:张伯泉计算机学院实验室广东工业大学实验题目:7.13、以下程序的目的是将存放在内存A、B、C中的内容相加,并将结果存入内存。但是,代码中存在两个错误。试找出错误,并分别解释误会在汇编是还是在运行时被检测出来。LineNo.1.ORIGX30002ONELDR0,A3ADDR1,R1,R04TWOLDR0,B5ADDR1,R1,R06THREELDR0,C7ADDR1,R1,R08STR1,SUM9TRAPX2510A.FILLX000111B.FILLX000212C.FILLX000313D.FILLX000414.END解答:(1)本题存在错误如下:1.标识符SUM未进行说明,会在汇编时出错2.R1未进行初始化,运行时可能会出错(2)操作结果:把D改为SUM后,汇编成功:运行时,若R1初始值为5,则:SUM为11开头添加语句ANDR1,R1,#0即可:R1初始值为11,运行后为67.15实验题目:假设X4000开始的连续内存空间中存放了一个整数序列,且每个内存单元存放一个整数。该序列的结尾数值是x0000.阅读以下程序,请问该程序的目的是什么?.ORIGX3000LDR0,NUMBERSLDR2,MASKLOOPLDRR1,R0,#0BRZDONEANDR5,R1,R2BRzL1BRnzpNEXTL1ADDR1,R1,R1STRR1,R0,#0NEXTADDR0,R0,#1BRnzpLOOPDONEHALTNUMBERS.FILLX4000MASK.FILLX8000.END解答:该程序目的是:检测x4000开始的序列数,若为负数则保持不变,若为整数,则使该数增大两倍。各语句注释如下:.ORIGX3000LDR0,NUMBERS;使R0=x4000LDR2,MASK;使R2=x8000LOOPLDRR1,R0,#0;使R1=【x4000】(【x4000】表示x4000的内容)BRZDONE;如果【R1】=0,则跳转至DONEANDR5,R1,R2;【R5】=X8000&&【R1】,判断【R1】是否为负数BRzL1;如果【R5】=0,则【R1】为正数,跳转至L1BRnzpNEXT;无条件跳转至NEXTL1ADDR1,R1,R1;【R1】翻倍STRR1,R0,#0;把【R1】写到【R0】所表示的地址处NEXTADDR0,R0,#1;【R0】+1BRnzpLOOP;循环DONEHALT;中断NUMBERS.FILLX4000MASK.FILLX8000.END运行:设x4000起各数为x0001,x0005,x9123,xF123,x7563,运行后如下图:运行前运行后由图可以看出运行后正数变为2倍,负数不发生变化
本文标题:计算机系统概论实验报告-(2)
链接地址:https://www.777doc.com/doc-5406963 .html