实验一:查看CPU和内存,用机器指令和汇编指令编程

简介: 实验一:查看CPU和内存,用机器指令和汇编指令编程

实验一:查看CPU和内存,用机器指令和汇编指令编程

实验场景:ubuntu18.04版本

1.进入DOS系统

先在系统上安装sudo apt-get install dosbox

2.在终端处直接输入dosemu进入DOS系统

3.输入debug,便可进行debug调试

debug命令及其使用

所使用到的Debug功能。

1.R(Register)命令查看,改变CPU寄存器中的内容

2.D(Dump)命令查看内容中的内容

3.E(Enter)命令改写内容中的内容

4.U(Unassemble)命令将内存中的机器指令翻译成汇编指令

5.T(Trace)命令执行一条机器指令

6.A(Assemble)命令以汇编指令的格式在内存中写入一条机器指令


具体实际操作可以跟着王爽的汇编语言进行

8cc0c4b606a84f37aa9359cc93695cb8.png


直接输入r可以查看各个寄存器中的值

6d9b5ea7ce964a68ad0c8217e8f6c603.png


输入r ax按下回车之后可以输入16进制的数字就可以往寄存器中输入想输入的值

206ce8889a874847aa4c4ae25622cb12.png


D命令可以查看内容中的内容,输入格式是d 段地址:偏移地址的格式来查看例如要查看10000H中的内容d 1000:0。输出的形式是左边是地址,中间是机器码,右边是对应的ASCII码.

5c8e121d759643b8a82f69e3190b40c2.png


E命令来改写内容中的内容


5d4551e4a8d04eca8e4421780fdd8cff.png

用e改写内容中的内容,用u对机器指令进行反汇编处理


2b18047c43ce4166ac317ef0df23c65c.png

T指令可以执行CS:IP处的指令。可以通过R指令将CS和IP改到自己想要的位置,再使用T指令执行。2adb418d9c2b42798a7816788a97a2c8.png


a指令将对指定地址进行汇编语言的编写


目录
相关文章
|
缓存 安全 Java
Java并发编程进阶:深入理解Java内存模型
Java并发编程进阶:深入理解Java内存模型
84 0
|
Java 开发者
Java面试题:请解释内存泄漏的原因,并说明如何使用Thread类和ExecutorService实现多线程编程,请解释CountDownLatch和CyclicBarrier在并发编程中的用途和区别
Java面试题:请解释内存泄漏的原因,并说明如何使用Thread类和ExecutorService实现多线程编程,请解释CountDownLatch和CyclicBarrier在并发编程中的用途和区别
128 0
|
4月前
|
存储 缓存 Java
【高薪程序员必看】万字长文拆解Java并发编程!(5):深入理解JMM:Java内存模型的三大特性与volatile底层原理
JMM,Java Memory Model,Java内存模型,定义了主内存,工作内存,确保Java在不同平台上的正确运行主内存Main Memory:所有线程共享的内存区域,所有的变量都存储在主存中工作内存Working Memory:每个线程拥有自己的工作内存,用于保存变量的副本.线程执行过程中先将主内存中的变量读到工作内存中,对变量进行操作之后再将变量写入主内存,jvm概念说明主内存所有线程共享的内存区域,存储原始变量(堆内存中的对象实例和静态变量)工作内存。
132 0
|
3月前
|
存储 缓存 程序员
软考软件评测师——计算机组成与体系结构(CPU指令系统)
本内容详细解析了计算机中央处理器(CPU)的核心架构及其关键组件的工作原理。首先介绍了CPU的四大核心模块:运算单元、控制单元、寄存器阵列和内部总线,并阐述其在数据处理中的核心职责。接着深入探讨了算术逻辑部件(ALU)的功能与专用寄存器的作用,以及通用寄存器对性能提升的意义。随后分析了控制单元的指令处理流程及特殊寄存器的功能。此外,还解析了寄存器系统的分类与设计特点,并对比了不同内存访问模式的特点与应用场景。最后,通过历年真题巩固相关知识点,帮助理解CPU各组件的协同工作及优化策略。
|
11月前
CPU的工作原理基于其内部结构,通过执行指令来完成各种任务
CPU的工作原理基于其内部结构,通过执行指令来完成各种任务
277 3
|
6月前
|
分布式计算 算法 Java
|
10月前
|
存储 人工智能 编译器
【AI系统】CPU 指令集架构
本文介绍了指令集架构(ISA)的基本概念,探讨了CISC与RISC两种主要的指令集架构设计思路,分析了它们的优缺点及应用场景。文章还简述了ISA的历史发展,包括x86、ARM、MIPS、Alpha和RISC-V等常见架构的特点。最后,文章讨论了CPU的并行处理架构,如SISD、SIMD、MISD、MIMD和SIMT,并概述了这些架构在服务器、PC及嵌入式领域的应用情况。
634 5
|
12月前
|
监控 算法 Java
深入理解Java中的垃圾回收机制在Java编程中,垃圾回收(Garbage Collection, GC)是一个核心概念,它自动管理内存,帮助开发者避免内存泄漏和溢出问题。本文将探讨Java中的垃圾回收机制,包括其基本原理、不同类型的垃圾收集器以及如何调优垃圾回收性能。通过深入浅出的方式,让读者对Java的垃圾回收有一个全面的认识。
本文详细介绍了Java中的垃圾回收机制,从基本原理到不同类型垃圾收集器的工作原理,再到实际调优策略。通过通俗易懂的语言和条理清晰的解释,帮助读者更好地理解和应用Java的垃圾回收技术,从而编写出更高效、稳定的Java应用程序。
|
12月前
|
存储 并行计算 算法
CUDA统一内存:简化GPU编程的内存管理
在GPU编程中,内存管理是关键挑战之一。NVIDIA CUDA 6.0引入了统一内存,简化了CPU与GPU之间的数据传输。统一内存允许在单个地址空间内分配可被两者访问的内存,自动迁移数据,从而简化内存管理、提高性能并增强代码可扩展性。本文将详细介绍统一内存的工作原理、优势及其使用方法,帮助开发者更高效地开发CUDA应用程序。
|
缓存 Linux C语言
C语言 多进程编程(六)共享内存
本文介绍了Linux系统下的多进程通信机制——共享内存的使用方法。首先详细讲解了如何通过`shmget()`函数创建共享内存,并提供了示例代码。接着介绍了如何利用`shmctl()`函数删除共享内存。随后,文章解释了共享内存映射的概念及其实现方法,包括使用`shmat()`函数进行映射以及使用`shmdt()`函数解除映射,并给出了相应的示例代码。最后,展示了如何在共享内存中读写数据的具体操作流程。