久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基址變址尋址方式訪問二維數組

作者:佚名   來源:本站原創   點擊數:  更新時間:2010年09月15日   【字體:

位移量:數組首地址

 

基址寄存器:數組元素行址  BP、BX

 

變址寄存器:數組元素列址  SI、DI

 

設ARRAY是10行、10列二維數組,按行存放在主存的堆棧段中,每個元素占一個字節單元。

 

MOV  AL,ARRAY[BP] [SI]

 

ARRAY(i,j)等價于:(BP)=i×10  (SI)=j

 

所以:EA=ARRAY的偏移量+(BP)+(SI),段基址隱含由SS提供

 

 

下面介紹一下基址變址尋址方式:

 

變址尋址:EA是SI、DI和位移量提供  基址尋址:EA是BX、BP和位移量提供

 

MOV  CH,10H[SI]  ==  MOV  DS:CH,10H[SI]

MOV  TAB[DI],AX  ==  MOV  DS:TAB[DI],AX

 

  

MOV  AL,ARY[BX]  ==  MOV  DS:AL,ARY[BX]

MOV  STR[BP],DX  ==  MOV  SS:STR[BP],DX

 

 

    例如:用變址尋址方式訪問一維數組,一維數組ARY存放在主存的數據段中,每個元素占兩個字節單元。從數組首地址起依次存放:ARY(0)、ARY(1)、……、ARY(i)、……

 

可以通過下列指令來訪問數組中的任意元素:

 

MOV  AX, ARY[SI]

 

訪問ARY(i),則(SI)=i×2

 

所訪問元素的邏輯地址:EA=ARY的偏移量(數組首址)+(SI)

 

段基址隱含由DS提供

 

 

 

    從上邊的兩個小例子,基址變址尋址方式訪問二維數組&&變址尋址方式訪問一維數組,總結一下8086/8088的尋址方式。

 

概括的說尋址方式就是尋找操作數的地址的方式,一共有8種方式:

 

  寄存器尋址方式

  立即數尋址方式

  存儲器尋址方式

 

                     串操作尋址方式

                     I/O端口尋址方式

 

其中存儲器尋址方式包含4種:

 

                    直接尋址方式

                    寄存器間尋址方式

                    變址基址尋址方式

                    基址變址尋址方式

 

    這是視頻教程中的分類方法,不同的教程分類方式不一樣,重點是理解尋址過程。下面舉一些例子來說明各種尋址的具體方式。上面得8種方式前3大類(6小類)是重點,而后邊的串操作尋址方式、I/O端口尋址方式這里先不做討論。

 

 

寄存器尋址方式:

    指令所需的操作數在寄存器中,按指令給出的寄存器地址去獲得操作數。

 

指令代碼  操作碼  REG(操作數)

 

    當然此處的操作數可能不是一個,但要求是REG,也就是操作數存儲在寄存器中,根據操作碼定義的操作在REG中取操作數。

 

MOV  AX,BX

MOV  BL,AL

MOV  BP,DX

MOV  DS,AX

 

    很顯然操作碼后邊的操作數都是REG,有通用寄存器,也有段寄存器,至于專用寄存器教程中沒有涉及到,不知道能不能用。CPU內的寄存器有三類14種,分類如下:

 

通用寄存器
專用寄存器
段寄存器
數據寄存器
指針寄存器
變址寄存器
指令指針 
 
IP
狀態指針  
 
FLAG
代碼段  
 
 
CS
數據段  
 
 
DS
堆棧段  
 
 
SS
附加段  
 
 
ES
AX
BX
CX
DX
堆棧指針SP
基址指針BP
源變址
SI
目的變址
DI
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
立即數尋址方式:

 
    指令所需的操作數直接在指令代碼中,隨著取指令(代碼段中)一起取到BIU的指令隊列中,常用來提供常數,且立即數只能做源操作數。

 

                   MOV  CX,1000H

                   MOV  AL,0AH

                   MOV  AH,'A'

                   MOV  DX,"AB"

 

 

    以下4種尋址方式為存儲器尋址方式,操作數在內存儲器中,在匯編語言程序中,根據存儲器按段劃分(不連續)的思想,存儲單元地址使用邏輯地址:

 

                     段基址:偏移量

 

    存儲器尋址方式重點是形成操作數邏輯地址的偏移量。這個偏移量是相對而言的,分偏移量組合形成最終偏移量也就是有效地址EA,雖然有效地址也不是物理地址,而是相對于段基址的邏輯地址。物理地址的算法:

 

                  物理地址=段基址×16+偏移量

 

 

