《计算机系统概论实验报告(共6页).doc》由会员分享,可在线阅读,更多相关《计算机系统概论实验报告(共6页).doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 计算机系统概论 实验报告实验题目: 汇编语言 实验时间: 2015-5-9 实验班级: 12级双专业 实验人学号: 实验人姓名: 张士杰 实验教师: 张伯泉 计算机 学院 实验室广东工业大学实验题目:7.13、以下程序的目的是将存放在内存A、B、C中的内容相加,并将结果存入内存。但是,代码中存在两个错误。试找出错误,并分别解释误会在汇编是还是在运行时被检测出来。Line No.1 .ORIG X30002 ONE LD R0,A3 ADD R1,R1,R04 TWO LD R0,B5 ADD R1,R1,R06 THREE LD R0,C7 ADD R1,R1,R0
2、8 ST R1,SUM9 TRAP X2510 A .FILL X000111 B .FILL X000212 C .FILL X000313 D .FILL X000414 .END解答:(1)本题存在错误如下:1.标识符SUM未进行说明,会在汇编时出错 2.R1未进行初始化,运行时可能会出错(2) 操作结果:把D改为SUM后,汇编成功:运行时,若R1初始值为5,则:SUM为11开头添加语句 AND R1,R1,#0即可:R1初始值为11,运行后为67.15实验题目:假设X4000开始的连续内存空间中存放了一个整数序列,且每个内存单元存放一个整数。该序列的结尾数值是x0000.阅读以下程序,
3、请问该程序的目的是什么? .ORIG X3000LD R0,NUMBERSLD R2,MASKLOOP LDR R1,R0,#0BRZ DONEAND R5,R1,R2BRz L1BRnzp NEXTL1 ADD R1,R1,R1 STR R1,R0,#0NEXT ADD R0,R0,#1BRnzp LOOPDONE HALTNUMBERS .FILL X4000MASK .FILL X8000.END解答:该程序目的是:检测x4000开始的序列数,若为负数则保持不变,若为整数,则使该数增大两倍。 各语句注释如下:.ORIG X3000LD R0,NUMBERS;使R0=x4000LD R2,
4、MASK; 使R2=x8000LOOP LDR R1,R0,#0;使R1=【x4000】(【x4000】表示x4000的内容)BRZ DONE;如果【R1】=0,则跳转至DONEAND R5,R1,R2;【R5】=X8000&【R1】,判断【R1】是否为负数BRz L1;如果【R5】=0,则【R1】为正数,跳转至L1BRnzp NEXT;无条件跳转至NEXTL1 ADD R1,R1,R1;【R1】翻倍 STR R1,R0,#0;把【R1】写到【R0】所表示的地址处NEXT ADD R0,R0,#1;【R0】+1BRnzp LOOP;循环DONE HALT;中断NUMBERS .FILL X4000MASK .FILL X8000.END运行:设x4000起各数为x0001,x0005,x9123,xF123,x7563,运行后如下图: 运行前 运行后由图可以看出运行后正数变为2倍,负数不发生变化专心-专注-专业