1. 程式人生 > >組合語言_第8章 資料處理的2個基本問題

組合語言_第8章 資料處理的2個基本問題

(1) 處理的資料在什麼地方? (2) 要處理的資料有多長? 為了描述上的簡潔,我們定義的描述性符號:reg 和 sreg reg,表示一個暫存器 sreg,表示一個段暫存器 reg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di; sreg的集合包括:ds、ss、cs、es。

8.1 bx、si、di 和bp (1) 在8086CPU中,只有4個暫存器可以用在“[…]”中來進行記憶體單元的定址。 在這裡插入圖片描述 (2) 在[…]中,這4個暫存器可以單個出現,或只能以4種組合出現:bx和si、bx和di、bp和si、bp和di。 在這裡插入圖片描述 (3) 只要在[…]中使用暫存器bp,而指令中沒有顯性的給出段地址,段地址就預設在ss中。 在這裡插入圖片描述

8.2 機器指令處理的資料在什麼地方

  • 絕大部分機器指令都是進行資料處理的指令,處理大致可分為3類:讀取、寫入、運算。

  • 指令在執行前所要處理的資料可以在3個地方:CPU內部、記憶體、埠。 在這裡插入圖片描述

8.3組合語言中資料位置的表達

  • 組合語言中用3個概念來表達資料的位置: (1)立即數(idata) 對於直接包含在機器指令中的資料(執行前在CPU的指令緩衝器中),在組合語言中稱為:立即數(idata),在彙編指令中直接給出。 在這裡插入圖片描述 (2)暫存器 指令要處理的資料在暫存器中,在彙編指令中給出相應的暫存器名。 在這裡插入圖片描述 (3)段地址(SA)和偏移地址(EA) 指令要處理的資料在記憶體中,在彙編指令中可用[X]的格式給出EA,SA在某個段暫存器中。 ①存放段地址的暫存器可以是預設的: 在這裡插入圖片描述
    在這裡插入圖片描述 ②存放段暫存器的地址也可以是顯性給出的: 在這裡插入圖片描述 在這裡插入圖片描述

8.4 定址方式

  • 當資料存放在記憶體中的時候,可以用多種方式來給定這個記憶體單元的偏移地址,這種定位記憶體單元的方法一般被稱為 定址方式。 在這裡插入圖片描述

8.5 指令要處理的資料有多長

  • 8086CPU的指令,可以處理2種尺寸的資料,byte和word。所以機器指令中要指明,指令進行的是字操作還是位元組操作。 組合語言中用以下方法處理: (1)通過暫存器名指明要處理的資料的尺寸。 在這裡插入圖片描述 在這裡插入圖片描述 (2) 在沒有暫存器名存在的情況下,用操作符X ptr 指明記憶體單元的長度,X 在彙編指令中可以為word 或 byte。 在這裡插入圖片描述 在這裡插入圖片描述 (3)其他方法 有些指令默認了訪問的是字單元還是位元組單元。如,push [1000H]就不用指明訪問的是字單元還是位元組單元,因為push指令只進行字操作。

8.6 定址方式的綜合應用 修改記憶體中的內容: 在這裡插入圖片描述 在這裡插入圖片描述

8.7 div 指令

  • div:除法指令,使用div做除法的時候應注意以下問題:

    (1) 除數:有8位和16位2種,在一個reg或記憶體單元中; (2) 被除數:預設放在AX或DX和AX中,如果除數為8位,被除數則為16位,預設在AX中存放;如果除數為16位,被除數則為32位,在DX和AX中存放,DX存放高16位,AX存放低16位。 (3) 結果:如果除數為8位,則AL儲存除法操作的商,AH儲存除法操作的餘數;如果除數為16位,則AX儲存除法操作的商,DX儲存除法操作的餘數;

  • 格式如下: div reg div 記憶體單元 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述

8.8 偽指令dd dd:用來定義dword(double word,雙字)型資料。 db 1 ;01H,佔1個位元組 dw 1 ;0001H 佔1個字 dd 1 ;00000001H 佔2個字

在這裡插入圖片描述

8.9 dup

  • dup是一個操作符,在組合語言中同db、dw、dd等一樣,也是由編譯器識別處理的符號。它是和db、dw、dd等資料定義偽指令配合使用的,用來進行資料的重複。

  • 使用格式如下: 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述在這裡插入圖片描述 在這裡插入圖片描述

To be continue…