“与”运算
debug吧
全部回复
仅看楼主
level 6
Y=0×0=0
Y=1×0=0  →Y=0
Y=0×1=0            
Y=1×1=1→Y=1
2009年02月16日 18点02分 1
level 6
设Y=A×B×C×D×…

 Y=0×0×…×0=0 
 Y=1×0×…×0=0   →Y=0
 Y=0×1×…×0=0
Y=1×1×1…×1=1→Y=1
2009年02月16日 18点02分 2
level 6
在多输入“与”门电路中,
只要其中一个输入为0,
则输出必为0,
或者说,
只有全部输入均为1时,
输出才为1。
与运算有时也称为“逻辑与”。
当A和B为多位二进制数时,如:
A=A1A2A3…An
B=B1B2B3…Bn
则进行“逻辑与”运算时,
各对应位分别进行“与”运算:
 Y=A×B
 =(A1×B1)(A2×B2)(A3×B3)…(An×Bn)
【例1.6】
设A=11001010
 B=00001111
则Y=A×B
=(1×0)(1×0)(0×0)(0×0)(1×1)(0×1)(1×1)(0×1)
=00001010
写成竖式则为
    1 1 0 0 1 0 1 0
  ×) 0 0 0 0 1 1 1 1
    0 0 0 0 1 0 1 0
由此可见,
用“0”和一个数位相“与”,
就是将其“抹掉”而成为“0”;
用“1”和一个数位相“与”,
就是将此数位“保存”下来。
这种方法在计算机的程序设计中经常会用到,
称为“屏蔽”。
上面的B数(0000 1111)称为“屏蔽字”,
它将A数的高4位屏蔽起来,
使其都变成0了。
2009年02月16日 18点02分 3
level 6
说得好!与运算用得最多的地方就是屏蔽位了,
比如说,AX = 3d4EH
要把AX的值在屏幕上显示出来,就要用到与运算。
下面是个例子。
  
showHex:  AX=3d4E
mov cx, 0404h
r1: rol ax, cl  循环左移4位 AX=d4E3
push ax  保护
and ax, 0fh 屏蔽左边12位 AX=0003
add ax, 0e30h AX=0e33
cmp al, '9'  比9大吗?
JBE r2  小于等于9直接显示
add dl, 07h 比9大,    再加上7显示
r2: int 10h  调用10号中断, 显示  '3'
pop  ax  恢复
dec ch  循环4次
Jnz r1
RET
;过程如下:  
; AX=3d4E 
; AX=d4E3 AX=0003  AL=3  显示 '3'
; AX=4E3d AX=000D AL=D 显示 'D'
; AX=E3d4 AX=0004  AL=4  显示 '4'
; AX=3d4E AX=000E AL=E  显示 'E'
 
2009年02月17日 05点02分 4
level 6
上面是倒着输出的,要顺着输出要push 到堆栈现pop出来显示。
2009年02月17日 05点02分 5
1