匯編中偏移地址的理解
偏移地址也稱為偏移量,由于8086/8088CPU內部的ALU只能進行16位(16進制的話4X4,用4位表示,0x0000-0xFFFF)的運算,而8086/8088有20(16進制的話4X5,用5位表示,0x00000-0xFFFFF)條地址線。為了方便只能進行16運算的8086/8088CPU,于是我們便將5位變成兩個4位,也即把物理地址分成段地址和偏移地址,如下圖所示:
那么通過段地址和偏移地址怎么得到物理地址呢?
物理地址=段地址*16(10進制)+偏移地址。(2進制的話,也就是段地址《《4|偏移地址)。
有效地址的理解
有效地址EA是一16位無符號數,表示操作數所在單元到段首的距離即邏輯地址的偏移地址。當操作數是存放在存儲器中時,存儲器的存儲單元的物理地址有兩部分組成。一部分是偏移地址;一部分是段地址。在8086/8088的各種尋址方式中,尋找存儲單元所需的偏移地址可由各種成分組成,稱為有效地址,用EA表示。可以通過存儲器尋址方式獲得有效地址。
有效地址可以由幾部分組成:基址寄存器內容、變址寄存器內容、比例因子和位移量。
如何由有效地址求得物理地址
物理地址指CPU尋址主存時使用的20位地址,它確定了某一實際位置的內存單元。(2分)內存單元物理地址可由段址和段內的偏移量確定。內存單元在段內的偏移量稱為有效地址(EA)。
物理地址=段址×16+段內的偏移量。
有效操作地址尋址方式
根據指令內容確定操作數地址的過程稱為尋址。完善的尋址方式可為用戶組織和使用數據提供方便。
①直接尋址:指令地址域中表示的是操作數地址。
②間接尋址:指令地址域中表示的是操作數地址的地址即指令地址碼對應的存儲單元所給出的是地址A,操作數據存放在地址A指示的主存單元內。有的計算機的指令可以多次間接尋址,如A指示的主存單元內存放的是另一地址B,而操作數據存放在B指示的主存單元內,稱為多重間接尋址。
③立即尋址:指令地址域中表示的是操作數本身。
④變址尋址:指令地址域中表示的是變址寄存器號i和位移值D。將指定的變址寄存器內容E與位移值D相加,其和E+D為操作數地址。許多計算機具有雙變址功能,即將兩個變址寄存器內容與位移值相加,得操作數地址。變址尋址有利于數組操作和程序共用。同時,位移值長度可短于地址長度,因而指令長度可以縮短。
⑤相對尋址:指令地址域中表示的是位移值D。程序計數器內容(即本條指令的地址)K與位移值D相加,得操作數地址K+D。當程序在主存儲器浮動時,相對尋址能保持原有程序功能。此外,還有自增尋址、自減尋址、組合尋址等尋址方式。尋址方式可由操作碼確定,也可在地址域中設標志,指明尋址方式。
匯編語言中有效地址和偏移地址的區別
在8086的機子上,有效地址=段地址左移4位+偏移地址,偏移地址與有效地址是一樣的。但是就ibm的硬件來說,他們的尋址方式也分為2種,一是實地址尋址方式,另一種是保護虛地址尋址方式。此兩種尋址方式非常不同,在8086的機子上,有效地址=段地址左移4位+偏移地址,因為它只有實地址尋址方式,而在286之后,就存在虛地址尋址方式,這就涉及到有關段以及描述符,描述符表,和其他的問題,請您自己參見有關接口的書。
-
偏移地址
+關注
關注
0文章
3瀏覽量
7476
發布評論請先 登錄
相關推薦
評論