首页 > 其他分享 >第一周

第一周

时间:2024-05-27 20:00:01浏览次数:6  
标签:第一周 int EAX 内存 ECX reg 指针

汇编语言

vscode反汇编
-exec disassemble /m
-exec disassemble /m main
-exec info registers  //寄存器信息
字节长度

1byte=8bits

1word=2bytes=16bits

1dword=4bytes=32bits

逻辑运算
运算 and or xor
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
计算机加法运算

以2+3为例

X:0010 Y:0011

1.首先进行xor运算得到0001(此操作将相加后无需进位的数保留下来)。

2.然后进行and运算得到0010,并左移一位 0010 << 1 ==0100 (此操作为进位操作) 。

3.最后判断2操作后得到的数是否为0(判断是否仍需进位)。

4.继续将1和2步骤得到的数进行上述操作,直到得到0为止 。

32位通用寄存器
寄存器 作用
EAX 累加器
ECX 计数
EDX I/O指针
EBX DS段的数据指针
ESP 堆栈指针
EBP SS段的数据指针
ESI 字符串操作的源指针:SS段的数据指针
EDI 字符串操作的目标指针:ES段的数据指针
通用寄存器使用

MOV /ADD/SUB

MOV EAX,12345678	;将12345678放入EAX中
ADD EAX,1			;EAX中的值加1
MOV ECX,2			;将2放入ECX中
ADD EAX,ECX			;将EAX和ECX中的值相加
SUB EAX,3			;EAX中的值减3

LEA 寻址 LEA EAX,DWORD PTR DS:[0x12345678]

内存

1.每个内存单元的宽度为8。

2.[0x0000000] [0xFFFFFFFF]称为地址。

3.地址的作用:当我们想从内存中读取数据或者想向内存中写入数据,首先应该找到读、写的位置。

内存的读写
寻址公式 例子
[立即数] DWORD PTR DS:[0x12345678]
[reg] reg代表任意寄存器 DWORD PTR DS:[ECX]
[reg+立即数] DWORD PTR DS:[ECX+4]
[reg+reg*{1,2,4,8}] mov dword ptr ds[0x0000FFFF],0x0000FFFF
[reg+reg*{1,2,4,8}+立即数] DWORD PTR DS:[ECX+ECX*4+2]
堆栈
PUSH	;进栈
POP		;出栈

先进栈后出栈,栈底地址不变。

C++指针笔记

一、指针的基本概念

指针是一个变量,它存储了另一个变量的内存地址。这个变量可以是一个基本数据类型(如int、char等),也可以是一个复杂的数据类型(如数组、结构体等)。在C++中,我们使用"*"来定义一个指针变量。

二、指针的声明和初始化
  1. 指针的声明:要声明一个指针,我们需要指定它所指向的数据类型。例如,如果我们想要一个指向整数的指针,我们可以这样声明:int *p;

  2. 指针的初始化:我们可以使用"&"运算符来获取一个变量的地址,然后将这个地址赋值给一个指针。例如:int x = 10;

    int *p = &x;

三、指针的访问和修改

我们可以使用"*"运算符来访问一个指针所指向的值。例如:cout << *p;

我们也可以使用"="运算符来修改一个指针所指向的值。例如:*p = 20;

四、指针的指针(二级指针)

有时,我们需要一个指针来存储另一个指针的地址。这样的指针称为二级指针。例如,我们可以定义一个指向整数指针的指针:int **p;

五、动态内存分配

在C++中,我们使用new和delete操作符来动态分配和释放内存。例如,我们可以使用new来创建一个新的整数:int *p = new int();。当我们不再需要这个整数时,我们可以使用delete来释放它的内存:delete p;。

六、指针的安全问题

在使用指针时,我们必须小心避免悬挂指针和空指针。悬挂指针是指指向已经释放的内存的指针。空指针是指未初始化的指针。在使用指针之前,我们应该检查它们是否为空。

