21级计科专业计算机组成原理实验一报告

实验资料:
https://wwpv.lanzoue.com/b05drrb2b
密码:7nwj

附件清单如下:
(1)MSDEV.EXE-----替换后可以修复调试后软件不可用的情况
(2)计算机组成原理实验一(完整).docx ----计算机组成原理实验一的报告模板
(3)1-1.vc6_cn_full ---- vc++编译器安装软件
(4) 2.安装文件替换效果图(修复调试后软件死机BUG)----(1)程序的替换示意图

  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 的地址
    变量a的地址
  • 求变量 b 的地址
    变量b的地址
  • 求变量 c 的地址
    变量c的地址
  • 求变量 d 的地址
    变量d的地址
  • 求数组 e 的地址 (注意顺序!)
    变量e的地址
  • 求变量 f1 的地址
    变量f1的地址
  • 求变量 f2 的地址
    变量f2的地址
  • 求改变值后 变量 a 的地址 (在执行完a的赋值操作后,在左下角标注的地方双击,改成自己的学号,然后地址就会改变了)
    修改值后变量a的地址

下面就是根据我自己学号末二位记录的值

注意:下面代码的第二行有加 #include “stdafx.h” 一行,这是必须的,否则运行错误,具体请看C/C++—— #include“stdafx.h”详解

#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 C0。(填十六进制数)
(2)地址 0xFF28 中内容为 0x 46。(填十六进制数)
(3)浮点型 record.b 是按 IEEE754 标准编码后存放。
(4)record.f 的地址为0x FF38。(填十六进制数)
(5)结构体record一共占 32 个字节的大小。(填十进制数)
通过使用VC编译器的调试功能查看内存中的数据,
(1)填写上述空格,并截图你的实验过程;
(2)对以上内存结果进行验算,写出你的理由。

变量record的地址
变量record.f的地址

仅供参考!

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

  1. 在VC中使用下列功能,打开每一项功能都截图一张,在图片中圈定打开的内容,说明这个功能要显示什么内容?(如下图所示)
    功能说明

示例

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

watch窗口
使用参考:
使用“监视”和“快速监视”窗口监视变量

Call Stack窗口
使用参考:
查看调用堆栈,并在调试器中使用“调用堆栈”窗口

Varibles窗口
使用参考:
检查自动和局部变量窗口中的变量

Registers窗口
使用参考:
在“寄存器”窗口中查看寄存器值(C#、C++、Visual Basic、F#)

Disassembly窗口
使用参考:
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,选择倒数第二个下载)
小熊猫C++调试教程

下面是我的调试过程:

  1. 变量 a 的地址
    变量a的地址
  2. 数组 e 的地址
    数组e的地址
  3. 变量 f1 的地址
    变量f1的地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qing影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值