and:按位與操作,其用法如下所示:
AND PAR1 PAR2
其作用就是PAR1^=PAR2。
or:按位或操作,其用法如下所示:
OR PAR1 PAR2
其作用是PAR1|=PAR2。
DB:Define Byte,即,定義字節型數據,如下圖所示:
可以把一個ASCII碼像這樣送到8位寄存器中。
MOV AL ‘A’
原來ASCII碼中大小寫英文字母的本質區別在于其二進制表示,如下圖所示:
同一字母的大寫和小寫形式的二進制區別就在于大寫的黃色區域中都是0,小寫的黃色區域中都是1,而且所在位和除此之外的其余位都是相同的。
這是一種新的表示偏移地址的表達式,即,bx中的值加上常量idata。那么原來計算內存單元地址的共識就變為:
PA=DS×16+(BX)+idata
實例如下:
MOV AX,[BX+200]
INC(INCREASE):加1,單操作數指令,用于給操作數加1。用法如下:
INC操作數
[bx+idata]的作用相當于數組下標,通過數組下標操作數組元素。idata相當于數組首元素地址,bx是相對于idata的相對地址,即,偏移量。
更形象一點的話可以看下圖:
SI(Source
index):源變址寄存器,DI(destination?index):目的變址寄存器。從本節內容來看,它們是BX(Base Mix,基址寄存器)的替代品。
它倆都表示偏移地址,換句話說是偏移地址的另一種表示方法。所以尋址公式可以寫成:
PA=(DS)16+(BX)+(SI)
PA=(DS)16+(BX)+(DI)
它們還可以寫成[bx][si]和[bx][di]。
由此可以聯想到把[bx+idata]寫成idata[bx],其中的bx還可以替換成si和di。
仿效7.6和7.8就可以知道它倆表示的是啥意思,當然也是偏移地址了。
下面幾種變形:
在程序的邏輯實現中經常需要很多變量協同工作,當它們不工作的時候需要被暫時存儲起來。它們不能暫時存儲在寄存器中,因為CPU中寄存器數量有限,于是只能存儲在內存中。它們存儲在棧中,并按照棧的方式進進出出。這就是為什么在編程時總是要查看棧空間的原因。