6800 的定址方式
我們已經瞭解了摩托羅拉 M6800 微處理器的內部結構和暫存器。在本節中,我們將瞭解 M6800 的定址方式。
M6800 MPU 有六種定址方式。這些模式是:
- 立即定址方式
- 隱含定址方式
- 直接定址方式
- 擴充套件定址方式
- 索引定址方式
- 相對定址方式
現在讓我們瞭解一些 M6800 組合語言程式設計的基本語法。
如果一個數字在十六進位制中是 8CH,那麼我們必須在它前面使用 $ 符號。所以它將是 $8C。沒有 $ 的數字被視為十進位制數字。類似地,立即資料由 # 符號表示。#50FF 是一個數據,但沒有 #,它是一個記憶體位置。
在 8085 或 Z-80 中,對於一條指令,指令中的兩個運算元類似於 (目標,源)。但在這種情況下,它是反向的,所以首先將給出源地址。(源,目標)。
對於 16 位資料或地址,在 8085 或 Z-80 中,第一個位元組是最不重要的位元組。但對於 M6800,第一個位元組是最重要的位元組。例如,如果指令是 STA A $AFC4,則十六進位制程式碼將是 B7 AF C4。
現在讓我們瞭解摩托羅拉 M6800 的定址方式。
立即定址
在這種立即定址模式下,資料直接提供在指令本身中。資料直接提供在操作碼之後。
LDA B, #$26 在此指令中,十六進位制資料 26 載入到累加器 B 中。因此,這裡的資料直接提供在操作碼之後。
隱含定址
這種隱含定址模式也稱為固有定址模式。在這種模式下,運算元不在記憶體中。例如,我們可以說 CLC。此指令用於清除進位標誌,並將其設定為 0。因此,它不使用任何運算元。類似地,ASL B 指令執行 B 的算術左移。因此,這裡運算元也不在記憶體中。
直接定址
在直接定址模式下,運算元位於記憶體中。在這種情況下,地址空間為 00H 到 FFH,因此也稱為頁面 0 定址模式。指令 SUB B, $FE 用於從 B 中減去位置 FEH 的內容並將其儲存到 B 中。直接定址模式佔用兩個位元組的記憶體空間。因此,它執行速度更快。
在 M6800 中,經常訪問的資料儲存在記憶體範圍 0000H 到 00FFH 中。因此,為了快速訪問這些位置的資料,RAM 通常從 0000H 開始。並且使用 ROM 或 EPROM 提供記憶體的最後部分,該部分以 FFFFH 結尾。
擴充套件定址
在 8085 中,存在絕對定址模式,它類似於 M6800 的擴充套件定址模式。因此,我們必須在操作碼之後提供 16 位地址以從記憶體中的任何位置獲取資料。
指令 NEG $FE00 將對位置 FE00H 的內容取反。
索引定址
在這種索引定址模式下,運算元儲存在記憶體中。一部分記憶體由索引暫存器 (IX) 提供。指令中提供了另一部分 8 位資料。將該資料與索引暫存器內容相加後,指令可以獲得訪問記憶體位置的有效地址。
因此,如果索引暫存器內容為 A5CEH,則指令 ADC B $10, X 將在進位的情況下將暫存器 B 的內容和 A5DEH 相加。
相對定址
相對定址用於分支指令。這些指令長度為兩個位元組。它採用帶符號的 8 位數字。因此,在執行正確的指令後,它使用此帶符號的資料向後或向前跳轉。
例如,有一個指令 BEQ $F0。因此,這意味著當零標誌啟用時,它將從下一條指令位置向後跳轉 10H 個位置(因為 -10H 的 2 的補碼是 F0H)。