标签:第一周,int,EAX,内存,ECX,reg,指针
From: https://www.cnblogs.com/yee-l/p/18216408

相关文章

  • 蓝桥杯国赛训练第一周
    P1491集合位置-洛谷|计算机科学教育新生态(luogu.com.cn)主要在于$A*$函数中估价函数,这里给出最好想也是我想出来的一种方法,也就是当黑白棋子各自都在对方的领域上,那么就可以考虑一种最小的消耗情况,也就是走一步顶两不,也就是黑白互换,那么此时所需要消耗的最小步数......
  • 吴恩达神经网络-第一周
    吴恩达神经网络学习视频参考b站:吴恩达机器学习本文是参照视频学习的随手笔记,便于后续回顾。神经网络(NeuralNetworks)发展历程神经元和大脑(Neuronsandthebrain)多个树突接受信号,通过轴突把信号传给下一个神经元通过软件模仿大脑工作,但大脑实际怎么工作的人们并不清楚,只是......
  • 吴恩达机器学习-第一周
    吴恩达机器学习-第一周学习视频参考b站:吴恩达机器学习本文是参照视频学习的随手笔记,便于后续回顾。机器学习定义Fieldofstudythatgivescomputerstheabilitytolearnwithoutbeingexplicitlyprogrammed.--ArthurSamuel(1959)编译了跳棋程序,程序自己下棋迭代。Que......
  • 2024.4 第一周做题记录
    \(2024.4.2\)CF1336DYuiandMahjongSet题意:初始有一个值域在\([1,n]\)的多重整数集\(S\),且每个元素重复次数最多为\(n\),定义\(\operatorname{triple}(S)\)表示\(S\)中相同无序三元组数量,\(\operatorname{straight}(S)\)表示\(S\)中连续整数的无序三元组数量,告诉......
  • 吴恩达2022机器学习专项课程(一) 4.6 运行梯度下降&第一周课程实验:线性回归的梯度下降
    问题预览/关键词更新梯度下降对模型拟合,等高线图,3d空间图的变化。什么是批量梯度下降。实验目标计算梯度运行梯度下降梯度下降迭代次数和成本函数的关系可视化模型预测在等高线图上的梯度下降学习率过大报错问题笔记1.模型拟合,等高线图,3d空间图的变化3.5课节有一样的图,......
  • 【Web】第一周
    【Web】第一周作业一:完成用户注册页面作业二:完成电子汇款单页面作业三:古诗词页面作业四:豆瓣电影页面作业一:完成用户注册页面<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>用户注册页面</title></head><style>.top......
  • 开学第一周周报
    这个星期是开学的第一周,进行了天梯赛的选拔,两场比赛打的都不好。赛后反思了一下,感觉自己有点陷入算法的框架中了。现在无论做什么题第一时间就想往算法方面去思考,dp,树状数组,搜索。但是赛后补题的时候发现其实压根就用不到,大多数都是贪心,但不知道怎么的比赛过程中就没有想到去贪心......
  • 双体学习第一周技术总结
    一、JDK,JRE,JVM的区别图例:JDK:java程序开发工具,包含JRE和开发工具。JRE:是java运行时的环境,包含JVM的核心类库。(运行环境)JVM:虚拟机。二、java是解释执行的高级编程语言保证,先编译后解释。三、java语法规则(1)代码区分大小写Scannersanner=newScanner(System.......
  • 第一周实验
    原程序只能一次排序一门课,改善过后可以同时排序三门课程对于改善之后的程序的调试1.显示学生成绩2.添加信息3.查询信息4.删除信息5.排序成绩6.单科分析7.清空8.退出来源博客园:https://www.cnblogs.com/esperanza/p/8056952.html......
  • 第一周实验
    简介:我在博客园中找到了前人制作的一份小程序,学生成绩管理系统。(1)来源:https://www.cnblogs.com/esperanza/p/8056952.html(2)运行环境:DEVC++源代码如下:点击查看代码#include#include#includeusingnamespacestd;intnum;//总学生人......