计算机组成原理实验一(完整)

时间:2021-03-24 01:03:41
  1. 在VC中使用调试功能将下列语句运行的内存存放结果截图,每运行一句需截图一次。
#include<stdio.h>
int main()
{
	int a = 你的学号末两位-100; //0x?????????
	char b= 你的学号末两位-100;
	short c=你的学号末两位-100;
	unsigned int d = 你的学号末两位-100;
	int e[5]={你的学号末两位-100,你的学号末两位-99,你的学号末两位-98,你的学号末两位-97,你的学号末两位-96};
	float f1 = -11.375;
	float f2 = 0.1;
	a=1 ;//把a的次高字节变成EE ?(作业的要求是将a改成自己的学号!)
	return 0;
}

过程参考:
注意:每个变量有自己的数据类型,不同数据类型所占字节数也不同,具体长度参考下图

  • 求变量 a 的地址
    计算机组成原理实验一(完整)
  • 求变量 b 的地址
    计算机组成原理实验一(完整)
  • 求变量 c 的地址
    计算机组成原理实验一(完整)
  • 求变量 d 的地址
    计算机组成原理实验一(完整)
  • 求数组 e 的地址 (注意顺序!)
    计算机组成原理实验一(完整)
  • 求变量 f1 的地址
    计算机组成原理实验一(完整)
  • 求变量 f2 的地址
    计算机组成原理实验一(完整)
  • 求改变值后 变量 a 的地址 (在执行完a的赋值操作后,在左下角标注的地方双击,改成自己的学号,然后地址就会改变了)
    计算机组成原理实验一(完整)
    下面就是根据我自己学号末二位记录的值
#include<stdio.h>
#include "stdafx.h"
int main()
{
	int a = 16-100; //0xffffffac
	char b= 16-100; //0xac
	short c=16-100; //0xffac
	unsigned int d = 16-100; //0xffffffac
	int e[5]={16-100,16-99,16-98,16-97,16-96}; //0xffffffac 0xffffffad 0xffffffae 0xffffffaf 0xffffffb0
	float f1 = -11.375; //0xc1360000
	float f2 = 0.1; //0xcd3dcccccd
	a=1 ;//把a的次高字节变成EE ? //这里填自己学号的那一块
	return 0;
}

  1. 某计算机存储器按字节编址,采用小端方式存放数据。假定编译器规定int 型、float型和 short型长度分别为32位、32 位和16 位,并且数据按边界对齐存储。某C 语言程序段如下:
   struct{ 
     char a[3]; 
     float b; 
     short c;
     double d;
     short f;
     } record; 
    record.b= 20.59375f;   
    record.c= -0xDCBA; 

若record变量的首地址为0xFF20,则
注意:填写答案时,如须填写英文字母一律使用大写。
(1)地址 0xFF25 中内容为 0x FF。(填十六进制数)
(2)地址 0xFF28 中内容为 0x E9。(填十六进制数)
(3)浮点型 record.b 是按 IEEE754 标准编码后存放。
(4)record.f 的地址为0x FF38。(填十六进制数)
(5)结构体record一共占 32 个字节的大小。(填十进制数)
通过使用VC编译器的调试功能查看内存中的数据,
(1)填写上述空格,并截图你的实验过程;
(2)对以上内存结果进行验算,写出你的理由。

计算机组成原理实验一(完整)
计算机组成原理实验一(完整)

仅供参考!

理由:根据下图可以知道,结构体record的内存占用32个字节,利用软件可以查到,结构体record的首地址为0x 0019ff30,而record.f的地址为0x 0019ff48,两个地址相差0x 18,所以假如record变量的首地址为0xFF20,则record.f的地址为0xFF38。

  1. 在VC中使用下列功能,打开每一项功能都截图一张,在图片中圈定打开的内容,说明这个功能要显示什么内容?(如下图所示)
    计算机组成原理实验一(完整)

计算机组成原理实验一(完整)

以上是题目描述,以下是参考

计算机组成原理实验一(完整)
使用参考:
使用“监视”和“快速监视”窗口监视变量

计算机组成原理实验一(完整)
使用参考:
查看调用堆栈,并在调试器中使用“调用堆栈”窗口

计算机组成原理实验一(完整)
使用参考:
检查自动和局部变量窗口中的变量

计算机组成原理实验一(完整)
使用参考:
在“寄存器”窗口中查看寄存器值(C#、C++、Visual Basic、F#)

计算机组成原理实验一(完整)
使用参考:
Visual Studio调试器指南—Disassembly窗口

  1. 在其他任意编译器中(Codeclock/Dev c++/VS)使用调试功能,将下列语句再次运行的内存存放结果截图
#include<stdio.h>
int main()
{
	int a = 你的学号末两位-100; //0x?????????
	int e[5]={你的学号末两位-100,+1,+2,+3,+4};
	float f1 = -11.375;
	return 0;
}

在其他任意编译器中(Codeclock/Dev c++/VS)复现(1)中的部分结果,并截图3张

注意,这里要求使用其他的编译器,为了教程通用,统一采用小熊猫C++进行演示,点击此处下载小熊猫C++(密码是f0tp,选择倒数第二个下载)
计算机组成原理实验一(完整)

下面是我的调试过程:

  1. 变量 a 的地址
    计算机组成原理实验一(完整)
  2. 数组 e 的地址
    计算机组成原理实验一(完整)
  3. 变量 f1 的地址
    计算机组成原理实验一(完整)