滴水复习 ---基础汇编

 

1.进制

 1.进制本质

 n进制 由n个进制组成 遇n进1

 这组图片也是进制

2.计算器中的进制

都由 01 组成

为方便书写,出现了十六进制 比如

A
1010

3.进制的运算

不复习,后续遇见再说

4.数据宽度

 如图 四位宽度  注意观察无符号数的范围和有符号数的范围

 

   32位宽度--范围

 

 在二进制码中,为了区分正负数,采用最高位是符号位的方法来区分,正数的符号位为0、负数的符号位为1.剩下的就是这个数的绝对值部分
无符号和有符号值的范围

5.逻辑运算

逻辑运算(不妨把1看为成功 0看为失败)
1.或运算 or |
A或者B 成功
只要有一个1就是1
2.与 and &
A和B 一起成功
两个都是1 才是1
3.异或 xor
不一样为1
4.非
1-0
0-1
这些逻辑运算不妨看成一个个电路
包括计算器中的加法都是靠逻辑运算进行实现的

2.内存与寄存器

 补充.寄存器和内存的区别
寄存器是中央处理器内的组成部份。它跟CPU有关。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。

  内存既专业名上的内存储器,内存是由内存芯片、电路板、金手指等部分组成的。它包涵的范围也很大,一般分为只读存储器和随即存储器,以及最强悍的高速缓冲存储器(CACHE)。

1.计算器计量单位

 2.内存

1.内存编号

为内存编号取得名字,cpu32位 64位也在于内存编号的长度

2.内存的读取与写入

这就是所谓的偏移

 读取内存编号

 

 ps:

mov eax,0x13ffc4

 

3.堆栈

 1.自己设计一个堆栈

 要求:

 思路

这里估计老师的想法是给一个值就esp-4 这样子

 push        ebp  
 mov         ebp,esp  
 sub         esp,0C0h  
//
 push        ebx  
 push        esi  
 push        edi  
 mov         edi,ebp  
 xor         ecx,ecx  
 mov         eax,0CCCCCCCCh  
 rep stos    dword ptr es:[edi]  
堆栈

标志位寄存器

 

 

 

 

 

 

 

4.汇编指令

 

 1.jmp指令 修改eip寄存器的值

mov实现

MOV EIP,寄存器/立即数   简写为   JMP 寄存器/立即数

2.call指令

PUSH 地址B

MOV EIP,地址A/寄存器

 3.ret指令

LEA ESP,[ESP+4]

MOV EIP,[ESP-4]

4.cmp指令

指令格式:CMP  R/M,R/M/IMM

该指令是比较两个操作数,实际上,它相当于SUB指令,但是相减的结构并不保存到第一个操作数中。

只是根据相减的结果来改变零标志位的,当两个操作数相等的时候,零标志位置1。

cmp:算数处理指令,用于把一个寄存器的内容和另一个寄存器的内容或立即数进行减法比较,不存储结果,都会更改标志位:


TEST指令

指令格式:TEST  R/M,R/M/IMM

该指令在一定程序上和CMP指令时类似的,两个数值进行与操作,结果不保存,但是会改变相应标志位.

常见用法:用这个指令,可以确定某寄存器是否等于0。

不为0 -z变 0

为0 变1

 ADC指令:带进位加法

格式:ADC  R/M,R/M/IMM   两边不能同时为内存  宽度要一样

SBB指令:带借位减法

格式:SBB  R/M,R/M   两边不能同时为内存  宽度要一样

XCHG指令:交换数据

格式:XCHG  R/M,R/M/IMM   两边不能同时为内存  宽度要一样

MOVS指令:移动数据  内存-内存

STOS指令:讲Al/AX/EAX的值存储到[EDI]指定的内存单元

REP指令:按计数寄存器 (ECX) 中指定的次数重复执行字符串指令

IF(指令 大小)

 

这个地方一直学的不是很好 碰到再查把

 

 资料来源 滴水三期

https://kxd.lanzoul.com/idmeZ0w70syh
posted @ 2023-05-14 15:27  大橘|博客  阅读(53)  评论(1)    收藏  举报