有效地址EA是三個地址分量的某種組合:

 

 

(1)位移量:指令代碼中的一個8/16位二進制數

 

(2)基地址:BX或BP得內容

 

(3)變址量:SI或DI的內容

 

    正是上邊三種分量的組合形成了下面四種尋址方式(內存儲器尋址方式):

 

直接尋址方式:

 

    指令所需要的操作數在存儲器中,操作數的有效地址EA直接由指令代碼中的位移量提供。匯編指令中,直接尋址方式可用數值地址或符號(事先有宏定義)地址來表示。

 

             指令代碼   操作碼 | …… | 位移量(8/16位)

 

 

MOV  BX,[1000H]

 

MOV  BX,VAR

 

 

    很顯然呀,后邊的操作數不加前綴有默認的段基址,加前綴的就用那個段基址,因此操作數地址是完全確定的,這就是直接尋址方式。

 

寄存器間尋址方式:

 

    指令所需要的操作數存在存儲器中,操作數的有效地址EA直接從寄存器SI/DI/BX/BP中獲得。當然有效地址需要配合段基址形成實際地址。

 

              指令代碼  操作碼|MOD REG  R/M

 

注意兩點:

 

①以SI、DI、BX間接尋址時,隱含使用DS;

 

②以BP間接尋址時,隱含使用SS;

 

 

MOV  CH,[SI]

MOV  [DI],AX

MOV  AL,[BX]

MOV  [BP],DX

 

 

                         MOV  CH,DS:[SI]

                         MOV  DS:[DI],AX

                         MOV  AL,DS:[BX]

                         MOV  SS:[BP],DX

 

 

 

變址尋址或基址尋址方式:

 

    指令所需要的操作數在存儲器中,操作數的有效地址EA是兩個地址分量之和。從下面的代碼格式可以看出它和上邊尋址方式的主要區別就是分量的增加。

 

          指令代碼  操作碼 | MOD REG  R/M | 位移量

 

基址尋址:操作數的EA是SI或DI內容與位移量之和。

 

變址尋址:操作數的EA是BX或BP內容與位移量之和。

關閉窗口

相關文章

主站蜘蛛池模板: 91在线精品一区二区 | 男女性毛片| 99pao成人国产永久免费视频 | 久热精品在线观看视频 | 欧美三级在线 | 欧美 日韩 综合 | 国产一级特黄真人毛片 | 午夜看电影在线观看 | 国产精品精品久久久 | 一区在线观看 | 懂色中文一区二区在线播放 | 国产精品99久久久久久动医院 | 国产精品久久 | 国产精品一区在线观看 | 一区二区在线不卡 | 久国久产久精永久网页 | 涩涩视频在线看 | 亚洲一区电影 | 久久欧美高清二区三区 | 999精品视频 | 欧美亚洲视频在线观看 | 国产精品日韩欧美一区二区 | 亚洲视频区 | 99综合在线 | 皇色视频在线 | www.蜜桃av | 亚洲国产中文字幕 | 日韩精品一区二区三区在线观看 | 五月槐花香 | 一区二区伦理电影 | 久久久91精品国产一区二区三区 | 久久精品一区二区 | 日韩精品一区二区三区中文字幕 | 国产精品v| 97精品超碰一区二区三区 | 一区在线观看 | 男女免费视频网站 | 色橹橹欧美在线观看视频高清 | 日韩午夜精品 | 日韩欧美中文字幕在线视频 | 国产96色在线|