2.3 匯編語言指令


2.3 匯編語言指令

  • 指令(instruction)是一種語句,它在程序匯編編譯時變得可執行。
  • 匯編器將指令翻譯為機器語言字節,並且在運行時由 CPU 加載和執行。

指令組成

一條指令有四個組成部分:

  • 標號(可選)
  • 指令助記符(必需)
  • 操作數(通常是必需的)
  • 注釋(可選)

標號(label)

  • 標號(label)是一種標識符,是指令和數據的位置標記。
  • 標號位於指令、變量的前端,表示指令的地址,表示變量的地址

標號的兩種類型

  • 數據標號
  • 代碼標號

數據標號

  • 數據標號標識變量的位置,它提供了一種方便的手段在代碼中引用該變量。
count DWORD 100			;定義了一個名為 count 的變量

代碼標號

  • 標記轉移的目的地。
  • 下面的 JMP 指令創建一個循環:將程序控制傳遞給標號 target 標識的位置:
target:    mov ax,bx
	......
jmp target

指令助記符

  • 是標記一條指令的短單詞(有助於記憶的符號)
助記符 說明 助記符 說明
MOV 傳送(分配)數值 MUL 相乘
ADD 相加 JMP 跳轉到一個新位置
SUB 相減 CALL 調用一個子程序

操作數

  • 操作數是指令輸入輸出的數值
  • 操作數的個數范圍是 0〜3 個,每個操作數可以是寄存器、內存操作數、整數表達式和輸入輸岀端口。
  • 生成內存操作數有不同的方法
    • 比如,使用變量名、帶方括號的寄存器等。變量名暗示了變量地址,並指示計算機使用給定地址的內存內容。下表列出了一些操作數示例:

操作數有固有順序。

當指令有多個操作數時,通常第一個操作數被稱為目的操作數,第二個操作數被稱為源操作數(source operand)。

示例 操作數類型 示例 操作數類型
96 整數常量 eax 寄存器
2+4 整數表達式 count 內存

現在來考慮一些包含不同個數操作數的匯編語言指令示例。

比如,STC 指令沒有操作數:

stc                    ; STC 進位標志位置 1

INC 指令有一個操作數:

inc eax                ;EAX 加 1

MOV 指令有兩個操作數:

mov count, ebx         ;將 EBX 傳送給變量 count

一般情況下,目的操作數的內容由指令修改。比如,在 mov 指令中,數據就是從源操作數復制到目的操作數。

IMUL 指令有三個操作數,第一個是目的操作數,第二個和第三個是進行乘法的源操作數:

imul eax,ebx,5		;在上例中,EBX 與 5 相乘,結果存放在 EAX 寄存器中。

注釋

注釋有兩種指定方法:

  • 單行注釋,用分號 ;
  • 塊注釋,用 COMMENT 偽指令和一個用戶定義的符號開始,直到相同的用戶定義符號出現為止。

塊注釋

示例如下:

COMMENT !
This line is a comment.
This line is also a comment.
!

其他符號也可以使用,只要該符號不出現在注釋行中:

COMMENT & 
This line is a comment.
This line is also a comment.
&


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM