第7章 更靈活的定位內存地址的方法

7.1

and和or指令

and:按位與操作,其用法如下所示:

AND PAR1 PAR2

其作用就是PAR1^=PAR2。

or:按位或操作,其用法如下所示:

OR PAR1 PAR2

其作用是PAR1|=PAR2。

7.3以字符形式給出數據

DB:Define Byte,即,定義字節型數據,如下圖所示:

可以把一個ASCII碼像這樣送到8位寄存器中。

MOV AL ‘A’

7.4大小寫轉換的問題

原來ASCII碼中大小寫英文字母的本質區別在于其二進制表示,如下圖所示:

同一字母的大寫和小寫形式的二進制區別就在于大寫的黃色區域中都是0,小寫的黃色區域中都是1,而且所在位和除此之外的其余位都是相同的。

7.5

[bx+idata]

這是一種新的表示偏移地址的表達式,即,bx中的值加上常量idata。那么原來計算內存單元地址的共識就變為:

PA=DS×16+(BX)+idata

實例如下:

MOV AX,[BX+200]

7.6用[bx+idata]的方式進行數組的處理

INC(INCREASE):加1,單操作數指令,用于給操作數加1。用法如下:

INC操作數

[bx+idata]的作用相當于數組下標,通過數組下標操作數組元素。idata相當于數組首元素地址,bx是相對于idata的相對地址,即,偏移量。

更形象一點的話可以看下圖:

7.7

SI和DI

SI(Source

index):源變址寄存器,DI(destination?index):目的變址寄存器。從本節內容來看,它們是BX(Base Mix,基址寄存器)的替代品。

7.8

[bx+si]和[bx+di]

它倆都表示偏移地址,換句話說是偏移地址的另一種表示方法。所以尋址公式可以寫成:

PA=(DS)16+(BX)+(SI)

PA=(DS)16+(BX)+(DI)

它們還可以寫成[bx][si]和[bx][di]。

由此可以聯想到把[bx+idata]寫成idata[bx],其中的bx還可以替換成si和di。

7.9

[bx+si+idata]和[bx+di+idata]

仿效7.6和7.8就可以知道它倆表示的是啥意思,當然也是偏移地址了。

下面幾種變形:

在程序的邏輯實現中經常需要很多變量協同工作,當它們不工作的時候需要被暫時存儲起來。它們不能暫時存儲在寄存器中,因為CPU中寄存器數量有限,于是只能存儲在內存中。它們存儲在棧中,并按照棧的方式進進出出。這就是為什么在編程時總是要查看棧空間的原因。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容