汇编的逻辑案例假设我们要把两个数加在一起现在假设有两个框。按照英语习惯我们一般会告诉别人写数字在第一个框里写数字3。写数字在另一个框里写数字4。最后我们将他们相加并将结果写在第一个框中。这时候第一个框中就的值是数字7.问题上述的计算适用于人类但我们该如何告诉计算机这样去做呢在上述案例中我们确实可以说这些框是用来放数值的计算机要执行这些操作就不能在纸上写字。在高级语言中我们可以有如int a \ long a \ char c 之类的变量来存值。但对CPU本身而言并没有这些东西我们依然可以使用内存但是因为性能问题一般情况不能用内存做算数运算。所以CPU内部包含了寄存器而这些是CPU内部的小块物理内存。RAX RBX RCX RDX RDI RSI RBP RSP R8 R9 R10 R11 R12 R13 R14 R15对于像x86-64架构来说每一个寄存器占8字节。上面罗列的都是x86-64架构的通用寄存器。其中一些有点特殊但可以先不管。关键是我们用的不是纸而是上面这几个非常有限的寄存器。计算机实现比如我们就先用前两个寄存器RAX和RBX当方框。我们将让计算机把值给填进去然后加起来放进第一个寄存器。如上面的图中的第一步写数字在第一个框里写数字3。如果要告诉计算机就会变成一堆复杂难度的二进制然后这串二进制将被计算机本身去解码。他将被送入解码器在那里会逐一进行比较。但为了方便编程我们需要去避免去编写这些晦涩难懂的代码。而我们真正想说的意思其实是:move to register RAX, the value of 3MOV RAX, 3此时寄存器RAX的值就变成了3move to register RBX, the value of 4MOV RBX, 4此时寄存器RBX的值就变成了4add into RAX, the value of RBXADD RAX, RBX此时RBX的值4就被加到RAX里面去了然后RAX的值就从3变成7了。而这就是汇编语言的逻辑。从早期二进制程序员的笔记中诞生。下面准备实操X86-64汇编之实验环境-CSDN博客文章浏览阅读168次点赞4次收藏4次。汇编的学习重在实践所以我们现在开始。https://blog.csdn.net/2403_88143188/article/details/163674095?spm1001.2014.3001.5501