AND :逻辑与指令
格式:AND 目的操作数,源操作数
功能:按位进行与运算,结果放到目的操作数
例如:mov al,01100011b
and al, 00111011b
执行后  al=00100011b

OR :逻辑或运算
格式:OR 目的操作数,源操作数
功能:按位进行或运算,结果放到目的操作数
例如:mov  al,01100011b
or     al,00111011b
执行后       al=01111011b







NOT:逻辑非
格式:not  操作数
功能:按位进行非运算
例如:mov al,01100011b
not  al
执行后,    al=10011100b

XOR:逻辑异或(相同为0,不同为1)
格式:xor 目的操作数,源操作数
功能:按位进行异或运算
例如:mov al,01100011b
xor  al,00111011b
执行后,    al=01011000b

大小写转换问题

一个字母不管它原来是大写字母还是小写字母,将它二进制形式(ASCII码)的第五位置为0,它就必将变为大写字母;将它的第五位置为1,它就必将变为小写字母.




[bx+si]和[bx+di]

[bx+si]表示一个内存单元,偏移地址为(bx)+(si)
mov ax, [bx+si]
指令含义:
数学描述: (ax)= ((ds)*16+ (bx) + (si))
其他形式:mov ax,[bx][si]

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

[bx+si+idata]表示一个内存单元,偏移地址为(bx)+(si)+idata
mov ax, [bx+si+idata]
指令含义:
数学描述: (ax)= ((ds)*16+ (bx) + (si) +idata)
其他形式:mov ax,[bx+200+si]
mov ax,[200+bx+si]
mov ax,200[bx][si]
mov ax,[bx].200[si]
mov ax,[bx][si].200



不同的寻址方式的灵活应用

[idata]用一个常量来表示地址,可用于直接定位一个内存单元
[bx]用一个变量来表示的内存地址,可用于间接定位一个内存单元
[bx+idata]用一个变量和常量表示地址,可在一个起始地址的基础上用变量间接定位一个内存单元
[bx+si]用两个变量表示地址
[bx+si+idata]用两个变量和一个常量表示地址

一般来说,在需要暂存数据的时候,我们都应该使用栈.
打赏