1. 程式人生 > >組合語言的定址方式(針對16位定址)

組合語言的定址方式(針對16位定址)

定址方式

  • 立即定址 mov ax,3064H(運算元放在指令的下一個單元中)
  • 暫存器定址 mov ax,bx,(運算元放在暫存器中)
  • 前兩種地址都是基於本程式碼段的
  • 直接定址 mov ax,[2000H],(運算元放在記憶體中,指令中直接給出記憶體地址)(其實是偏移地址,實體地址還應該加上段地址)
  • 暫存器間接定址 mov bx,[di] (運算元的地址放在暫存器中)
    若有效地址用SI、DI和BX等之一來指定,則其預設的段暫存器為DS;
    若有效地址用BP來指定,則其預設的段暫存器為SS(即:堆疊段)。
    該定址方式實體地址的計算方法如下:
    BX
    實體地址PA=16×DS + SI
    DI

    實體地址PA=16×SS+ BP
  • 暫存器相對定址 mov ax,[si+100h]
    運算元在儲存器中,其有效地址是一個基址暫存器(BX、BP)或變址暫存器(SI、DI)的內容和指令中的8位/16位偏移量之和。
    (傳送的是地址,最後分配的還是內容)

  • 基址變址定址方式 MOV AX,[BX][SI] 取基址和變址的內容之和的地址的內容傳送給它(不要忘記段地址)

  • 相對基址變址定址方式 MOV AX, [BX+SI+200H]
  • 相對比例的沒有16位定址,所以不贅述