题目内容 (请给出正确答案)

某程序中有如下一段循环代码段 P: for (i = 0; i <...

某程序中有如下一段循环代码段 P: for (i = 0; i < N; i++) sum += A[ i ]; 假设编译时变量 sum 和 i 分别分配在寄存器 R1 和 R2 中,常量 N 在寄存器 R6 中,数组 A 的首地址在寄存器 R3 中,程序段 P 的起始地址为 08048100H,对应的汇编码和机器代码如下所示: 指令序号 指令地址 机器代码 汇编码 操作注释 1 08048100H 00022080H loop: sll R4, R2, 2 (R2)<<2→r4 1 2 3 4 5 6 32 08048104h 00083020h add r4, r3 (r4)+(r3)→r4 08048108h 8c850000h load r5, 0(r4) ((r4)+0)→r5 0804810ch 00250820h r1, r5 (r1)+(r5)→r1 08048110h 20420001h addi r2, (r2)+1→r2 08048114h 1446fffah bne r6, loop if (r2)≠(r6) goto 执行上述代码的计算机中,存储器 m 采用 位定长指令字,其中分支指令 采用如下格式: 31:26 25:21 20:16 15:0 op rs rd offset 指令格式中的 代表操作码字段, 和 都代表寄存器编号, 为偏移量常数(用补码表示), 请回答下列问题,并说明理由: (1)存储器 的编址单位是什么? (2)已知 sll 指令实现左移功能,数组 a 中每个元素占多少位? (3)上表中 指令的 字段的值是多少?已知 指令采用相对寻址方式, pc 的当前内容为指令bne 的地址,通过分析表中指令地址和 指令内容,推断>

暂无答案
您可能会需要:
更多“某程序中有如下一段循环代码段 P…”相关的问题

第1题

有如下程序
main()
{ char ch[2][5]={"6937","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>′\0′;j+=2)
s=10*s+p[i][j]-′0′;
printf("%d\n",s);}
该程序的输出结果是
A.69825
B.63825
C.6385
D.693825
点击查看答案

第2题

有以下程序: main() { int a[3][3],*P,i, p=&a[0][0]; for(i=0,i<9;i++)P[i]=i; for(i=0;i<3;i++)printf(“%d”,a[1][i]); } 程序运行后的输出结果是( )。
A.0 1 2
B.1 2 3
C.2 3 4
D.3 4 5

请帮忙给出正确答案和分析,谢谢!
点击查看答案

第3题

有下列程序: main { char*p[]={"3697","2584"}; int i,j;long num=0; for(i=0;i<2:i++) { j=0; while(p[i][j]!=\0) { if((p[i][j]-\0 )%2)num=1O*num+p [j][j]-0; j+=2; } } printf("%d\n",num); } 程序执行后的输m结果是( )。
A.35
B.37
C.39
D.3975

请帮忙给出正确答案和分析,谢谢!
点击查看答案

第4题

有以下程序:main(){ char *p[]={"3697","2584"}; int i,j; long num=0; for(i=0;i<2;i++) {j=0;while(p[i][j]!=’\0’){ if((p[i][j]-’0’)%2= =0)num=10*num+p[i][j]-’0’; j+=2;} } printf("%d\n",num);}程序执行后的输出结果是( )。A.35 B.37C.39 D.28
点击查看答案

第5题

若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
for(i=0;i<3;i)
p[i]=&a[i*4];
pp=p;
则对数组元素的错误引用是
A.pp[0][1]
B.a[10]
C.p[3][1]
D.*(*(p+2)+2)

请帮忙给出正确答案和分析,谢谢!
点击查看答案

第6题

有以下程序
main( )
{ int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++) p[i]=i+1;
printf("%d \n",a[1][2]);
}
程序运行后的输出结果是
A.3
B.6
C.9
D.2
点击查看答案

第7题

若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
for(i=0;i<3;i)
p[i]=&a[i*4];
pp=p;
则对数组元素的错误引用是
A.pp[0][1]
B.a[10]
C.p[3][1]
D.*(*(p+2)+2)
点击查看答案

第8题

若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
for(i=0;i<3;i)
p[i]=&a[i*4];
pp=p;
则对数组元素的错误引用是
A.pp[0][1]
B.a[10]
C.p[3][1]
D.*(*(p+2)+2)
点击查看答案

第9题

有以下程序
fun(char p[][10])
{ int n=0,i;
for(i=0;i<7;i++)
if(p[i][0]=='T')n++;
return n;
}
main()
{ char str[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
printf(" % d\n",fun(str));
}
程序执行后的输出结果是
A)1
B)2
C)3
D)0
点击查看答案

第10题

程序中有语句:for(inti=0;i<5;i++)cout<<*(p+i)<<",";能够依次输出int型一维数组a的前5个元素。由此可知,变量P的定义及初始化语句是( )。
A.int*p=a;
B.intp=a;
C."p=a;
D.p=a;


请帮忙给出正确答案和分析,谢谢!
点击查看答案
热门考试 全部 >
最新试卷 全部 >
找答案
账号:
你好,尊敬的上学吧用户
粘贴 取消
搜索
如搜索结果不匹配,请 联系老师上传试题 获取答案
发送账号至手机
看不清?点击更换
发送
谢谢您的反馈

您认为本题答案有误,我们将认真、仔细核查,
如果您知道正确答案,欢迎您来纠错

警告:系统检测到您的账号存在安全风险

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

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

您的免费查看次数已用完,

需要开通会员才能继续使用。

马上开通会员 我已开通会员,登录会员账号继续查看答案
重置密码
确认修改