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中寄存器数量有限,于是只能存储在内存中。它们存储在栈中,并按照栈的方式进进出出。这就是为什么在编程时总是要查看栈空间的原因。