ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:23.23KB ,
资源ID:4485984      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4485984.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(中南大学试题.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

中南大学试题.docx

1、中南大学试题Revised on November 25, 2020中南大学试题;用汇编语言实现实现冒泡排序,并将排序后的数输出DATAS SEGMENT A dw 3 10 8 56 22 36 1 43 31 3 N=$-A ;计算数字所占的字节数DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART:MOV AX,DATAS MOV DS,AX MOV SI,0 ;SI遍历数字;前一个数的地址 MOV CX,N/2-1 ;设置循环次数,M(M=N/2)个数需要,循环M-1次 CALL BUBBLE ;调用BUBBLE将原来的数排序;输出

2、排序后的数 MOV CX,N/2 ;循环M次输出排序后的M个数 MOV SI,0 ;SI遍历排序后的数 MOV DI,0 ;用DI记录数字的位数 MOV BP,N+5 ;BP用于遍历存储的转化后的字符的位置SHOW: PUSH CX ;循环次数入栈 MOV DX,0 ;由于将要进行16位除需要置高16位为0 MOV AX,SI ;低16位为排序后的数 CALL DTOC ;调用DTOC将十进制数转换为字符串 CALL SHOW_STR ;调用SHOW_STR将一个数转化得到的字符串输出 ADD SI,2 ;下一个数 POP CX ;循环次数出栈栈 LOOP SHOW MOV AH,4CH IN

3、T 21H;冒泡排序 BUBBLE PROCL1: PUSH CX ;将循环次数入栈 LEA SI,A ;SI遍历DATAS数据段的数字L2: MOV AX,ASI ;将前一个数存于AX CMP AX,ASI+2 ;比较前后两个数 JBE NEXT ;如果前一个数小于或等于后一个数则继续本轮的比较 XCHG AX,ASI+2 ;否则,交换前后两个数的位置 MOV ASI,AXNEXT:ADD SI,2 ;下一个数 LOOP L2 ;注意内层循环的次数已经确定了 POP CX ;将循环次数出栈 LOOP L1 ;下一轮比较 RETBUBBLE ENDP; 将十进制数转换为字符串并储存起来 DTO

4、C PROC S:MOV CX,10 ;将除数10,放入CX中 CALL DIVDW ;调用DIVDW程序 ADD CL,30H ;把数字转换为ASCII码,这样就能显示了 MOV DS:BP,CL ;把ASCII码放到内存中 INC DI ;用DI记录循环的次数 PUSH AX ;将低16位入栈 ADD AX,DX ;将高位与低位相加,接着判断是否已经除尽 JZ BACK ;除尽后返回调用处 POP AX ;将低16位出栈 DEC BP ;逆序存放转化后的字符,便于主程序调用SHOW_STRJMP S BACK:POP AX ;为了得到正确的IP值,需要出栈一次 RET DTOC ENDP;

5、子程序定义开始,功能是分离被除数的各个位的数字;公式:X/N=int(H/N)*65536+rem(H/N)*65536+L/N DIVDW PROC PUSH AX ;低16位入栈 MOV AX,DX ;将高16位写入AX, MOV DX,0 ;将高16位置零 DIV CX ;将新的数除10, MOV BX,AX ;将商int(H/N)转移到BX,默认余数rem(H/N)在DX POP AX ;将低16位出栈, DIV CX ;将rem(H/N)*65536+L除10,默认余数在DX MOV CX,DX ;将余数转移到CX MOV DX,BX ;将商int(H/N)转移到dx,相当于int(

6、H/N)*65536 RET ;子程序定义结束 DIVDW ENDP;实现字符串的输出 SHOW_STR PROCS2:MOV AH,2 ;输出数字转化后的字符串 MOV DL,DS:BP INT 21H INC BP ;顺序输出 DEC DI ;数字的位数减一 JZ OK ;字符串输出完了就结束 JMP S2 ;否则继续输出OK:MOV AH,2 ;输出空格 MOV DL,0 INT 21H RET SHOW_STR ENDP CODES ENDSEND START第一个累加和的源码: AREA TEXT,CODE,READWRITE ENTRY MOV R0,#100 ;循环数目 MOV

7、R1,#0 ;初始化数据LOOP ADD R1,R1,R0 ;将数据进行相加,获得最后的数据 SUBS R0,R0,#1 ;循环数据R0减去1 CMP R0,#0 ;将R0与0比较看循环是否结束 BNE LOOP ;判断循环是否结束,接受则进行下面的步骤 LDR R2,=RESULT STR R1,R2RESULT DCD 0STOP B STOP第二个排序的源码附上: ;排列算法:先将所有的数据与第一个进行比较,最后取出最小的数据放到第一个内存单元中 ;然后再从第二个内存单元开始进行比较,将第二小的数据放到第二个内存单元中, ;以此内推则能将十个数据进行排列。 AREA TEXT,CODE,

8、READWRITE ENTRY LDR R0,=DATA ;获得DATA数据的起始地址 MOV R1,R0 MOV R5,#9 ;开始的循环数目是10次,所以应该从9开始 MOV R6,R5COMPARE ADD R0,R0,#4 ;将R0所存储的地址+4表示为下一个要比较的数的地址 SUB R6,R6,#1 ;循环1次减1 LDR R2,R1 ;将放在寄存器中的数据取出进行大小比较 LDR R3,R0 CMP R3,R2 MOVCC R7,R2 ;如果后面的地址的数值比前一个小则交换他们的数据 MOVCC R2,R3 MOVCC R3,R7 STR R2,R1 ;将数据存储到相应的内存单元中

9、 STR R3,R0 CMP R6,#0 ;看每次的循环是否结束 BNE COMPARE ADD R1,R1,#4 ;每次循环结束以后将初始的指向的内存地址后移一个单元 MOV R0,R1 ;重新初始化上个循环中的寄存器中保存的地址 SUB R5,R5,#1 ;每次循环以后上面在以后的循环中的次数都会减1 MOV R6,R5 CMP R5,#0 ;判断所有的循环是否结束 BNE COMPAREDATA DCD 9,4,6,7,8,1,3,2,0,5STOP B STOP;ARM汇编编程-实现双层for循环;AREABlock,CODE;声明代码段ENTRY;for(i = 0; i 10; i

10、+);for(j = i+1; j=10; j+);z +=1STARTMOV R1, #0; i = 0MOV R0, #0; ZLOOPCMP R1, #10; i 10BEQ STOPADD R2, R1, #1; j = i+1LOOP1CMP R2, #10+1; j=10ADDNE R0, R0, #1; z +=1ADDNE R2, R2, #1; j+BNE LOOP1ADD R1, R1, #1;i+B LOOPSTOPMOV R0, #0x18LDR R1, =0x20026SWI 0x123456END;数据块拷贝,利用LDR/STR指令;num EQU10AREABlo

