and al,00111001B 通过该指令可以将操作对象的相应位设为0,其他不变

or al,00111011B 通过该指令可以将操作对象的相应位设为1,其他不变

按a键,这个按键的信息被送往计算机,计算机用ASCII码的规则对其进行编码,将其转化为61H存储在内存的制定空间中,文本编辑软件从内存中取出61H,将其送到显卡的显存上。

data segment
	db 'unIX'
	db 'foRk'
data ends
assume cs:codesg,ds:datasg

datasg segment
	db 'BaSiC'
	db 'iNfOrMaTiOn'
datasg ends

codesg segment
	start: mov ax,datasg
				 mov ds,ax
				 mov bx,0
				 mov cx,5

			s: mov al,[bx]
				 and al,11011111B             ;观察大小写ASCII对应二进制得出,大写字母第五位必为0,小写字母第五位必为1。
				 mov [bx],ax
				 inc bx
				 loop s

				 mov bx,5
				 mov cx,11
			s0:mov al,[bx]
				 or al,00100000B              ;将第五位转为1,则大写转为小写
				 mov [bx],ax
				 inc bx
				 loop s0

				 mov ax,4c00h
				 int 21h
codesg ends
end start
s: mov al,[bx]
	 and al,11011111B
	 mov [bx],al
	 mov al,[bx+5]
	 or al,00100000B
	 mov [bx+5],al
   inc bx
   loop s

比如,c语言
char a[5]="BaSiC"
char b[5]="MinIX"

main()
{
	int i;
	int i=0;
	do
	{
		a[i]=a[i]&0xDF;
		b[i]=b[i]|0x20;
		i++;
	}
	while(i<5);
}

功能和bx相似,但是不能拆成两个8位寄存器来用

codesg segment
start: mov ax,codesg
		   mov ds,ax
			 mov si,0
			 mov di,16
			 mov cx,8
			
		s: mov ax,[si]
			 mov [di],ax
			 add si,2
			 add di,2
			 loop s

		s0:mov ax,0[si]       ;简化版本
			 mov 16[si],ax
			 add si,2
			 loop s0

			 mov 4c00h
			 int 21h
codesg ends
end start

mov ax,[bx+si] 等同于 (ax)=((ds)*16+(bx)+(si))

mov ax,[bx+si+idata]

mov ax,200[bx+si]