文档详情

逻辑指令讲解.ppt

发布:2016-03-18约4.69千字共30页下载文档
文本预览下载声明
* MatrixOne, Inc Confidential 逻辑指令 逻辑运算指令 移位指令 逻辑运算指令 求反指令NOT 与指令AND 测试指令TEST 或指令OR 异或指令XOR 语句格式:NOT OPD 功能:将目的地址中的内容逐位取反后送入目的地址。 即(OPD)→(OPD) 操作数可以是通用寄存器或存储器,此指令对状态标志位无影响。 【例】逻辑非运算。 MOV AX,878AH NOT AX, 求反指令NOT (AX)=878AH 1000 0111 1000 1010 (AX)=7875H 0111 1000 0111 0101 TITLE NOTOP DATA SEGMENT BLOCK DW 350AH,675BH,0A418H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA NOTOP PROC NEAR 例将内存BLOCK中的三个字操作数求补。(无) MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,BLOCK MOV CX,3 STC L1: MOV AX,[SI] NOT AX ADC AX,0 MOV [SI],AX INC SI INC SI LOOP L1 MOV AX,4C00H INT 21H 语句格式:AND OPD, OPS 功能:将目的操作数和源操作数进行逻辑乘运算,结果存目的地址。 即(OPD)∧(OPS)→(OPD)。 说明:逻辑乘的运算法则为: 1∧1=1,1∧0=0,0∧1=0,0∧0=0 用法:常用于位屏蔽和位检验操作。 位屏蔽:是将目的操作数中指定的位设置为0。 与指令AND AND 可用于将二进制数的某些位清0(位屏蔽) AND BL, 0FH xxxxxxxx (BL) 0F 0000xxxx 结果 AND 【例】将AL中第3位和第7位清零。 MOV AL,0FFH AND AL,77H ;0FFH=1111 1111 ; 77H=0111 0111 (AL)=0111 0111 只需把源操作数设置为立即数,将需要屏蔽的位设为0 AND AL,0FH?; AND AL,80H????????????? AND AX,BX???????????? AND AX,GAMMA[BX]? AND BETA[BX][SI]? 逻辑“与”指令AND ;AL高4位为0,低4位保持不变。 ;检验AL的符号位 ;寄存器与寄存器相“与” ?;寄存器与存储器“与” ;存储器与 立即 数相“与” 语句格式:TEST OPD,OPS 功能:源地址和目的地址的内容执行按位的逻辑与运算,结果不送入目的地址。 即(OPD)∧(OPS)。 测试指令TEST 要测试某位是否为0,可将源操作数设置为立即数,要测试的位设为1。 ZF=1 说明要测试的位为0 测试指令TEST 【例】测试AX中的第12位是否为0,不为0则转L。 TEST AX,1000H JNE L TEST AX,8000H??? TEST BX,1??????? ;检验AX是正数还是负数 ;检验BX是偶数还是奇数 要测试某位是否为1,可先将操作数求反,再用test指令测试。 例:测试AL的第二位是否为1,为1到exit去执行 测试指令TEST MOV DL,AL NOT DL, TEST DL,0000 0100B JE EXIT 语句格式:OR OPD,OPS 功能:将目的操作数和源操作数进行逻辑加运算,结果存目的地址。 即(OPD)∨(OPS)→OPD。 说明:逻辑加的运算法则为: 1∨1=1,1∨0=1,0∨1=1,0∨0=0。 用法:常用于判断一个数是否为零,或用于将BCD码转换成ASCII,以及判断一个 数的正负。 或指令OR OR 还可用于将二进制数的某些位置1 OR BL, 0FH xxxxxxxx (BL) 0F xxxx1111 结果 OR 只需把源操作数设置为立即数,将需要置1的位设为1 【例】将AL寄存器中第3位和第7位置1。 MOV AL,0 OR AL,88H 又如: OR AL,3
显示全部
相似文档