11、ckData,DATA;声明数据段srcDCD0,1,2,3,4,5,6,7,8,9;定义十个数dstSPACE10*4AREABlock,CODE;声明代码段ENTRYSTARTLDRR1, =srcLDR R2, =dstMOV R3, #numLOOPLDR R0, R1, #4STR R0, R2, #4SUBS R3, R3, #1BNE LOOPSTOPMOV R0, #0x18LDR R1, =0x20026SWI 0x123456END汇编语言程序示例;例五:利用跳转表实现程序跳转;项目名:,文件名:AREAJump,CODE,READONLYnumEQU2ENTRYstart

12、MOVR0,#0MOVR1,#3MOVR2,#2BLarithfuncB.arithfuncCMPR0,#numMOVHSPC,LRADRR3,JumpTableLDRPC,R3,R0,LSL #2JumpTableDCDDoAddDCDDoSubDoAddADDR0,R1,R2MOVPC,LRDoSubSUBR0,R1,R2MOVPC,LREND3、存储器从0x400000开始的100个单元中存放着ASCII码,编写程序,将其所有的小写字母转换成大写字母,对其它的ASCII码不做变换。解:MOVR0,#0x400000MOVR1,#0LPLDRBR2,R0,R1CMPR2,#0x61BLON

13、EXTCMPR2,#0x7B;0x61-0x7A为小写字母的ASCSUBLOR2,R2,#0x20STRBLOR2,R0,R1NEXTADDR1,R1,#1CMPR1,#100BNELP8、编写一简单ARM汇编程序段,实现1+2+100的运算。解:MOVR2,#100MOVR1,#0LOOPADDR1,R1,R2;R1中为累加和SUBSR2,R2,#1;R2控制循环BNELOOP4、编写程序,比较存储器中0x400000和0x400004两无符号字数据的大小,并且将比较结果存于0x400008的字中,若两数相等其结果记为0,若前者大于后者其结果记为1,若前者小于后者其结果记为-1。解:MOVR

