5.2-尋址方式


尋址方式的概念

  • 指令或操作數在存儲器中的地址:某個操作數或某條指令存放在某個存儲單元時,其存儲單元的編號
  • 在存儲器中,操作數或指令字寫入或讀出的方式,有:地址指定方式、相聯存儲方式和堆棧存取方式
  • 采用 地址指定方式 形成操作數或指令地址的方式,稱為尋址方式
  • 尋址方式分為 2 類,即:指令尋址方式數據尋址方式

指令尋址方式

指令的尋址方式有 2 種:① 順序尋址方式;② 跳躍尋址方式

順序尋址

  • 程序的指令序列在主存順序存放,當執行一段程序時,通常是一條指令接一條指令的順序執行
    • 即從存儲器取出第一條指令,然后執行這條指令
    • 接着從存儲器取出第二條指令,在執行第二條指令
    • 接着再取出第三條指令
    • ……
  • CPU中設置 [程序計數器PC (又稱指令指針寄存器)] 對指令的順序號進行計數。PC開始時存放程序的首地址,每執行一條指令,PC 加 "1",指出下條指令的地址,直到程序結束
  • 演示

跳躍尋址

  • 當程序要轉移執行的順序時,指令的尋址就采取跳躍尋址方式
  • 跳躍,又稱跳轉,是指下條指令的地址碼不是由程序計數器給出,而是由本條指令給出
  • 注意!程序跳躍后,按新的指令地址開始順序執行;指令計數器的內容也必須相應改變,以便及時跟蹤新的指令地址
  • 演示

數據尋址方式

隱含尋址

  • 有些指令的操作碼中不僅包含了操作的性質,還隱含了部分操作數的地址
  • 舉例:MUL BL
    • 乘法指令MUL,在這條指令中只需指明乘數的地址,被乘數以及乘積的地址是隱含且固定的
    • 把AL中的內容與BL中的內容相乘,乘積送到AX寄存器,即 AL x BL → AX

立即尋址

直接尋址

  • 操作數位於存儲器中,操作數所在的存儲器單元的地址存放在指令的地址字段A中,即:
    • DATA = (EA):指令字中的 形式地址A 就是操作數的 有效地址E
    • EA = A:該類指令中的 形式地址A 又稱為 "直接地址"
  • 操作數的字長取決於指令中的另一個寄存器操作數,e.g. AX → 讀2個單元,AL/AH → 讀1個單元

寄存器直接尋址


存儲器直接尋址方式

  • 一般簡稱直接尋址方式,其指令地址碼字段直接給出存放在存儲器中操作數的存儲地址
  • 舉例
  • 特點
    • 提供訪問主存的操作
    • 獲得數據要訪問主存,指令執行速度慢
    • 地址字段的位數決定了訪存空間大小

間接尋址

  • 倘若指令字中的形式地址不直接指出操作數的地址,而是指出操作數有效地址所在的存儲單元地址,也就是說,有效地址是由形式地址間接提供的,即為間接尋址,即 DATA = (EA),EA = (A),A為操作數地址的地址
  • 直接尋址 & 間接尋址

寄存器間接尋址

  • 寄存器間接尋址時,地址碼字段給出的是寄存器編號R。需先訪問寄存器,從寄存器讀出操作數地址后,再訪問存儲器才能取得操作數
  • EA = (R),即Data = (EA) = ((R))
  • 特點
    • 解決了直接尋址方式下地址字段的位數限制訪存范圍大小的問題
    • 獲得數據只需訪問主存1次
  • 寄存器尋址 & 寄存器間接尋址

存儲器間接尋址

  • 存儲器間接尋址時,地址碼字段給出的是操作數主存地址的地址。需訪問兩次存儲器才能取得數據,第 1 次先從存儲器讀出操作數地址,第 2 次才能根據讀出的操作數地址再取出真正的操作數
  • EA = (A),即 Data = (EA) = ((A))
  • 特點
    • 解決了直接尋址方式下地址字段的位數限制訪存范圍大小的問題
    • 獲得數據要訪問主存 2 次,指令執行速度太慢

相對尋址

  • 所謂相對尋址方式,是指根據一個 {基准地址} 及其 {相對量} 來尋找操作數地址的方式
  • 根據基准地址的來源不同,它又分為 [基址方式] 、[變址方式] 以及 [PC相對尋址方式]

PC相對尋址

  • PC相對尋址方式,一般簡稱相對尋址方式,是指將 程序計數器PC 的內容(即當前執行指令的地址)與地址碼部分給出的位移量Disp通過加法器相加,所得之和作為操作數的有效地址的方式
  • EA = (PC) + Disp
  • 舉例
  • 特點
    • 可節省指令中的地址位數,便於程序在內存中成塊移動
    • 注意PC的改變對計算E的影響,+指令字長

基址尋址

  • 計算機設置一個寄存器,專門用來存放基准地址,該寄存器就是 基址寄存器(RB)。RB既可在CPU中專設,也可由指令指定某個通用寄存器擔任
  • 基址尋址方式是將CPU中基址寄存器RB的內容加上指令格式中的形式地址A而形成操作數的有效地址
  • EA = (RB) + Disp // 地址碼A 在這種方式下通常被稱為位移量(Disp)
  • 特點
    • 使用基址寄存器(位數比通用寄存器多) 可以訪問更大的主存空間
    • 對某一程序而言,基址值設定后不變,故要訪問不同數據需修改 Disp,而 Disp 又是指令的形式地址部分的值,所以必須要改變指令

變址尋址

  • 變址尋址方式與基址尋址方式計算有效地址的方法很相似,它把CPU中某個 變址寄存器(RI) 的內容與 Disp 相加來形成操作數有效地址

  • 使用變址尋址方式的目的不在於擴大尋址空間,而在於實現程序塊的規律性變化

  • EA = (RI) + Disp

  • 特點

    • 不改變指令即可改變數據的有效地址,可在循環中使用
    • 在字符串處理,向量運算等等成批數據處理中非常有用
  • 變址尋址 & 基址尋址區別

    • 采用 [基址尋址] 時,基址寄存器提供地址基准量,指令提供偏移量
    • 采用 [變址尋址] 時,變址寄存器提供修改量,指令提供基准量

堆棧尋址

堆棧尋址主要用來暫存中斷和子程序調用時現場數據及返回地址

  • 存儲器堆棧
  • 堆棧的結構

數據尋址方式總結

例題





免責聲明!

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



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