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。

Data

x: 內存地址

當處理器從存儲器到寄存器的數值數據,它再次逆轉字節。有兩種類型的內存地址:

  • 絕對地址的具體位置 - 直接引用。

  • 段地址(或偏移) - 內存段的起始地址的偏移值