当前位置: 首页 > news >正文

计算机组成原理实验报告二-认识汇编语言

实验资料:
https://wwpv.lanzoue.com/b05drqjef
密码:d19t

  1. 使用txt文档编写下面C源码,文档命名为【学号_hello.c】并使用Mingw工具(是
    Minimalist GNU for Windows的缩写)的bin文件夹下gcc.exe带选项编译(),打开文件后截图。
#include<stdio.h>
#define A 1000
int main()
{printf("hello_%d",A);return 0;
}
选项生成的文件后缀名打开生成文件截图
gcc.exe -E xx.c.i预处理
gcc.exe -S xx.c.s编译
gcc.exe -c xx.c.o汇编
gcc.exe xx.c -o xx.exe.exe链接
gcc.exe xx.c -v.txt版本信息

注意:第一至四个命令的实际使用参考下图
编译c程序
参考:
GCC编译常用命令
C语言编译 - gcc 编译指令
gcc 编译命令详解及最佳实践
C语言的编译过程详解

步骤一:打开DOS窗口:
按住shift+鼠标右键,选择“在此处打开XXXX窗口”

步骤二:认识Gcc的常用选项
-E *.i 预处理后的文件
-S *.s 汇编文件
-c *.o 目标文件object(二进制)
  hello.o + printf.o + math.o = *.exe
  printf.o + math.o+… 打包成库文件
-o 指定生成想要的EXE文件名
-v

步骤三:敲以下命令
.\gcc.exe .\2100130499_hello.c -E (显示到屏幕上)
.\gcc.exe .\2100130499_hello.c -E > 2100130499_hello.i (将屏幕上的内容重定向到txt中)
.\gcc.exe .\2100130499_hello.c -v (显示版本信息到屏幕上,无法直接重定向)
.\gcc.exe .\2100130499_hello.c -v 2>&1 > 2100130499_vhello.txt(需要加2>&1再重定向)
.\gcc.exe .\2100130499_hello.c (自动生成可执行文件a.exe)
.\gcc.exe .\2100130499_hello.c -o 改成你的学号.exe (指定生成特定文件名的exe)
注:-c -S 等选项会自动生成

  1. 用txt文件软件打开【学号_hello.s】汇编文件,将汇编语句的”hello”改成”Kitty”(修改后截图),并使用gcc.exe 学号_hello.s -o 学号_Kitty.exe,在DOS界面中运行学号_Kitty.exe,运行效果截图
    参考截图:
    修改汇编
    运行程序

  2. 拷贝下面1到10的累加C源码到【学号_sum.c】,
    (1) 使用gcc.exe 学号_sum.c -O0 -S -o 学号_sum_O0.s,查看生成的文件,截图
    (2) 使用gcc.exe 学号_sum.c -O2 -S -o 学号_sum_O2.s,查看生成的文件,截图
    (3) 比较-O0和-O2生成的汇编文件中main函数代码行数,截图上分别写明行数。

#include<stdio.h>
int main()
{int i, sum = 0;for( i = 1; i < 10; i++){sum += i;}printf(“sum=%d”,sum);return 0;
}

(1)
(2)

  1. 下载附件中的“2100130499.exe”。安装并使用ultraEdit软件,强制修改文件将打印的”2100130499”修改成“你自己的学号”,并截图在ultraEdit软件修改的部分(用红色框框定),以及在DOS中修改前1次及修改后2次的运行截图。

    附件:2100130499.exe
    注释:直接搜索 20130499 ,如下图所示,然后在点击右侧的字符串,修改为自己的学号
    查找

  2. (实验三内容-有兴趣的同学提前做)下载附件中的“2100130499VIP.exe”。安装并使用ultraEdit软件,强制将修改文件中的if…else分支语句,将”2100130499普通会员”修改成“你自己的学号VIP”,并截图在ultraEdit软件修改的部分(用红色框框定),以及在DOS中修改前1次及修改后2次的运行截图。

请参考 计算机组成原理实验三-修改二进制文件的程序改变最终运行结果 第二个问题

http://www.lryc.cn/news/69042.html

相关文章:

  • 都说计算机今年炸了,究竟炸到什么程度呢?
  • 0Ω的电阻作用
  • 02 PostGIS常用空间分析函数
  • [Golang] 管理日志信息就用Zap包
  • 【pytest】执行环境切换的两种解决方案
  • 2023国赛tomcat题
  • 计算机视觉——day 92 基于跨领域协作学习的单图像去雨
  • Java 正则表达式
  • Oracle索引知识看这一篇就足够
  • kafka命令行操作
  • Pinia 上手使用(store、state、getters、actions)
  • C++小项目之文本编辑器mynote(1.0.0版本)
  • 人工智能的界面革命,消费者与企业互动的方式即将发生变化。
  • 深度学习课程:手写体识别示例代码和详细注释
  • 10-03 单元化架构设计
  • JAVA—实验3 继承与多态
  • TCP协议和相关特性
  • 【SpringCloud组件——Eureka】
  • JVM面试题(一)
  • c# 无损压缩照片大小,并且设计了界面,添加了外部Ookii.Dialogs.dll,不一样的选择文件夹界面,并且可以把外部dll打包进exe中
  • 《统计学习方法》——隐马尔可夫模型(上)
  • ElasticSearch删除索引【真实案例】
  • 基于FPGA+JESD204B 时钟双通道 6.4GSPS 高速数据采集设计(三)连续多段触发存储及传输逻辑设计
  • 对 Iterator, Generator 的理解?
  • C++基础
  • 软件测试全流程
  • 【软件测试】支付模块测试攻略,这些测试方法和注意事项你掌握了么?
  • 刷完这个笔记,17K不能再少了....
  • 知识变现创业指南-《知识变现秘籍》
  • springboot+java博物馆文物管理系统