Assembly - 什么是汇编语言
汇编语言是什么
每个计算机的微处理器管理计算机的算术,逻辑和控制活动。
每种处理器都有自己的一套处理的各种操作,如获得从键盘输入,在屏幕上显示信息,并执行各种其他工作的指令。这些指令被称为“机器语言指令。
处理器只理解的机器语言指令串1和0。然而,在软件开发中使用的机器语言太含糊和复杂。因此,具有低的电平的汇编语言中符号代码和更容易理解的形式,表示各种指令的一个特定的系列处理器设计的。
汇编语言的优点
汇编语言的理解提供知识:
-
接口程序与操作系统,处理器和BIOS;
-
表示在内存中的数据和其它外部设备;
-
处理器如何访问和执行指令;
-
指示如何访问和处理数据;
-
程序是如何访问外部设备。
用汇编语言的其它的优点是:
-
它需要较少的内存和执行时间;
-
它允许特定硬件的复杂的工作;
-
适合那些时间紧急工作;
-
这是最适合编写中断服务程序和其他内存驻留程序。
PC硬件的基本特点
PC机的内部的主要硬件包括处理器,存储器和寄存器。寄存器处理器组件的形体数据和地址。执行一个程序的系统会将其复制到内部存储器从外部装置。处理器执行的程序指令。
计算机存储的基本单位是位,它可能是:(1)或关闭(0)。一组的九个相关位使得一个字节。用于数据和8位用于奇偶校验的最后一个。根据规则奇偶校验数位是:(1)在每个字节应该永远是奇数。
因此,奇偶校验位是用来使奇数一个字节中的比特数。如果是偶数,奇偶系统假定有奇偶校验错误(虽然罕见)由于硬件故障或电子干扰可能会导致。
该处理器支持以下数据大小:
-
Word: a 2-byte data item
-
Doubleword: a 4-byte (32 bit) data item
-
Quadword: an 8-byte (64 bit) data item
-
Paragraph: a 16-byte (128 bit) area
-
Kilobyte: 1024 bytes
-
Megabyte: 1,048,576 bytes
二进制数字系统
每一个数字系统的使用位置的符号,即一个数字写在每个位置都有不同的位置值。每个位置上的底数,它是2的二进制数字系统,电源,幂从0开始并加1。
下表显示了一个8位的二进制数,其中所有位都设置上的位置的值。
Bit value | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
Position value as a power of base 2 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Bit number | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
一个二进制数的值,是根据1个比特的存在下,它们的位置值。因此,给定的二进制数的值是:1 +2 + 4 +816+32+64+128 =255,这是相同的为 28 - 1.
十六进制数字系统
十六进制数字系统使用基本16。数字的范围从0到15。按照惯例,字母A至F用来表示十六进制数字对应的十进制值10到15。
十六进制数字计算的主要用途是缩写冗长的二进制表示。基本上是一个十六进制数系统除以一半中的每个字节,每个半字节表达的值代表的二进制数据。下表提供了十进制,二进制和十六进制等效:
Decimal number | Binary representation | Hexadecimal representation |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 10 | 2 |
3 | 11 | 3 |
4 | 100 | 4 |
5 | 101 | 5 |
6 | 110 | 6 |
7 | 111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | A |
11 | 1011 | B |
12 | 1100 | C |
13 | 1101 | D |
14 | 1110 | E |
15 | 1111 | F |
其相当于十六进制转换成二进制数,为4个连续组,每个组分解,从右边开始,十六进制数对应的数字写的那些组。
例子: 二进制数10001100 11010001等于十六进制 - 8CD1
一个十六进制数转换为二进制写入到4位二进制相当于每个十六进制数字。
例子: 十六进制数FAD8相当于二进制 - 1111 1010 1101 1000
二进制算术
下表说明了二进制加法的四个简单的规则:
(i) | (ii) | (iii) | (iv) |
---|---|---|---|
1 | |||
0 | 1 | 1 | 1 |
+0 | +0 | +1 | +1 |
=0 | =1 | =10 | =11 |
规则(ⅲ)和(ⅳ)示出一个1位的进位到下一个左边的位置。
Example:
Decimal | Binary |
---|---|
60 | 00111100 |
+42 | 00101010 |
102 | 01100110 |
负二进制值表示2的补码表示。根据这条规则,转换成二进制数,其负面价值是扭转其位值加1。
例子:
Number 53 | 00110101 |
Reverse the bits | 11001010 |
Add 1 | 1 |
Number -53 | 11001011 |
从另一个减去一个值,数量减去2的补码格式转换,并添加数字。
例如:53减42
Number 53 | 00110101 |
Number 42 | 00101010 |
Reverse the bits of 42 | 11010101 |
Add 1 | 1 |
Number -42 | 11010110 |
53 - 42 = 11 | 00001011 |
最后1位溢出丢失。
寻址内存中的数据
处理器控制指令的执行的过程中,通过被称为读取解码执行周期或执行周期。它由三个连续的步骤:
-
从存储器中取指令
-
解码或识别的指令
-
执行指令
在同一时间,该处理器可以访问一个或多个字节的内存。让我们考虑一个十六进制数0725H。此号码将需要两个字节的存储器。高位字节或最重要的字节是07和低位字节是25。
该处理器将数据存储在反向字节序列,即,低位字节存储在低位内存地址和高位字节中高内存地址。因此,如果处理器带来的值0725H从注册到内存,它会转移到下一个内存地址25第一较低的内存地址和07。
x: 内存地址
当处理器从存储器到寄存器的数值数据,它再次逆转字节。有两种类型的内存地址:
-
绝对地址的具体位置 - 直接引用。
-
段地址(或偏移) - 内存段的起始地址的偏移值