14、0,#0x400000LDRR1,R0;取第1个数LDRR2,R0,#4;取第2个数CMPR1,R2;两个数相比较MOVHIR1,#1;R1大MOVLOR1,# -1;R1小MOVEQR1,#0;两个数相等STRR1,R0,#87、编写一程序,存储器中从0x400200开始有一个64位数。(1)将取反,再存回原处;(2)求其补码,存放到0x400208处 。解:LDRR0,=0x400200LDRR2,=0xFFFFFFFFLDRR1,R0;取低32位数EORR1,R1,R2;取反STRR1,R0;存低32位反码ADDSR1,R1,#1;又加1为求补STRR1,R0,#8;存低32位补码LDR

15、R1,R0,#4;取高32位数EORR1,R1,R2;取反STRR1,R0,#4;存高32位反码ADCR1,R1,#0;高32位求补STRR1,R0,#12;存高32位补码例七:汇编语言与C/C+的混和编程项目名:文件名:文件名:;AREAAsm_C,CODE,READONLYENTRYLDRSP,=0x4000IMPORT_mainBL_mainB.END#include int main()printf(Hello worldn);return 0;中南大学考试试卷(答案) 2012-2013 学年 2 学期 时间 100 分钟 2013 年 6 月 4 日 嵌入式系统 课程 32 学时

16、学分 考试形式: 开 卷 专业年级: 测控 10 级 总分 100 分,占总评成绩 70 % 注:此页不作答题纸,请将答案写在答题纸上 一填空题(每空 1 分,共 20 分) 1. 嵌入性、专用性与计算机系统是嵌入式系统的 3 个基本要素。 2. ARM7 微处理器采用 冯.诺依曼 总线架构;ARM9 微处理器采用 哈佛 总线架构。 3. ARM 有三种含义,分别是 公司名称 、一类处理器的通称 与 技术名称 。 4.在 RISC 中, 完成数据在寄存器和外部存储器之间的传输采用独立的 load 与 store 指令。 5. ARM 核有两个指令集,分别是 ARM 、 THUMB 。 6. A

17、RM 公司提供的专门用于 ARM 相关应用开发和调试的综合性软件为: 。 微处理器的工作状态一般有两种,两种状态之间的切换采用 BX 指令。 8. 当程序状态寄存器的内容为 0xA030 时, 说明处理器运行 THUMB 状态和 用户 模式下。 9. ARM 核中的 R14(或 LR) 寄存器,常用作保存子程序的返回地址。 10.汇编语言的源程序主要由 指令 、 伪指令 、 语句标号 与 注释 等四部分组成。 二简答题(56 分,每小题 7 分) 1简述嵌入式系统的概念、组成及特点。 答: 嵌入式系统是以应用为中心, 以计算机技术为基础, 采用可裁减软硬件, 适用于对功能、 可靠性、成本、体积

18、、功耗等有严格要求的专用计算机系统。一般由嵌入式微处理器 、外 围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。其特点有 1)嵌入式系统通常是面向特定应用的 2) 嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结 合后的产物 3)嵌入式系统的硬件和软件都必须高效率地设计, 量体裁衣、去除冗余 4)嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行 5)为了提高执行速度和系统可靠性, 嵌入式系统中的软件一般都固化在存储器芯片或单片机 本身中 6)嵌入式系统本身不具有自主开发能力。 2 S3C2440A 中的中断控制器可以从多个中断源接

