學習筆記分享之彙編—2.彙編指令/語法

學習內容:彙編指令/語法:

  1. 拷貝源操作數到目標操作數:

    mov 目標操作數,源操作數

    • 源操作數可以是任意單元(r/m/sr/imm) (sr:Segment Register)

    • 目標操作數可以是除了立即數之外的任意單元(r/m/sr)

    • 操作數的寬度必須前後一致

    • 源操作數和目標操作數不能同時為記憶體單元

  2. 加/減/與/或/異或:

    🞕 add/sub/and/or/xor 目標操作數,源操作數

    • 源操作數可以是r/m/imm

    • 目標操作數可以是r/m

    • 操作數的寬度除了源操作數是立即數的情況之外(即:立即數可以是任意位)必須前後一致

    🞕 非:

    • not r/m8   not r/m16   not r/m32
  3. 從指定記憶體中寫入/讀取數據:

    mov dword ptr ds:[m],imm   //寫

    mov r,dword ptr ds:[r]      //讀

    ptr: Point 代表後面是一個指針 (指針即裡面存的不是普通的值,而是個地址)
    
    在8086中設置4個16位的段暫存器,用於管理4種段:
    ①數據段---ds(Data Segment):數據段暫存器
    ②程式碼段---cs(Code Segment):程式碼段暫存器
    ③堆棧段---ss(Stack Segment):堆棧段暫存器
    ④附加段---es(Extra Segment):附加段暫存器
    
    BYTE 位元組 = 8(BIT)
    
    WORD 字  =  16(BIT)
    
    DWORD 雙字 =  32(BIT)
    
    1KB = 1024 BYTE
    
  4. 定址公式

    (LEA與MOV的區別在於MOV是取地址中的值,而LEA是取地址)

    ①[imm]形式

    讀取記憶體的值 向記憶體中寫數據 讀取記憶體編號
    mov r,dword ptr ds:[m] mov dword ptr ds:[m],r/imm lea r,dword ptr ds:[m]

    ②[r]形式

    讀取記憶體的值 向記憶體中寫數據 讀取記憶體編號
    mov r’,imm
    mov r”,dword ptr ds:[r’]
    mov r,imm
    mov dword ptr ds:[r],imm
    lea r’,dword ptr ds:[r”]
    mov r’,dword ptr ds:[r”]

    ③[r+imm]形式

    讀取記憶體的值 向記憶體中寫數據 讀取記憶體編號
    mov r’,imm 
    mov r”,dword ptr ds:[r’+imm]