1.

世界的底层是原子和电子,电子构成电路(门电路,触发器),二进制的电路构成计算单元(加法器等),计算单元+存储设备+输入输出设备=计算机。

(我们需要计算世界的真实问题,需要对问题进行抽象和数字化,然后把数字化的待处理数据输入给输入设备(一般是键盘),输入设备将数据存入内存,计算的算法传给计算单元,计算单元计算后把结果再存入内存,最后输出给输出设备(一般是显示器))。

2.

计算机的本质是计算(CPU),计算的核心是CPU的ALU。

算术逻辑单元(Arithmetic&logical Unit)是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,

由"And Gate"(与门) 和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算,如加减乘除。

3.

ALU可以完成以下运算∶

整数算术运算(加、减,乘、除)
位逻辑运算(与、或、非、异或)
移位运算。

4.

计算机的语言是二进制的机器语言,我们只能通过他与计算机通讯。

机器语言就是计算机的电路,加法电路,传输电路等。

机器语言是01组成,难以阅读并修改,于是聪明的人类发明了汇编指令,汇编指令可以说和机器指令一一对应,

5.

汇编指令的核心只有三条:

数据传送指令(mov),加法指令(add),跳转指令(jmp)。

其他基本都是他们的引申。

6. 数据传送指令

数据传送指令(mov)是最常用的指令,为什么呢?

因为待处理数据是非常多的,CPU虽然也有存储设备(寄存器和缓存),但是他的容量非常小(因为CPU存储成本非常高).

所以数据都存储在内存中,内存的重要性在计算机中仅次于CPU。 “存储程序”原理。

我们最经常的操作就是将数据从内存取出到CPU的寄存器,用于计算,计算完又把结果存回内存。

mov ax,[0] ;将内存0地址处的数据传给ax寄存器。

mov [0],ax ;将ax寄存器的数据保存到内存0地址。

如下图,大部分指令都是mov,push,pop等数据传输指令。

汇编指令入门_汇编指令

mov的其他变形有:
xchg,push,pop,in,out等等
xchg是exchange 交换的意思,很简单。
xch ax,bx ;将ax,bx的值交换。
push,pop 是非常非常重要的栈操作指令。他们的本质也是数据传输。高级语言
高级语言的函数参数和局部变量都保存在堆栈中,而堆栈的操作就是push,pop。
in,out是将外部设备的端口寄存器数据传给CPU寄存器。
IN AL,21H;表示从21H端口读取一字节数据到AL
OUT 21H,AL;将AL的值写入21H端口
还有LEA这个指令也比较重要。
LEA(Load effective address)有效地址送寄存器

  1. 加法指令
    mov ax , 200 ; ax=200
    add ax , 100 ; ax = ax+100=300
    加法器是基本电路,其他减法乘法除法都可以转换为加法。
    sub ax, 50 ;ax = ax -50
    inc ax ; ax = ax + 1
    dec ax ; ax = ax - 1
    与或非电路也是加法的一种变种:
    and eax, 0100b
    or eax, 0100b
    not eax
    移位指令也是。
    shl eax, cl;
    shr eax, cl;
  2. 跳转指令
    跳转指令就是跳转某个地方去执行执行,而非顺序执行。
    就如C语言的goto。
    jmp address
    跳转指令的变形很多,有
    call,ret,loop,int, (jz,jnz,jc,jnc,je,jne)
    call 就是调用一个过程(函数);
    ret 就是过程返回;
    loop 是循环;
    int : 是interrupt,中断,就是跳转到中断向量表的那个地址去执行指令,
    其他的条件跳转,
    jz:jump if zero;
    jnz: jump if not zero;
    jc: jump if carry;
    jnc: jump if not carry;
    je: jump if equal
    9.其他指令
    当然其他一些指令也很重要,比如处理器控制指令。
    标志设置指令: CLC,STC。
    NOP 空操作指令。
    HLT:停机指令。 CPU空闲,关闭有一些功能,降低功耗。
    串操作指令:
    串操作指令就是一串数据的操作,可对一组内存数据操作。

汇编指令入门_反汇编_02


总之,汇编指令不过是控制执行算术逻辑运算的电路而已,执行运算前需要把数据从内存mov到寄存器,运算完又得把结果mov存回内存。

某些时候还要根据需要跳转jmp到其他的内存位置取执行指令。

大道至简,他并没有什么高级的东西,不过是0101加法运算而已。

什么分布式计算,云计算不过是把计算分布到多台计算机上而已。

什么元宇宙,也不过是抽象现实世界,数字化到计算机中而已。