19、收中断请求, 简述中断控制器请求的 FIQ 及 IRQ 中断机制。 3.试说明 看门狗 Watchdog 的作用和原理 答:在嵌入式应用中,CPU 必须可靠工作,即使因为某种原因进入了一个错误状态,系统 也应该可以自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。 其工作原理是在系统正常工作时,用户程序每隔一段时间执行喂狗动作,如果系统出错,喂 狗时隔超过看门狗溢出时间,那么看门狗将会产生复位信号,使系统复位。4. 简要说明一下 ARM 的异常的响应和返回的过程。 答: A 异常的进入: (1)将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的 位

20、置重新开始执行。 (2)将CPSR 复制到相应的SPSR 中。 (3)根据异常类型,强制设置CPSR 的运行模式位。 (4)强制PC 从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序。 也可以设置中断禁止位来阻止其他无法处理的异常嵌套。 B 异常的返回: (1)将链接寄存器LR 的值减去相应的偏移量后送到PC 中。 (2)将SPSR 复制回CPSR 中。 (3)如果进入时设置了中断禁止位,那么清除该标志。 5. 在 C 语言与汇编程序混合编程中,子程序调用的 ATPCS 规定了哪些基本规则。简 要说明寄存器使用规则。 答:基本规则有三个方面内容,分别是寄存器的使用规则及其相应

21、的名字,数据栈的使用规 则,参数传递规则。 A 寄存器的使用规则: (1)子程序通过寄存器 R0R3 来传递参数。 这时寄存器可以记作: A0A3 ,被调用的 子程序在返回前无需恢复寄存器 R0R3 的内容。 (2)在子程序中,使用 R4R11 来保存局部变量,这时寄存器 R4R11 可以记作:V1V8。 如果在子程序中使用到 V1V8 的某些寄存器,子程序进入时必须保存这些寄存器的值,在 返回前必须恢复这些寄存器的值, 对于子程序中没有用到的寄存器则不必执行这些操作。 在 THUMB 程序中,通常只能使用寄存器 R4R7 来保存局部变量。 (3)寄存器 R12 用作子程序间 scratch

22、寄存器,记作 ip;在子程序的连接代码段中经常会有 这种使用规则。 (4) 寄存器 R13 用作数据栈指针, 记做 SP; 在子程序中寄存器 R13 不能用做其他用途。 寄 存器 SP 在进入子程序时的值和退出子程序时的值必须相等。 (5)寄存器 R14 用作连接寄存器,记作 lr ;它用于保存子程序的返回地址,如果在子程序 中保存了返回地址,则 R14 可用作其它的用途。 (6)寄存器 R15 是程序计数器,记作 PC ;它不能用作其他用途。 (7)ATPCS 中的各寄存器在 ARM 编译器和汇编器中都是预定义的。 6.简述 ARM 处理器的寻址方式,并回答在 ATPCS 规则中,规定数据栈

23、采用那种类型。 答:ARM 指令系统支持以下 7 种寻址方式: (1) 寄存器寻址; (2) 立即寻址; (3) 寄存器间接寻址; (4) 变址寻址; (5) 寄存器移位寻址; (6) 多寄存器寻址; (7) 堆栈寻址。 在 ATPCS 规则中,规定数据栈采用满递减类型。 7如果 S3C2440A 的 UART 时钟为 40MHz,要将 UART0 设为正常工作模式 ,并且为偶 校验,停止位 1 位,数据位 7 位,波特率为 230400bps,该怎么设置,UART0 的线控制寄存 器为 ULCON0,波特率设置寄存器为 UBRDIV0。 答: UBRDIV0=0X09; ULCON0&=0X

24、FFFFFF00; ULCON0|=0X2A; 三 程序设计(24 分,每小题 12 分) 1、通过控制 GPF0,GPF1,GPF2,GPF3 的控制实现对 LED1,LED2,LED3,LED4 轮流亮灭的控 制。LED 灯通过电源与限流电阻与 ARM 的 I/O 口相连,当 I/O 口为低电平时,点亮 LED. 要求将程序缺失的部分补全。 (12 分) AREA |DATA|,CODE,READONLY ENTRY ldr r13,=0x1000 IMPORT LedMain b LedMainint LedMain() void Delay(unsigned int); unsigne

