第1题
单选题
内存按字节编址从A5000H到DCFFFH的区域其存储客量为()。
A.123KB
B.180KB
C.223KB
D.224KB
【解析】正确答案:D。
本题考查计算机系统基础知识。
从地址A5000H到DCFFFH的存储单元数目为38000H(即224*1024)个,由于是字节编址,从而得到存储容量为224KB。
第2题
问答题
字符串常量占ram阅读以下关于嵌入式C语言编程方面的问题,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
嵌入式C语言编程中常涉及位运算、宏定义的问题,以及大端方式(Big-endian)、小端方式(Little-endian)的访问问题。
嵌入式系统中常要求用户对变量或寄存器进行位操作。下面的两个函数分别为设置和清除变量a的第5位。请使用下面的宏定义BIT5按要求对变量a进行相应的处理。在函数set_bit5中,用位或赋值操作(|=)设置变量a的第5位,在函数clear_bit5中,用位与赋值操作(&=)清除变量a的第5位。
【问题2】(5分)
图5-1所示代码的设计意图是计算1~100各数的平方。该段代码运行后,没有得到应有的结果,请说明出错原因,将答案填入答题纸的对应栏内。
图5-2是在不改变宏定义的情况下,对程序进行修改。请完成该段代码,将答案填入答题纸的对应栏内。
【问题3】(6分)
某嵌入式处理器工作在大端方式(Big-endian)下,其中unsigned int为32位,unsigned short为16位,unsigned char为8位。仔细阅读并分析下面的C语言代码,写出其打印输出的结果,将答案填入答题纸的对应栏内。
【解析】正确答案:【问题1】,
①a |=BIT5
②a &=~B IT5
【问题2】
出错原因:
在宏定义中,参数a使用两次,而在引用宏时,使用了i++,从而导致出错。
①i
②i++或i=i+1或++i或i+=1
【问题3】
第一次输出:0x1234,0x12
第二次输出:0x12345555,0x12
第三次输出:0x 12aa5555,0x5555。
【问题1】
在32位机中,宏BIT5所定义的数值的二进制形式为00000000 00000000 00000000 00100000,~BIT5的二进制形式为 11111111 11111111 11111111 11011111。在位运算中,任何值与1进行或操作之后结果都为1,与0进行或操作之后结果还是原数。同样,任何值与0进行与操作之后结果都为0,与1进行与操作之后结果还是原数,所以通过位的或操作可以将一个数值中的某位设置为1,通过与操作方式可以将一个数值中的某位设置为0。a | = BIT5将a的第5位置1,其他位不变,a &=~BIT5将a的第5位置0,其他位不变。
【问题2】
对问题2中的代码进行宏展开之后,计算平方的语句为result = SQUARE((i++)*

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。