汇编指令入门

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空闲,关闭有一些功能,降低功耗。
    串操作指令:
    串操作指令就是一串数据的操作,可对一组内存数据操作。

在这里插入图片描述
总之,汇编指令不过是控制执行算术逻辑运算的电路而已,执行运算前需要把数据从内存mov到寄存器,运算完又得把结果mov存回内存。
某些时候还要根据需要跳转jmp到其他的内存位置取执行指令。
大道至简,他并没有什么高级的东西,不过是0101加法运算而已。
什么分布式计算,云计算不过是把计算分布到多台计算机上而已。
什么元宇宙,也不过是抽象现实世界,数字化到计算机中而已。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值