x86汇编语言(1) 汇编语言的前世今生

x86汇编语言(1) 汇编语言的前世今生

用电来表示数字

导线中的开关有开和关两种状态,计算机使用0和1来表示数字,导线闭合表示1,导线断开表示0

image-20210318232644407

所以我们可以用一排导线来表示一个二进制数

image-20210318232613389

装上灯泡后,也可以看灯泡的亮暗表示二进制数

image-20210318232802527

二进制加法机

加法器的结构:两个输入端只要一修改,输出端的结构立马发生改变

image-20210318234012261

具有记忆功能的器件——寄存器

具有存储功能的触发器的结构说明:左边是输入,下边是锁存开关,当按下锁存开关,右边就会把左边的数据给保存起来,锁存断开后,再修改左边的输入,右边存储的数据也不会发生改变。

image-20210318234603878

一个触发器只能保存一个bit,我们用多个触发器来表示一个完整的二进制数,将它们组合在一起,就形成了寄存器(锁存器)。

image-20210318235150909

带寄存器的加法机

加法机结构:左边为输入端,下面有预置和相加两个按键开关,按下预置将输入端的数据保存到寄存器R上,右边的灯泡直接与寄存器R连接,根据灯泡的亮暗可以得出寄存器R的内容,按下相加键会把寄存器R的内容与左边的输入相加,然后保存到寄存器R中。

image-20210319083832532

能做四则运算的机器

结构说明:多了其它运算的控制按钮,都是一样先往寄存器R预置一个数,输入端再指定一个数,按下运算开关,最后将运算结果保存到寄存器R中。

image-20210319084436175

机器指令

当只有一个运算器时,复杂一点的运算就运算不了了,如下图:

image-20210319084947138

当运算完207+9后,寄存器R的内容保存了中间结果216,但216在寄存器R中又不能覆盖掉,所以我们需要多加几个寄存器,下面是两个寄存器的示意图:

image-20210319085356752

多了一个寄存器Z后,就可以进行更为复杂的运算了。比如(207 + 9)/(56 - 48),可以先分别输入207和9,分别保存到寄存器R和Z中,再将寄存器R与Z的内容相加,相加结果再放入寄存器R中;输入56,再往寄存器Z存入56,再往输入端输入48,将输入端的内容与寄存器Z的内容相加,存进寄存器Z中;最后取出寄存器R、Z的内容,用寄存器R的数据去除以寄存器Z的数据,将结果保存在寄存器R中,这样整个运算就完成了。

**以上涉及的操作有:将外数存往寄存器R或Z,取出寄存器的内容进行各种运算,将寄存器的内容与外数相加,将计算结果保存到寄存器中等等。这些操作每一种都需要一个开关来控制,当有很多中操作时,这时就需要很多个开关。**于是,我们可以用一排导线了来控制,这排导线的一个二进制数就可以来表示一个操作,同时还有一个控制开关,按下开关表示导线上的二进制数对应的操作执行。如下图所示:

image-20210319092328775

这样5个开关可以组合出2的5次方个二进制数,即可以表示32种操作,我们将这一排开关组合出的二进制数称为指令。

内存

上面的指令很多,我们可以将代表指令的二进制数保存在内存中,运算时可以从内存中取出指令再进行执行

image-20210319093151175

其中每一个小方块表示一个内存单元,主流计算机里每个内存单元可以保存8个bit的二进制数,每个内存单元通过从下往上的编号进行识别,这些编号称为内存单元的地址,我们可以通过地址线来访问某个地址的内存单元,

image-20210319093339738

地址线的数量决定可以访问的内存单元的地址范围,如8根地址线可以访问256个内存单元,内存单元的地址用十六进制来表示,即可以访问的内存单元的地址范围为00-FF。

image-20210319093748222

计算机中的字节

image-20210319094014772

主流计算机中每个内存单元有8位,即1个字节

image-20210319094122116

内存的容量可以用内存单元的数量来表示:

image-20210319094148518

内存中的指令需要存入或者取出,这就需要一个输入/输出端(数据线)、访问的内存单元位置(地址线)、读/写控制,完整的结果如下图所示:

image-20210319094539095

自动计算

改进后的运算器通过地址线、数据线和控制线与内存相连,运算器中有寄存器R和Z,用于保存运算数,指令指针寄存器用来保存指令的地址,初始化的地址为第一条要执行的指令的地址。运算器开始工作时,先将指令指针寄存器的指令送到地址线上,内存将该地址的内存单元的指令内容通过数据线送到运算器上,运算器再根据指令内容去执行相应的操作。执行完成后,指令指针寄存器的内容执行下一条指令的地址(根据指令的长度可以计算出),继续执行下去。

image-20210319095107038

示例:其中有些指令是有操作数和操作符组成,操作数也叫立即数。

image-20210319150422581

处理器

改进后的处理器

image-20210319150644752

8008(8位)和8086(16位)

image-20210319150814599

处理器的位数是指指令执行部件的位数,如32位的处理器,可以提供的寻址范围为0-2的32次方,内存理论上最大为4GB。

image-20210319150910012

指令的分类

image-20210319151630056

汇编语言的诞生

机器指令

image-20210319151911155

汇编语言是使用文本符号来代替指令

image-20210319151959634

汇编程序执行翻译过程

image-20210319152220782

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值