什么是汇编语言?

    每台个人计算机都有一个微处理器,用于管理计算机的算术,逻辑和控制活动。

    每个处理器系列都有其自己的指令集,用于处理各种操作,例如从键盘获取输入,在屏幕上显示信息以及执行各种其他作业。 这些指令集称为“机器语言指令”。

    处理器仅理解机器语言指令,这些机器指令是1和0的字符串。 但是,机器语言过于模糊和复杂,无法在软件开发中使用。 因此,低级汇编语言是为特定的处理器家族设计的,该处理器以符号代码和更易理解的形式表示各种指令。

汇编语言的优点

   理解汇编语言可以让我们认识到:

  •  系统(OS), 处理器(CPU)以及基本输入输出系统(BIOS)是如何交互;
  • 数据是如何在内存以及其他外设中表示;
  • 处理器是如何获取并执行指令;
  • 指令是如何获取并处理数据;
  • 程序时如何获取外设

使用汇编语言的好处:

  •  它需要的内存和执行时间更少;
  • 它可以更轻松地实现特定于硬件的复杂作业;
  • 使用时间紧张的工作
  • 它最适合编写中断服务程序和其他内存驻留程序。

基本的计算机硬件特征

    PC的主要内部硬件包括处理器内存寄存器。 寄存器是保存数据和地址的处理器组件。 要执行程序,系统会将其从外部设备复制到内部存储器中。 处理器执行程序指令。

    计算机存储的基本单位是一点。 它可以是ON(1)或OFF(0)。 一组九个相关位组成一个字节,其中八个位用于数据,最后一个位用于奇偶校验。 根据奇偶校验规则,每个字节中ON(1)的位数应始终为奇数。

    因此,奇偶校验位用于使字节中的位数为奇数。 如果奇偶校验为偶数,则系统会认为存在奇偶校验错误(尽管很少),这可能是由于硬件故障或电气干扰引起的。

    通常来说,处理器支持下列大小的数据

  • Word: 2个字节的数据项(16位)
  • Doubleword: 4个字节的数据项(32位)
  • Quadword: 8个字节的数据项(64位)
  • Paragraph: 16个字节的数据项(128位)
  • Kilobyte: 1024个字节
  • Megabyte: 1048576个字节

 

二进制数制

    每个数字系统都使用位置标记,即每个写入数字的位置都有不同的位置值。 每个位置都是基数的幂,对于二进制系统,该幂是2,并且这些幂从0开始并增加1。

    下表显示了8位二进制数的位置值,其中所有位都设置为ON。

汇编语言(1)--初识汇编

                                                                                              二进制表

 

    二进制数的值基于1位的存在及其位置值。 因此,给定二进制数(11111111)的值是:

    1 + 2 + 4 + 8 +16 + 32 + 64 + 128 = 255,也就是2的8次幂减一。

    没错,从今天开始,你就可以装X地跟老师说一加一不等于二了!

 

十六进制数制

    十六进制系统使用16为基数。此系统中的数字范围为0到15。按照惯例,字母A到F用于表示对应于十进制值10到15的十六进制数字。

    计算中的十六进制数字用于缩写冗长的二进制表示形式。 基本上,十六进制系统通过将每个字节分成两半并表示每个半字节的值来表示二进制数据。 下表提供了十进制,二进制和十六进制等效项(十进制,二进制,十六进制)

汇编语言(1)--初识汇编

     要将二进制数转换为等效的十六进制数,只需要从右开始将其分成4个连续组的组,然后将这些组写在十六进制数的相应数字上。

    例如,二进制数1000 1100 1101 0001 等效于十六进制 8CD1。

    相反,要将十六进制数转换为二进制,只需将每个十六进制数写入其4位数的二进制等效值即可。

    例如,十六进制数 FAD8 等效于二进制 1111 1010 1101 1000。

 

二进制计算

    下表解释了基本的加法规则

汇编语言(1)--初识汇编

                                                                                         二进制加法运算

其中,规则(III)和规则(IV)的结果中带有一个进位。

    数的表示

       正数没啥说的,看图。(正数的原码,反码,补码都是一样的

      示例1(正数)

汇编语言(1)--初识汇编

 

 

    负二进制值用二进制补码表示。 根据此规则,将二进制数转换为其负值是将其位值取反并加1。(重点重点,用小本本记下来)

    规则:反码等于原码取反,补码等于反码加一。

   示例2(负数)

汇编语言(1)--初识汇编

 

 

    要从另一个值中减去一个值,就要将要减去的数字转换为二进制补码格式然后将这些数字相加。嗯嗯,是不是感觉初中学的正负数知识又浮上脑海了呢:减去一个数等于加上这个数的相反数。

    示例3(减法,53-42)

汇编语言(1)--初识汇编

    看图解释

    53-42 = 53+(-42),只需要把两个数用二进制表示出来再相加就可以

    53 = (00110101)

   -42 = (11010110)

    53+(-42)=(00110101)+(11010110)=(1 0000 1011)

    ??,怎么不一样呢?去掉溢出位就可以了,最后1位(从右往左)的溢出丢失。

 

寻址内存中的数据

    处理器控制指令执行的过程称为获取-解码-执行周期或执行周期。 它包括三个连续的步骤:

  1.  从内存中取指令;
  2.  解码或识别指令;
  3.  执行指令

    处理器可以一次访问一个或多个字节的内存。 让我们考虑一个十六进制数字0725H。 此数字将需要两个字节的内存。 高位字节或最高有效字节为07,低位字节为25。

    处理器以反字节顺序存储数据,即,低位字节存储在低位存储地址中,高位字节存储在高位存储地址中。 因此,如果处理器将寄存器中的值0725H传送到存储器,它将首先将25传送到低位存储器地址,将07传送到下一个存储器地址。

汇编语言(1)--初识汇编

   当处理器从内存中获取数字数据以进行寄存器注册时,它将再次反转字节。 内存地址有两种:

(1)绝对地址-具体位置的直接参考。

(2)段地址(或偏移量)-具有偏移量值的内存段的起始地址。

 

 

今天课程以介绍汇编以及后面常用数制为主,因为后面我们会大量用到二进制和十六进制,如果没有明白这些话,后面基本上是白瞎。加法我一点都不担心大家不会,主要是减法,这个需要特别注意。其中涉及的原码, 反码,补码,一定要搞懂,当然,也不要勉强,容易疯!

按照惯例,甩出一张二维码,喜欢的话关注一下公众号,大家可以偶尔听听我的胡言乱语,同时也推给大家一些免费的学习资料和软件。

                                                     汇编语言(1)--初识汇编

相关文章:

  • 2021-04-15
  • 2022-01-19
  • 2021-04-16
  • 2022-02-21
  • 2021-12-04
  • 2021-12-04
  • 2021-09-25
猜你喜欢
  • 2022-01-29
  • 2021-10-06
  • 2021-11-29
  • 2022-12-23
  • 2022-12-23
  • 2021-08-25
相关资源
相似解决方案