题目内容 (请给出正确答案)
[主观题]

试题五 (共15 分 ) 阅读以下关于嵌入式C语言编程方面的问题,回答问题1至问题3,将答案填入答题纸

试题五 (共15 分 )

阅读以下关于嵌入式C语言编程方面的问题,回答问题1至问题3,将答案填入答题纸的对应栏内。

【说明】

嵌入式C语言编程中常涉及位运算、宏定义的问题,以及大端方式(Big-endian)、小端方式(Little-endian)的访问问题。

【 问题1 】(4 )

嵌入式系统中常要求用户对变量或寄存器进行位操作。下面的两个函数分别为设置和清除变量 a 的第 5位。请使用下面的宏定义 BIT5 按要求对变量 a 进行相应的处理。在函数set_bit5中,用位或赋值操作(=)设置变量a的第5位,在函数clear_bit5中,用位与赋值操作(&=)清除变量a的第5位。

define BIT5 (0x01<<5)

static int a;

void set_bit5(void)

{

① ; /* 设置变量a的第5位 */

}

void clear_bit5(void)

{

② ; /* 清除变量a的第5位 */

}

【 问题2】(5 分 )

图5-1所示代码的设计意图是计算1~100各数的平方。 该段代码运行后,没有得到应有的结果,请说明出错原因,将答案填入答题纸的对应栏内。

试题五 (共15 分 ) 阅读以下关于嵌入式C语言编程方面的问题,回答问题1至问题3,将答案填入答题

试题五 (共15 分 ) 阅读以下关于嵌入式C语言编程方面的问题,回答问题1至问题3,将答案填入答题

【问题3】(6分)

某嵌入式处理器工作在大端方式 (Big-endian)下, 其中unsigned int为32位, unsigned short为16位,unsigned char为8位。仔细阅读并分析下面的C 语言代码,写出其打印输出的结果,将答案填入答题纸的对应栏内。

include "stdio.h"

include "stdlib.h"

void *MEM_ADDR;

void mem_test(void)

{

unsigned int *pint_addr = NULL;

unsigned short *pshort_addr = NULL;

unsigned char *pchar_addr = NULL;

MEM_ADDR = (void *)malloc(sizeof(int));

pint_addr = (unsigned int *)MEM_ADDR;

pshort_addr = (unsigned short *)MEM_ADDR;

pchar_addr = (unsigned char *)MEM_ADDR;

*pint_addr = 0x12345678;

printf("0x%x, 0x%x\n", *pshort_addr, *pchar_addr);

/* 第一次输出 */

pshort_addr++;

*pshort_addr = 0x5555;

printf("0x%x, 0x%x\n", *pint_addr, *pchar_addr);

/* 第二次输出 */

pchar_addr++;

*pchar_addr = 0xAA;

printf("0x%x, 0x%x\n", *pint_addr, *pshort_addr);

/* 第三次输出 */

}

查看答案
如搜索结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能会需要:
您的账号:
发送账号密码至手机
发送
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
温馨提示
每个试题只能免费做一次,如需多次做题,请购买搜题卡
立即购买
稍后再说
警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“赏学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
赏学吧
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反赏学吧购买须知被冻结。您可在“赏学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
赏学吧
点击打开微信