1天汇编快速入门日记


一、什么是机器语言?

机器语言是机器能直接识别的程序语言或指令代码,无需经过翻译,每一操作码在计算机内部都有相应的电路来完成它,或指不经翻译即可为机器直接理解和接受的程序语言或指令代码。机器语言使用绝对地址和绝对操作码。不同的计算机都有各自的机器语言,即指令系统。从使用的角度看,机器语言是最低级的语言。

二、什么是汇编语言?

汇编语言是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

三、什么是编译器?

编译器就是将“一种语言”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 → 预处理器 → 编译器 → 目标代码 → 链接器 (Linker) → 可执行程序

四、什么是高级语言?

计算机语言具有高级语言和低级语言之分。而高级语言主要是相对于汇编语言,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。编写的程序称之为源程序。
高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如java,c,c++,C#,php,python 等等,这些语言的语法、命令格式都不相同
高级语言与计算机的硬件结构及指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。所以汇编语言适合编写一些对速度和代码长度要求高的程序和直接控制硬件的程序。高级语言、汇编语言和机器语言都是用于编写计算机程序的语言

五、为啥学习汇编语言?

所有的语言最后多会变为机器语言,但是机器语言全是0和1不方便我们查看,所以我们会把机器语言转为汇编语言方便我们查看,所以汇编语言是所有语言的基础

六、为啥学习进制?

计算机只认识二进制,就是0和1,为了更好的学习计算机,我们首先需要了解什么是进制。很多人学不好进制,原因是我们平常总以十进制去思考,所以在学习进制的时候,必须忘记我们平时的十进制

七、进制的定义?

八进制就是八个符号组成,分别是0 1 2 3 4 5 6 7 逢八进一
十进制就是十个符号组成,分别是0 1 2 3 4 5 6 7 8 9逢十进一
N进制的定义就是,由N个符号组成,逢N进一

八、计算机常见数据单位

位(BIT) 1个位只能存一个0或者1 位是计算机存储的最小单位
字节(Byte) 1个字节等于8位
字(Word) 1个字等于2个字节
双子(Doubleword) 1个双子等于2个字

九、通用寄存器

EAX ECX EDX EBX ESP EBP ESI EDI

十、常用命令

MOV赋值命令

mov eax,1 	给EAX赋值1
mov ecx,1 	给ECX赋值1
mov edx,1 	给EDX赋值1
mov EAX,DWORD PTR  ds:[0x11111111]  把数据段0x11111111地址的值取4个字节的值赋值给EAX寄存器

ADD加法命令

add eax,ecx    eax = eax + ecx

SUB减法命令

sub eax ,ecx      eax = eax -ecx

AND与运算命令

and eax,ecx

OR或运算命令

OR运算是指如果一个操作数或多个操作数为 1,则逻辑或运算符返回1;只有全部操作数为0,结果才是 0。
or eax,ecx

xor异或运算命令

如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
mov eax 00000011
mov ecx 00000010
xor eax,ecx
eax等于00000001

NOT取反命令

NOT就是把0变1 1变0
MOV EAX 01001100
NOT EAX
结果EAX等于10110011

MOVS内存到内存赋值指令

MOV ESI 0x00000001 内存地址1
MOV EDI 0x00000002 内存地址2
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]

JMP指令

修改EIP寄存器的值

CALL指令

修改EIP寄存器的值
和jmp的区别就是把下行指令的地址保存到堆栈中,还有ESP-4

ret指令

EIP 等于堆栈中栈頂的值,然后esp+4,然后EIP跳转

什么是堆栈平衡?

堆栈平衡就是Call返回的时候,ESP和EBP寄存器回到调用CALL之前的值

什么是内平栈?

内平栈就是在CALL的内部修改ESP和EBP寄存器回到调用CALL之前的值

什么是外平栈?

外平栈就是在CALL的外部修改ESP和EBP寄存器回到调用CALL之前的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值