《ARM嵌入式系统结构与编程习题答案.docx》由会员分享,可在线阅读,更多相关《ARM嵌入式系统结构与编程习题答案.docx(25页珍藏版)》请在课桌文档上搜索。
1、嵌入式系统结构与编程习题答案第一章绪论1 .国内嵌入式系统行业对“嵌入式系统”的定义是什么?如何理解?答:国内嵌入式行业一个普遍认同的定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,牢靠性,成木,体积,功耗严格要求的专业计算机系统。从这个定义可以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必需结合实际系统需求进行合理的剪裁利用。因此有人把嵌入式系统比作是一个针对特定的应用而“量身定做”的专业计算机系统。2 .嵌入式系统是从何时产生的,简述其发展历程。答:从20世纪70年头单片机的出现到目前各种各样的嵌入式微处理器,微限制器的大规模应用,嵌入式系统己经有了3
2、0多年的发展历史。嵌入式系统的出现最初是基于单片机的。公司1971年开发出第一片具有4位总线结构的微处理器4004,可以说是嵌入式系统的萌芽阶段。80年头初的8051是单片机历史上值得纪念的一页。20世纪80年头早期,出现了商业级的“实时操作系统内核”,在实时内核下编写应用软件可以使新产品的沿着更快,更节约资金。20世纪90年头实时内核发展为实时多任务操作系统。步入21世纪以来,嵌入式系统得到了极大的发展。在硬件上,的性能得到了极大的提升,特别是技术的出现与完善,为嵌入式操作系统供应了功能强大的硬件载体,将嵌入式系统推向了一个崭新的阶段。3 .当前最常用的源码开放的嵌入式操作系统有哪些,请举出
3、两例,并分析其特点。答:主要有嵌入式和嵌入式实时操作内核嵌入式操作系统是针对嵌入式微限制器的特点而量身定做的一种操作系统,包括常用的嵌入式通信协议和常用驱动,支持多种文件系统。主要有以下特点:源码开放,易于移植,内核小,功能强大,运行稳定,效率高等。是源码工卡的实时嵌入式系统内核,主要有以下特点:源码公开,可移植性强,可固化,可剪裁,占先式,多任务,可确定性,供应系统服务等。4 .举例说明嵌入式设备在工控设备中的应用。答:由于工业限制系统特别强调牢靠性和实时性,“量身定做”的嵌入式限制系统恰能满足工业限制的需求。例如:工业过程限制,数字限制机床,电网设备监测,电力自动限制系统,石油化工监控等。
4、5 .嵌入式技术的发展趋势有哪些?答:将来嵌入式系统的发展趋势有:1.随着信息化与数字化的发展,嵌入式设备进行网络互联是将来发展的趋势。2.优化嵌入式系统软硬件内核,提高系统运行速度,降低功耗和硬件成本。3.指令集的并行计算技术将引入嵌入式微处理器。4.嵌入式微处理器将会向多核技术发展。5.嵌入式技术将引领信息时代。第2章技术与体系结构1 .简述处理器内核调试结构原理答:处理器一般都带有嵌入式追踪宏单元(),它是公司自己推出的调试工具。处理器都支持基于(联合测试行动小组)的调试方法。它利用芯片内部的来限制内核操作,可完成单步调试和断点调试等操作。当处理单步执行完毕或到达断点处时,就可以在宿主机
5、端查看处理器现场数据,但是它不能在运行过程中对实时数据进行仿真。解决了上述问题,能够在运行过程中实时扫描处理器的现场信息,并数据送往()限制器。上图中分为三条扫描链(图中的粗实线),分别用来监视核,嵌入式的状态。2 .分析7各字母所代表的含义。答:7TDMIS中是的缩写7是系列号;T:支持高密度16位的指令集;D:支持片上调试;M:支持用于长乘法操作(64位结果)指令,包含快速乘法器;;I:带有嵌入式追踪宏单元,用来设置断点和视察点的调试硬件;S:可综合版本,意味着处理器内核是以源代码形式供应的。这种源代码形式又可以编译成一种易于工具运用的形式。3 .处理器的工作模式有哪几种,其中哪些为特权模
6、式,哪些为异样模式,并指出处理器在什么状况下进入相应的模式。答:技术的设计者将处理器在应用中可能产生的状态进行了分类,并针对同一类型的异样状态设定了一个固定的入口点,当异样产生时,程序会自动跳转到对应异样入口处进行异样服务。 1.用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下执行。在用户模式下,假如没异样发生,不允许应用程序自行变更处理器的工作模式,假如有异样发生,处理器会自动切换工作模式 2.模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优先级()中断产生时将会进入这种模式。 3.模式:也称为一般中断模式,:当一个低优先级O中断产生时将会进入这种模式。
7、在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中断处理都在模式下进行。 4.模式:称之为管理模式,它是一种操作系统爱惜模式。当复位或软中断指令执行时处理器将进入这种模式。 5.中止模式:当存取异样时将会进入这种模式,用来处理存储器故隙、实现虚拟存储或存储爱惜。 6.未定义指令异样模式:当执行未定义指令时会进入这种模式,主要是用来处理未定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。 7.系统模式:运用和模式相同寄存器组的特权模式,用来运行特权级的操作系统任务。 在这7种工作模式中,除了用户模式以外,其他6种处理器模式可以称为特权模式,在
8、这些模式下,程序可以访问全部的系统资源,也可以随意地进行处理器模式的切换。 在这6种特权模式中,除了系统模式外的其他5种特权模式又称为异样模式,每种异样都对应有自己的异样处理入口点。4 .分析程序状态寄存器O各位的功能描述,并说明在什么状况下进行置位和清零。答:条件代码林志保密控制位313029282726876543210NZCV.IFTM4M3M2MlMOT条件位:0-结果为正或0O-结果不为0O-借位0结果没溢出 N=I-结果为负, Z=I-结果为0, C=I-进位, V=I-结果溢出,Q位:仅5架构支持指示增加型指令是否溢出中断禁止位: I=1:禁止. F=1:禁止.T 仅架构支持 T
9、=O:处理器处于状态 T=I:处理器处于状态位(处理器模式位): OblOOOO OblOOOl OblOOlO OblOOll OblOlllObllOll Oblllll5.简述处理器异样处理和程序返回的过程。答:只要正常的程序流被短暂中止,处理器就进入异样模式。例如响应一个来自外设的中断。在处理异样之前,7内核保存当前的处理器状态,这样当处理程序结束时可以复原执行原来的程序。假犹如时发生两个或更多异样,那么将依据固定的依次来处理异样。异样或入口返回指令向量表偏移处理器模式优先级141460x00000008未定义的指令1460x00000004预取指中止14450x0000000C快中断
10、14430x000000IC中断14440x00000018数据中止14820x00000010复位无10x00000000在异样发生后,7内核会作以下工作:1.在适当的中保存下一条指令的地址2 .将复制到适当的中;3 .将模式位强制设置为与异样类型相对应的值;4 .强制从相关的异样向量处取指。7内核在中断异样时置位中断禁止标记,这样可以防止不受限制的异样嵌套。注:异样总是在状态中进行处理。当处理器处于状态时发生了异样,在异样向量地址装入时,会自动切换到状态。当异样结束时,异样处理程序必需:1.将中的值减去偏移量后存入,偏移量依据异样的类型而有所不同:2 .将的值复制回;3 .清零在入口置位的
11、中断禁止标记。注:复原的动作会将T、F和I位自动复原为异样发生前的值。6 .处理器字数据的存储格式有哪两种?并指出这两种格式的区分。答:7处理器可以将存储器中的字以下列格式存储- 大端格式()- 小端格式()- 小端存储器系统:在小端格式中,高位数字存放在高位字节中。因此存储器系统字节O连接到数据线70。大端存储器系统:在大端格式中,高位数字存放在低位字节中。因此存储器系统字节O连接到数据线3124。7 .分析带有存储器访问指令O的流水线运行状况,并用图示说明流水线的运行机制。答:存储器访问指令流水线举例周期123456ADD SUB LDR MOV AND ORRFetchDecodebHC
12、tt*-IFetchDecodex*(t.FetChDecodeExecute访存回写FetChDecodeLxecuteFetchDecodeFetch取指的存储器访问和执行的数据路径占用都是不行同时共享的资源,对于多周期指令来说,假如指令困难以至于不能在单个时钟周期内完成执行阶段,就会产生流水线堵塞。对存储器的访问指令是非单周期指令指令的执行,访问存储器,问写寄存器(占用了3个周期)。造成了指令的执行被阻断。8 .简述9的5级流水线每一级所完成的功能和实现的操作。答:920在指令操作上接受5级流水线.取指:从指令中读取指令。译码:对指令进行译码,识别出是对哪个寄存器进行操作并从通用寄存器中
13、读取操作数。执行:进行运算和移位操作,假如是对存储器操作的指令,则在中计算出要访问的存储器地址。存储器访问:假如是对存储器访问的指令,用来实现数据缓冲功能(通过数据)。寄存器回写:将指令运算或操作结果写回到目标寄存器中。9 .什么叫流水线互锁?应如何来解决,举例说明。答:互锁:当前指令的执行须要前面指令的执行结果,但前面的指令没有执行完毕,引起流水线的等待。互锁发生时,硬件会停止指令的执行,直到数据准备好。同期掾作ADDR1, R1, R2FSUBR3, R4, R1LDRR4, R7ORRR8, R3, R4ANDR6, R3, R1EORR3, R1, R2123456789DEWFDEW
14、FDEMWFDIEWFIDEWFDEWF-取指(Fetch)D-蝌(Decode)E-执行(Execute)I-互领(Interlock)M-存储器(Memory)W-写回(飒城檄*)上边程序中指令执行时须要运用指令加载后的R4寄存器,因此造成了指令的等待。编译器以及汇编程序员可以通过重新设计代码的依次或者其他方法来削减互锁的数量。第3章指令集寻址方式1 .在指令编码中,条件码占几位,最多有多少个条件,各个条件是如何形成的?答:条件码占4位,最多有15个条件操作码条件助记符标记含义OO(X)1相等00010不相等00101无符号数大于或等于00110无符号数小于01001负数01010正数或零
15、01101溢出Olll0没有溢出100010无符号数大于100101无符号数小于或等于1010有符号数大于或等于1011有符号数小于11000有符号数大于HOl1有符号数小于或等于1110任何无条件执行(指令默认条件)Illl任何从不执行(不要运用)2 .指令条件码中,V标记位在什么状况下才能等于1?答:V溢出标记位对于加减法运算指令,当操作数和运算结果为二进制补码表示的带符号数时,1表示符号位溢出,其他指令通常不影响V位。3 .在指令中,什么是合法的立刻数?推断下面各立刻数是否合法,假如合法则写出在指令中的编码格式(也就是8位常数和4位移位数)0x54300x1080x3040x501010
16、0000x3340000x30000x100000x55800000x7F8000x39C0000x180000答:立刻数必需由I个8位的常数通过进行32位循环右移偶数位得到,其中循环右移的位数由一个4位二进制的两倍表示。即一个8位的常数通过循环右移2*4位(即0,2,4,。30)得到0X54300000.0000,0000,0000,0101,0100,0011,0000非法立刻数0X1080000,0000,0000,0000,0000,0001.(XXX),10000x42循环右移30位(4=0)0X3040000,00(X),0000,0000,0000,0011,0000,01000
17、x5010000.0000,0000,0000,0000,0101,0000,00010100000000,1111,1011,0001,0000,0000,0000,00000x3340000000.0000,0011.0011,0100,00(X),0000,00000x30000000,0000,00IlJIll,H00,0000,0000.00000x100000000.0001J111J110,0000,0000,0(X)0,00000x55800000000,0101,0101,1000,0000,0000,0000,00000x7F8000000.0000,0000,01HJHl
18、J000,0(X)0,00000x39C0000000,00(X),00IlJOOl,Il00,0000,0(X)0,00000x18000000013111,1110,1000,0000,0000,0(X)0,0000Ol循环右移30位(4=0)非法立刻数非法立刻数0循环右移18位(4=0x9)0循环右移18位(4=0x9)非法立刻数非法立刻数非法立刻数07循环右移18位(4=0x9)非法立刻数4 .分析逻辑右移,算术右移,循环右移,带扩展的循环右移它们间的差别。答:逻辑左移:31OYE0逻辑右移:31OOOM算术右移:L带扩展的循环右移:31O-A5数据处理指令具体的寻址方式有哪些,假如程
19、序计数器作为目标寄存器,会产生什么结果?答:数据处理指令寻址方式具体可分为5种类型:1)其次操作数为立刻数2)其次操作数为寄存器3)其次操作数为寄存器移位方式且移位的位数为一个5位立刻数4)其次操作数为寄存器移位方式且移位数值放在寄存器中5)其次操作数位寄存器进行移位得到。假如(R15)用作目标寄存器,指令会产生不行预知的结果O6 .在指令寻址中,字,无符号字节的指令寻址和半字,有符号字节寻址,试分析它们之间的差别。答:在指令寻址中,字,无符号字节的指令寻址中共有以下3种内存地址构成格式:1)中的偏移量为立刻数2)中的偏移量为寄存器的值3)中的偏移量通过寄存器移位得到半字,有符号字节的指令寻址
20、中共有以下2种内存地址构成格式:1)中的偏移量为立刻数2)中的偏移量为寄存器的值7 .块拷贝指令在实现寄存器组合连续的内存单元中数据传递时,地址的变更方式有哪几种类型,并分析它们的地址变更状况。答:批量指令在实现寄存器组合连续的内存单元中数据传递时,地址的变更方式有以下4种类型: 后增():每次数据传送后地址加4; 先增():每次数据传送前地址加4; 后减():每次数据传送后地址减4; 先减():每次数据传送前地址减4s8 .栈操作指令地址的变更方式有哪几种类型,并分析它们的地址变更状况,从而得出栈操作指令寻址和块拷贝指令之间的对应关系。答:依据堆栈指针的指向位置不同和堆栈的生长方向不同,共有
21、4种类型的堆栈工作方式:满递增堆栈:堆栈指针指向最终压入的数据,且由低地址向高地址生成。满递减堆栈:堆栈指针指向最终压入的数据,且由高地址向低地址生成。空递增堆栈:堆栈指针指向下一个要放入数据的空位置,口由低地址向高地址生成。空递减堆栈:堆栈指针指向下一个要放入数据的空位置,且由高地址向低地址生成。栈操作好贝地址变化方向向上向下满空满空增减先STMIBSTMFALDMIB1.DMED后先STMIASTMEALM)BLEftEAWlALIMTSTM1SBiFD后LrMDA1.WASTMDASTMED地址9 .分析协处理器加载/存储指令的寻址方式种的内存地址索引格式中不同的汇编语法格式下内存地址的
22、计算方法。答:协处理器加载/存储指令的寻址方式种的内存地址索引格式中,索引格式类似于指令寻址中的立刻数作为地址偏移量的形式。中的偏移量为8位立刻数的汇编语法格式有以下3种: 前变址不回写形式:,*4第一个内存地址编号为基地址寄存器值加上/减去8的4倍,后续的每一个地址是前一个内存地址加4,直到协处理器发出信号,结束本次数据传输为止。 前变址回写形式:*4!第一个内存地址编号为基地址寄存器值加上减去8的4倍,后续的每一个地址是前一个内存地址加4,直到协处理器发出信号,结束本次数据传输为止。当指令执行时,生成的地址值将写入基址寄存器。 后变址回写形式:,*4内存地址为基址寄存器的值,当存储器操作完
23、成后,将基地址寄存器值加上/减去8的4倍,后续的每一个地址是前一个内存地址加4,直到协处理器发出信号,结束本次数据传输为止。最终将值加上/减去8的4倍写回到基址寄存器(更新基地址寄存器)。10.写出下列指令的机器码,并分析指令操作功能。RO,RlRl,0X198Rl,R2,0R20R0,RI4RO,R11#2!R0,RI4R0,R22!Rl,R200R0,R128)RO!,(R15IO11)!R03)答:机器码部分略。RO,Rl;RO1Rl,0X198;RO0X198Rl,R2,0:当1时,Rl2+0并影响标记位R20;R2-0,并影响标记位R0,RI4;RORl+4RO,RI1#2!:RUM
24、0,RIllMR0,R14;RORl+4半字,Ro的高16位清零R0,R22!;ROR2-2字节,RO有符号扩展为32位,R22-2Rl,R200;R2+001低8位,R0,R128);将内存单元【R0111以字为单位读取到Rl,R2,R8中RO!,R15IO11)将寄存器R15,RIO,RlI的值以字为单位依次写入【R0】中,每写一个字之前ROOT!(R03将寄存器R03,的的值以字为单位依次写入【】中,每写一个字之后4第4章指令集系统1指令可分为哪几类?说出哪几条指令是无条件执行的。答:微处理器的指令集可以分为:数据处理指令,分支指令,加载/存储指令,批量加载/存储指令,交换指令,程序状态
25、寄存器O处理指令,协处理器操作指令利异样产生指令八大类。几乎全部的指令都是可以有条件执行的。带链接和状态切换的跳转指令,当目标地址由程序标号给出时,即:由于指令码中是没有条件编码位的,所以指令是无条件执行的。2 .如何实现两个64位数的加法操作,如何实现两个64位数的减法操作,如何求一个64位数的负数?答:】)运用实现64位加法,结果存于Rl、RO中:R0020等于低32位相加,并影响标记位R1131等于高32位相加,并加上低位进位2)运用实现64位减法,结果存于Rl、RO中:R002;低32位相减,并影响标记位RI13;高32位相减,并减去低位借位3)运用指令实现求64位数值的负数:R200
26、R3103 .写出指令与指令的二进制编码格式,并指出它们之间的区分。答:指令的二进制编码格式:3128272625242322212019161512110cond01IPUBWLRnRdaddressing_mode_specific指令的二进制编码格式:3128272625242322212019161512118765430cond000PUIWLRnRdaddr_mode1SH1addr_mode指令用于将内存中的一个8位字节数据读取到指令中的目标寄存器的低8位中,寄存器的高24位用零扩展。指令用于将内存中的一个8位字节数据读取到指令中的目标寄存器的低8位中,寄存器的高24位用符号位扩
27、展。4 .分析下列每条语句的功能,并确定程序段所实现的操作。R0,0Rl,0Rl,1答:RO,0;比较RO与O的大小Rl,0;若Ro0,则RI=ORl,1;若R00,则RI=I5 .请运用多种方法实现将字数据0送入寄存器RO答:1)RO,#02)RO,#1RO,RO,#06 .写一条指令,分别完成下列操作:(l)R0=16(2)R0116(3)R12*3(4)R00答:(l)R0=16R0,#16(2)R0116R0,Rl,#4(3)RI2*3R3,#3Rl,R2,R3(4)R00R0,R0,#07 .编写一个汇编程序,累加一个队列中的全部元素,遇到0时停止。结果放入R4。答:假设队列为地址从
28、RO起先递增的字队列:RlJRo4!R2,R1R442B8 .写出实现下列操作的指令:当1时,将存储器地址为RI的字数据读入寄存器R0.当1时,将存储器地址为R12的字数据读入寄存器RO将存储器地址为RM的字数据读入寄存器ROo将存储器地址为R16的字数据读入寄存器R0,并将新地址R16写入Rlo答:1)R0,Rl2) R0,Rl23) R0,Rl44) R(MRI6!9.写出下列指令所实现的操作:R2,R3,4!RO,RO2Rl,R3,R2,#2!RO,R2,2!Ri,R2,002-R3-4, R33-40-R0, R002#2! 1-R32*4, R332*4R0,R128)RO!,R15
29、IO11)答:R2,R3,4!RO,R02Ri,R3,R2,RO,R2,2!O低8位R2+00R0,R128)从地址Ro起先的内存中依次读取字数据,送入寄存器Rl,R2,R8R0!JR151011将寄存器Rll,RIO,R51的字数据,依次写入地址RO中,每次写入前R00410指令的优势是什么?答:指令支持原子操作,它能在一条指令中完成存储器和寄存器之间的数据交换。11 .如何用带操作的批量字数据加载指令实现中断的返同?答:在进入中断处理程序时,首先计算返同地址,并保存相关的寄存器 R14144; R13!,R03,R12,)假如中断处理程序返回到被中断的进程则执行下面的指令。该指令从数据栈中
30、复原寄存器R03及RI2的值,将返回地址传送到中,并将值复制到中 R13!,R03,R12,12 .用汇编语言编写代码,实现将处理器切换到用户模式,并关闭中断。答-竹注七SR3(R2为全零或全1)4 .在状态中,用多种方法实现将寄存器RO中的数据乘以10答:1)Rl,#10ROl2)RLR03R2,ROlR0125 .带链接的分支指令供应了一种在状态下程序间相互调用的方法,当从子程序返Pl时,可以接受哪种返回方式?答:通常运用下面的方式之一:);须要在子程序中运用(6 .指出下列的程序代码所完成的功能:R0131RlORlO答:R0131;用RI的符号位填充RORlO;假如RI为正数,则Rl不
31、变;假如Rl为负数,则RI取反RlO;R10-Rl(RO为全零或全1)第6章汇编伪指令与伪操作1 .在汇编语言程序设计中,伪操作与伪指令的区分是什么?答:伪指令是处理器支持的汇编语言程序里的特别助记符,它不再处理器运行期间由机器执行,只是在汇编时被合适的机器指令代替成或指令,从而实现真正的指令操作。伪操作是汇编语言程序里的一些特别的指令助记符,其作用主要是为了完成汇编程序做各种准备工作,对源程序运行汇编程序处理,而不是在计算机运行期间由处理器执行。也就是说,这些伪操作只是在汇编过程中起作用,一旦汇编结束,伪操作也就随之消逝。2 .分析汇编语言伪指令,,的汇编结果,说明它们之间的区分。答:伪指令
32、将一个32位的常数或者一个地址值读取到寄存器中,可以看作是加载寄存器的内容。假如加载的常数符合或指令立刻数的要求,则用或指令替代伪指令。假如加载的常数不符合或指令立刻数的要求,汇编器将常量放入内存文字池,并运用一条程序相对偏移的指令从内存文字池读出常量。伪指令将基于相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中,比伪指令可以读取更大范围的地址。在汇编编译器编译源程序时,伪指令被编译器替换成两条合适的指令。若不能用两条指令实现,则产生错误,编译失败。伪指令将基于相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。在汇编编译器编译源程序时,伪指令被编译器替换成一条合适的指令。通
33、常,编译器用一条指令或指令来实现该伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。3.在编译环境下,写出下列操作的伪操作:(1)声明一个局部的算术变量并将其初始化0;(2)声明一个局部的逻辑变量并将其初始化:(3)声明一个局部的字符串变量并将其初始化空串;(4)声明一个全局的逻辑变量并将其初始化:(5)声明一个全局的字符串变量并将其初始化空串;(6)声明一个全局的算术变量并将其初始化0;(7)声明一个全局的逻辑变量并将其初始化:(8)声明一个全局的字符串变量并将其初始化“”:答:(1)声明一个局部的算术变量并将其初始化0;(2)声明一个局部的逻辑变量并将其初始化;(3)声明一个局部的
34、字符串变量并将其初始化空串;(4)声明一个全局的逻辑变量并将其初始化;(5)声明一个全局的字符串变量并将其初始化空串;(6)声明一个全局的算术变量并将其初始化0;0(7)声明一个全局的逻辑变量并将其初始化:(8)声明一个全局的字符串变量并将其初始化“二4 .用开发工具伪操作将寄存器列表R05,R7,R8的名称定义为。答:(R05,R7,R8)5 .完成下列数据定义伪操作:(1)申请以1为起始地址的连续的内存单元,并依次用半字数据Oxl1,0x22,0x33,0x44,0x55进行初始化;(2)申请以为起始地址的连续的内存单元,并用字符串“79”进行初始化;答:(1)1Oxl1,0x22,0x3
35、3,0x44,0x55(2) “79”6 .定义一个结构化的内存表,其首地址固定为0x900,该结构化内存表包含2个域,长度为8个字节,2长度为160个字节。答:0x9001 82 1607.在编译环境下,写出实现下列操作的伪操作:(1)支配一段字节内存单元,并用57,0xll,031,Z,0x76进行初始化;(2)支配一段半字内存单元,并用00,0,0x12进行初始化;(3)支配一段字内存单元,并用0x12345678,0进行初始化;(4)支配一段内存单元,并用长为8字节的数值Oxll填充100次;答:(1)支配一段字节内存单元,并用57,0xll,031,Z,0x76进行初始化;57,0x
36、ll,031,Z,0x76(2)支配一段半字内存单元,并用00,0,0x12进行初始化;00,0,0x12(3)支配一段字内存单元,并用0x12345678,0进行初始化;0x12345678,0(4)支配一段内存单元,并用长为8字节的数值Oxll填充100次;100,8,Oxll8.写出与编译环境下伪操作,功能相同的标准开发工具编译环境下的伪操作。答:对应或32对应或16第7章汇编语言程序设计1.分别写出集成开发环境下汇编语句格式与环境下汇编语句通用格式,并分析它们的区分。答:环境下汇编语句格式如下: ) d ) :标号(地址) :指令() :伪操作 :伪指令环境下汇编语言语句格式如下: :
37、) :) (:)(12 .局部标号供应分支指令在汇编程序的局部范围内跳转,它的主要用途是什么,并举一实例加以说明。答:局部标号 局部标号的语法格式如下: n()(0-99) 被引用的局部标号语法规则是: %FB)AT)n) 其中: n是局部标号的数字号。(0-99) 是当前局部范围的名称。 表示引用操作。 F指示汇编器只向前搜寻。 B指示汇编器只向后搜寻。 A指示汇编器搜寻宏的全部嵌套层次。 T指示汇编器搜寻宏的当前层次。 局部标号供应分支指令在汇编程序在局部范围内的跳转3 .先对内存地址(X)Oo起先的100个字内存单元填入OXloOooOOI0xl0000064字数据,然后将每个字单元进行
38、64位累加,结果保存于【R9:R8(R9中存放高32位)。答:解:先对内存地址OOoO起先的100个字内存单元填入OXloOOOOOI0xl0000064字数据,然后将每个字单元进行64位累加,结果保存于【R9:R8(R9中存放高32位)。在集成开发环境下编程:/*寄存器运用说明*R0:存放地址值*R2:递减计数器*R9:64位递加结果的高32位*R8:64位递加结果的低32位*/;声明代码段32;标识程序入口;声明32位指令1ROOO(X)RIOx10000001R2I00Rl,R04RlllR2211;初始化寄存器;第一次循环赋值2R00000R2I00R90R80:其次次循环累加Rl,R
39、04R818;R881,进位影响标记位R990;R99,C为进位位R22I2B;文件结束4 .在环境下用汇编语言编写程序,初始化处理器各模式下的堆栈指针(R13),各模式的堆栈指针地址如下:,0000设置栈的内存基地址,用户模式堆栈地址,64管理模式堆栈地址,64*2未定义模式堆栈地址,64*3中止模式堆栈地址64*464*5模式堆栈地址模式堆栈地址答:在开发环境下编程:,0000设置栈的内存基地址,用户模式堆栈地址,64管理模式堆栈地址,64*2未定义模式堆栈地址,64*3中止模式堆栈地址,64*4模式堆栈地址,64*5模式堆栈地址0x10用户模式Oxll模式0x12模式0x13管理模式0x
40、17中止模式OxlB未定义模式OxlF系统模式OxlF模式位掩码限制字RO读取当前ROO清除模式位设置系统模式下的RlO1设置中止模式下的RlO1设置管理模式下的RlO1设置模式下的RlO设置模式下的RlO1B文件结束5 .内存数据区定义如下:1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,Ox101,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0x10:320,0,0,0,0,o,o,o,o,o,o,0,0,0,0,00,0,0,o,o,o,o,oao,o,0,0,0,0,0请用指令编写程序,实现将数据从源数据区拷贝到目标数据区,要求以6个字为单位进行块拷贝,假如不足6个字时,则以字为单位进行拷贝(其中数据区处存放源数据的个数)。答:解:程序设计思路:每进行6个字的批量拷贝前,先推断是否大于6,是则进行6字的批量拷贝并将减去6,否则则进行单字的拷贝,在运用寄存器组时还要留意保存现场。在集成开发环境下编程:/* *寄存器运用说明* *R0:源数据区指针* *R1:目标数据区指针* *R2:单字拷贝字数* *R3:块拷贝字数* *R510:批量拷贝运用的寄存器组* *:栈指针32;设置要拷贝的字数;声明代码段;标识程序入口32;声明32位指令ROO=源数据区指针RI,;Rl=目标数据区指针R2;R2=单字拷贝字数0x9000R26;R2