【计算机类职业资格】嵌入式系统设计师-26及答案解析.doc
《【计算机类职业资格】嵌入式系统设计师-26及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】嵌入式系统设计师-26及答案解析.doc(14页珍藏版)》请在麦多课文档分享上搜索。
1、嵌入式系统设计师-26 及答案解析(总分:45.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)【说明】 本题由两部分组成,第一部分为计算 AX寄存器的值,第二部分为判错题。(分数:15.00)(1).【问题 1】 已知 DS=2000H,BX=0100H,SI=0002H,存储单元20100H到20103H依次存放12H、34H、56H、78H,21200H21203H依次存放 2AH、4CH、B7H、65H,说明下列每一条指令执行后AX寄存器的内容。 (1)MOV AX,1200H (2)MOV AX,BX (3)MOV AX,BX+1100H (4)MOV AX,B
2、X+SI (5)MOV AX,BXSI+1100H(分数:7.50)_(2).【问题 2】 下列 MOV指令都是错误的,请指出错误原因。 (1)MOV ES, 1234H (2)MOV AL, 300 (3)MOV SP, AX (4)MOV AX, BX+DI (5)MOV 20H, AH(分数:7.50)_二、试题二(总题数:1,分数:15.00)【说明】 某测试设备是一个嵌入式系统,是为了测试一个专用设备而研制的,如下图所示。测试设备用于测试被测设备的各项软、硬件功能,包括 2路 RS232串口、2 路模拟量、电源以及专用设备的其他内部部件。在被测专用设备内部有专门的自检测程序,来测试内
3、部各部件。测试设备的串口与被测设备相连接,加电后,通过按测试设备的周边键与被测设备握手同步,再向被测设备发送检测消息,被测设备测试自己的某项功能后,通过串口将测试结果发回给测试设备,显示在测试设备的 LCD屏上。 测试设备的硬件由处理器模块、IO 模块和电源模块组成,处理器模块上有 CPU、存储器、2 路串口、键盘控制器;IO 模块上有 D/A、A/D 转换器,用作为模拟量输入和采集电源的电压值,以测试被测设备的模拟量和电源;电源模块提供测试设备的电源;测试设备模块间采用 ISA总线。 测试设备的 2路串口与被测设备相连,同时测试设备的 D/A、A/D 转换控制器的输入线路与被测设备的模拟量和
4、电源线相连,可直接测试被测设备的 2路 RS232串口、2 路模拟量、电源。 测试设备的软件由底层驱动(串口驱动、D/A、A/D 驱动和自定义键盘驱动)、嵌入式操作系统和测试软件组成。 (分数:15.00)(1).【问题 1】 设存储器容量为 4兆字,字长 32位,模块数为 4,分别用顺序方式和交叉方式进行组织,存储周期为200ns,数据线宽度 32位,总线传送周期为 50ns,请计算顺序存储器和交叉存储器的平均存取时间(单位:ns)和带宽(单位:位/秒)。(分数:3.75)_(2).【问题 2】 测试设备的软件工作过程为:测试设备和被测设备同时加电,测试设备的操作系统启动后自动执行测试程序。
5、测试程序首先采集被测设备的电源是否正常,并在屏幕显示测试信息。如果被测设备正常,则向被测设备发送握手消息,与被测设备同步;如果同步不上,则报“不能与设备同步”,测试结束。接下来,测试程序接收周边键命令,按要求测试。如果测试 2路模拟量,则由测试设备通过 D/A转换,向被测设备发送模拟信号,被测设备得到模拟信号,判断正确性后,通过串口将结果返回给测试设备。另外,被测设备还有 4个功能项是通过串口发送测试命令给被测设备的,由被测设备内的自测试程序测试后,将结果再通过串口传回给测试设备。 请完成下图所示的流程图,按编号将正确答案填写在对应栏中。 (分数:3.75)_(3).【问题 3】 请把下面列出
6、的 6个空位的答案填入相应的位置。 1ISA 总线为 _3_ 位总线。 2由模拟信号到数字信号的转换过程称为 _4_ 。 3将数字信号变成模拟信号的过程称为 _5_ 。 4D/A 转换器的主要性能指标有 _6_ 、 _7_ 、 _8_ 。(回答其中的三个主要性能指标即可)(分数:3.75)_(4).【问题 4】 在本测试设备的异步串行传输中,数据格式为:数据位 8位、奇校验位 1位、停止位 1位。当波特率为9600b/s时,每秒钟传送的有效数据是多少字节?为保证数据收发正确,试分析发送方和接收方时钟允许的误差范围,并以百分比形式给出最大误差。(分数:3.75)_三、试题三(总题数:1,分数:1
7、5.00)【说明】 在嵌入式操作系统设备管理的实现上,常使用到 C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段 C语言代码是驱动管理程序 manage_device 调用 4个不同设备驱动程序,但没有用到函数指针变量。 【C 语言代码】 /*变量与类型说明*/ #include “stdio.h“ #include “stdlib.h“ extern int sys_status; extern int Dev_drv1(int arg1, int arg2); extern int Dev_drv2(int arg1, int arg2); extern int D
8、ev_drv3(int arg1, int arg2); extern int Dev_drv4(int arg1, iht arg2); #define NOERROR 0 type struct int _fd; TYP_DEV_TAB; TYP DEV_TAB dev_tab50= 101,99, 80, 120,; /*程序代码*/ void manage_device(int devid, int arg1, int arg2) int place ; int ret; for(place=0 ; place50 ; place+) if dev_tab place. fd = de
9、vid) break; if(place=50) printf(“ NO DEVICE fd = %dn “,devid); switch(dev_tab place._fd) case 80: ret = Dev_drv3(int arg1,int arg2); break; case 99: ret = Dev_drv2(int arg1,int arg2); break; case 101: ret = Dev_drv1(int arg1,int arg2); break; case 120: ret = Dev_drv4(int arg1,int arg2); break; if (r
10、et!=NOERROR) printf(“ DEVICE %d error!n “, devid); int Dev_drv1(int arg1,int arg2) /*局部变量声明,略*/ /*驱动程序代码,略*/ int Dev_drv2(int arg1,int arg2) /*局部变量声明,略*/ /*驱动程序代码,略*/ int Dev_drv3(int arg1,int arg2) /*局部变量声明,略*/ /*驱动程序代码,略*/ int Dev_drv4(int arg1,int arg2) /*局部变量声明,略*/ /*驱动程序代码,略*/(分数:15.00)(1).【问题
11、1】 请用 C语言的函数指针变量,对 manage_device函数进行改造,完成下面 C语言代码中的(1)、(2)、(3)和(4)处的变量说明或语句,将解答填入对应栏内。 【C 语言代码】 /*变量与类型说明*/ #include “stdio.h“ #include “stdlib.h“ extern int sys_status; extern int Dev_drv1(int arg1, int arg2); extern int Dev_drv2(int arg1, iht arg2); extern int Dev_drv3(int arg1, int arg2); extern
12、int Dev_drv4(int arg1, int arg2); #define NOERROR 0 typedef struct int _fd; (1) 函数指针变量说明;/* 变量名用 process */ TYP_DEV_TAB; TYP_DEV_TAB dev_tab50= 101, Dev_drv1,99, Dev_drv2, 80, Dev_drv3,120, Dev_dry4,; /* 程序 */ void manage_device(int devid, int arg1, int arg2) iht place ; int ret; (2) 函数指针变量说明;/*局部变量
13、,变量名用 ProcAction */ for(place=0 ; place50 ; place+) if(dev_tab place._fd = devid) (3) 语句 1;/* 变量名胜 ProcAction, 得到具体函数的入口地址 */ break; if(place=50) printf(“NO DEVICE fd = %dn“,devid); (4) 语句 2; if(ret!=NOERROR) printf(“DEVICE %d error!“, devid); (分数:3.75)_(2).【问题 2】 在 C语言程序中,常在某些变量的说明前加 extem,如本题在变量说明
14、中的第一条加 extem int sys_stams;请说明加 extem与不加 extem的区别,在进行编译时会有什么样的不同处理?(分数:3.75)_(3).【问题 3】 函数的参数存放在什么地址空间中?说明其作用范围。将答案填入对应栏内。(分数:3.75)_(4).【问题 4】 在设备驱动程序(函数)Dev_drv1 中,对指针 ptr的说明如下: 【C 语文代码】 int Dev_drv1(int arg1,int arg2 ) struct node int ID; char name 20; int range; ; struct node *ptr; /*其他局部变量声明,略*/
15、 ptr = (struct node *)malloc(sizeof(struct node)*100); /*其他程序代码,略*/ 设 int为 32位整数,char 占 8位。当对指针 ptr赋完值后的值为 0x3751CO,若再执行一条“ptr+;”语句,此时 ptr的值为多少? (用十六进制表示)。(分数:3.75)_嵌入式系统设计师-26 答案解析(总分:45.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)【说明】 本题由两部分组成,第一部分为计算 AX寄存器的值,第二部分为判错题。(分数:15.00)(1).【问题 1】 已知 DS=2000H,BX=01
16、00H,SI=0002H,存储单元20100H到20103H依次存放12H、34H、56H、78H,21200H21203H依次存放 2AH、4CH、B7H、65H,说明下列每一条指令执行后AX寄存器的内容。 (1)MOV AX,1200H (2)MOV AX,BX (3)MOV AX,BX+1100H (4)MOV AX,BX+SI (5)MOV AX,BXSI+1100H(分数:7.50)_正确答案:()解析:(1)4C2AH (2)3412H (3)4C2AH (4)7856H (5)65B7H 解析 本问题主要考查汇编语言中数据寻址方式,寻址方式是寻找指令中用于说明操作数所在地址的方法
17、,或者是寻找操作数有效地址的方法。包括数据寻址和转移地址寻址两大类。本问题的具体解析如下: MOV AX,1200H 为直接寻址,对应的物理地址为:DS10H+200H=21200H,该单元的字内容为 4C2AH,所以该条指令执行后 AX的内容为 4C2AH。 MOV AX,BX 为寄存器间接寻址,对应的物理地址为:DS10H+BX=20100H,该单元的字内容为 3412H,所以该条指令执行后 AX的内容为 3412H。 MOV AX,BX+1100H 为寄存器相对寻址,对应的物理地址为:DS10H+BX+1100H=21200H,该单元的内容为 4C2AH,所以该条指令执行后 AX的内容为
18、 4C2AH。 MOV AX,BX+SI 为基址变址寻址,对应的物理地址为:DS10H+BX+SI=20102H,该单元的字内容为 7856H,所以该条指令执行后 AX的内容为 7856H。 MOV AX,BXSI+1100H 为基址变址相对寻址,对应的物理地址为:DS10H+BX+SI+1100H=21202H,该单元字的内容为 65B7H,所以该条指令执行后 AX的内容为 65B7H。(2).【问题 2】 下列 MOV指令都是错误的,请指出错误原因。 (1)MOV ES, 1234H (2)MOV AL, 300 (3)MOV SP, AX (4)MOV AX, BX+DI (5)MOV
19、20H, AH(分数:7.50)_正确答案:()解析:(1)立即数不能直接赋给段寄存器。 (2)立即数 300超过 8位,不能赋给 8位寄存器 AL。 (3)SP不能作为间接寻址寄存器寻址。 (4)两个寄存器不能相加。 (5)立即数不能作为目标操作数。 解析 本问题主要考查汇编语言的基础知识。在 8086的指令系统中,应用通用传送指令时,需要注意以下几点:传送指令可传送 8位数据,也可传送 16位数据,具体取决于指令中涉及的寄存器是 8位还是 16位,也取决于立即数的形式。 传送指令中总是即含源操作数,又含目的操作数,两者之中至少有一个是用寄存器来指出的,这可减少指令长度。因此,一个立即数不能
20、直接送直接寻址的内存单元。交换指令(XCHG)两个操作数都不能是立即数。传送指令不能在两个内存单元之间直接传送数据。 在传送指令中,寄存器即可以作为源操作数,也可以作为目的操作数,但 CS寄存器不能作为目的操作数,换句话说,这个寄存器的值不能随意修改。而 IP寄存器即不能作源操作数,也不能作为目的操作数。 用 BX、SI、DI 来间接寻址时,默认的段寄存器位 DS,而用 BP来间接寻址时,默认的段寄存器为 SS。 8086系统规定,凡是遇到给 SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行后,又自动恢复对 SS寄存器赋值前的中断开放状态。这样做是为了允许程序员连
21、续用两条指令分别对 SS和 SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。了解这点后,就应注意在修改SS和 SP的指令之间不要插入其他指令。 除了一些直接影响 FLAGS的指令外,一般传送指令不改变标志寄存器的内容。 立即数不能直接送段寄存器 DS、ES 以及 SS,要用通用寄存器或存储单元作桥梁。 因此,指令“MOV ES,1234H”的错误在于立即数直接赋给了段寄存器;指令“MOV AL,300”的错误在于立即数 300超过 8位,不能赋给 8位寄存器 AL;指令“MOVSP,AX”的错误在于 SP不能作为间接寻址寄存器寻址:指令“MOV AX,BX+DI”的错误在于两个寄存器不能
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 嵌入式 系统 设计师 26 答案 解析 DOC
