分享给自己一个小总结,也是帮助有需要的人。
如果是大佬请您不吝赐教,我是一个菜鸟哈
是一种用于电子计算机、微处理器、微控制器或其他可编程器件的机器语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,都需要用到汇编语言。
简单理解汇编语言就是直接面对机器语言,机器语言是机器指令的集合,电子计算机的机器指令是一列二进制数字0和1,表示高低电平。
汇编语言发展至今,有以下3类指令组成
1.汇编指令:机器码的助记符,有对应的机器码。
2.伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
3.其他的符号:如+、-、*、/等,由编译器识别,没有对应的机器码。
自己浅薄理解一下二进制0—1111?
0 、1、 10、 11、 100、 101、 110、 111、 1000、 1001、 1010、 1011、 1100、 1101、 1110、 1111
其实16进制是更方便理解使用二进制。
0 、1、 2、 3、 4 、 5 、 6、 7、 8、 9、 a、 b 、c 、 d、 e、 f
8进制
0、1、2、3、4、5、6、7、10、11、12、13、14、15、16、17、20….
5进制
0、1、2、3、4、10、11、12、13、14、20、、21、22、23、24、30、31…..
我以大家熟悉的10进制中6这个位数,在其他进制分别是?
二进制 110
十六进制 6
八进制 6
五进制 11
位 0 、 1
字节 0-0xFF (一个F代表二进制1111)
字 0-0xFFFF
双字 0-0xFFFFFFFF
这里就不讲有符号数 和无符号数
CPU工作必须 有提供指令和数据 给它,那么指令和数据在储存器中存放,也就是内存。
磁盘不同于内存,磁盘数据或程序 如果不读到内存中,就无法被CPU使用
32位 16位 8位
EAX AX AL
ECX CX CL
EDX DX DL
EBX BX BL
ESP SP AH
EBP BP CH
ESI SI DH
EDI DI BH
栈寄存器SS
数据段寄存器DS
代码段寄存器 CS
mov 寄存器,数据 比如:MOV AX,8
MOV 寄存器,寄存器 比如:mov AX,Bx
MOV 寄存器,内存单元 比如:MOV AX,[0]
MOV 内存单元,寄存器 比如; MOV [0],AX
MOV 段寄存器,寄存器 比如:MOV DS,AX
add和sub指令同mov 一样,都有两个操作对象。他们也可以有以下几种形式。
ADD 寄存器,数据 比如:ADD AX,8
ADD 寄存器,寄存器 比如:ADD ax,bx
ADD 寄存器,内存单元 比如:ADD AX,[0]
ADD 内存单元,寄存器 比如:ADD [0],AX
SUB 寄存器,数据 比如:SUB AX,9
SUB 寄存器,寄存器 比如:SUB AX,BX
SUB 寄存器,内存单元 比如:SUB AX,[0]
SUB 内存单元,寄存器 比如:SUB [0],AX
jmp 1000H 段地址直接转移,转移地址的偏移量由指令给出
JMP CX 段地址间接转移,转移地址的偏移量由CX指出
JMP 1000H:2000H 段间直接转移,段地址和偏移地址由指令给出
JMP DWORD PTR[SI] 段间间接转移转移地址在SI所指地址开始的4个单元中
PUSH AX
POP AX
PUSH DS (入栈) 将一个段寄存器中的数据入栈
POP es (出栈)用一个段寄存器接受出栈的数据。
PUSH [0] 将一个内存单元处的字入栈(栈操作都是以字为单位)。
POP [2] 出栈,用一个内存字单元接收出栈的数据。
debug基本命令操作
R命令查看、改变CPU寄存器的内容;
D命令查看内存中的内容
E命令改写内存中的内容
U命令将内存中的机器指令翻译成汇编指令
T命令命令执行一条机器指令
A命令以汇编指令的格式在内存中写入一条机器指令
查看CPU寄存器的内容,用R命令查看
用R命令改变寄存器的内容
用D命令查看内存中的内容,可以用d段地址:偏移地址的格式来查看
用E命令写入字符
用debug的A命令以汇编的形式在内中写入机器指令
在渗透路上如何走的更远更好,期待大佬名师指路, 路漫漫其修远兮吾将上下而求索
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.
Yaoヽ药药
发表于 2021-1-22
没一句有用的
评论列表
加载数据中...