25、d char ledtab=0xfe,0xfd,0xfb,0xf7; int i; GPFUP&=(0XFFFFFFF0); GPFCON&=(0XFF00); GPFCON|=(0X0055;) while(1) for(i=0;i4;i+) (GPFDAT=ledtabi;) Delay(70); return(0); 嵌入性,专用性,与计算机系统是嵌入式系统的3个基本要素。5工业嵌入式系统的发展趋势是网路化、智能化和控制的分散化。6GPIO口的功能是通过相应的端口控制寄存器来设定端口引脚的功能。7看门狗定时器有三个控制其操作专用寄存器:分别为WTCON、WTDAT、WTCNT。8端口F端

26、口控制寄存器包括GPFCON、GPFDAT、GPFUP。9ARM公司提供的专门用于ARM相关应用开发和调试的综合性软件为:10DMA的主要优点就是其传输数据不受CPU的干涉。二简答题(56分,每小题7分)1嵌入式开发环境主要包括那些组件答:嵌入式系统开发需要交叉编译和在线调试的开发环境,主要包括a.宿主机b.目标机c.基于Jtag的ICD仿真器、或调试监控软件、或在线仿真器ICEd.运行于宿主机的交叉编译器和链接器、以及开发工具链或软件开发环境e.嵌入式操作系统2ARM核中什么寄存器用于存储PCR13通常用来存储什么R14通常用来存储什么答:R15用于程序计数器PC,R13通常用来做堆栈指针寄

27、存器,R14通常用来做链接寄存器,保存函数调用的返回地址。4简述嵌入式系统的概念、组成及特点。 答:嵌入式系统是以应用为中心,以计算机技术为基础,采用可裁减软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。一般由嵌入式微处理器 、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。其特点有 1)嵌入式系统通常是面向特定应用的 2) 嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物 3)嵌入式系统的硬件和软件都必须高效率地设计, 量体裁衣、去除冗余 4)嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进

28、行 5)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中 6)嵌入式系统本身不具有自主开发能力。 5.试说明 看门狗Watchdog的作用和原理 答:在嵌入式应用中,CPU必须可靠工作,即使因为某种原因进入了一个错误状态,系统也应该可以自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。 其工作原理是在系统正常工作时,用户程序每隔一段时间执行喂狗动作,如果系统出错,喂狗时隔超过看门狗溢出时间,那么看门狗将会产生复位信号,使系统复位。 6如果S3C2440A的UART时钟为40MHz,要将UART0设为正常工作模式 ,并且为偶校验,停止位1位

29、,数据位7位,波特率为230400bps,该怎么设置,UART0的线控制寄存器为ULCON0,波特率设置寄存器为UBRDIV0。 答: UBRDIV0=0X09; ULCON0&=0XFFFFFF00; ULCON0|=0X2A; 7在C语言与汇编程序混合编程中,子程序调用的ATPCS规定了哪些基本规则。简 要说明寄存器使用规则。 答:基本规则有三个方面内容,分别是寄存器的使用规则及其相应的名字,数据栈的使用规则,参数传递规则。 A寄存器的使用规则: (1)子程序通过寄存器R0R3来传递参数。 这时寄存器可以记作: A0A3 ,被调用的子程序在返回前无需恢复寄存器R0R3的内容。 (2)在子程序中,使用R4R11来保存局部变量,这时寄存器R4R11可以记作:V1V8。如果在子程序中使用到V1V8的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值,对于子程序中没有用到的寄存器则不必执行这些操作。在THUMB程序中,通常只能使用寄存器R4R7来保存局部变量。 (3)寄存器R12用作子程序间scratch寄存器,记作ip;在子程序的连接代码段中经常会有这种使用规则。 (4)寄存器R13用作数据栈指针,记做SP;在子程序中寄存器R13不能用做其他用途。 寄存器SP在进入子程序时的值和退出子程序时的值必须相等。 (5

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1