300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 计算机组成原理移位图 逻辑运算和移位指令-计算机组成原理与汇编语言-电子发烧友网站...

计算机组成原理移位图 逻辑运算和移位指令-计算机组成原理与汇编语言-电子发烧友网站...

时间:2018-08-16 09:27:25

相关推荐

计算机组成原理移位图 逻辑运算和移位指令-计算机组成原理与汇编语言-电子发烧友网站...

3.4.1 逻辑运算和移位指令 1.逻辑运算指令

(1)NOT OPRD

该指令对操作数进行求反操作,然后将结果送回。操作数可以是寄存器或贮器的内容。该指令对标志位不产生影响。

例如: NOT AL

(2)AND指令

该指令对两个操作数进行按位相“与”的逻辑运算。即只有参加相与的两位全为“1”时,相“与”结果才为“1”;否则相“与”结果为“0”。相“与”结果送回。

AND指令可以进行字节操作,也可以进行字操作。

AND指令的一般格式为

AND OPRD1,OPRD2

其中,目的操作数OPRD1可以是累加器,也可以是任一通用寄存器,可以是内存操作数。源操作数OPRD2可以是立即数、寄存器,也可以是内存操作数,

例如:

AND AL,0FH

ANDAX,BX

ANDSI,BP

ANDAX,DATA --WORD

ANDDX,BUFFER[SI+BX]

ANDDATA --WORD,00FFH

ANDBLOCK[BP+DI],DX

(3) TEST指令

该指令的操作功能与AND指令相同,其结果将反映在标志位上,但结果不送回,即TEST指令将不改变操作数的值。这条指令通常是在不希望改变操作数的前提下,

用来检测某一位或某几位的状态。

TEST 指令的一般格式为

TEST OPRD,im ;im是立即数

立即数中哪一位为1,表示要对哪一位进行测试。

例如,若要检测AL中的最低位是否为1,且为1则转移。在这种情况下

可以用如下指令:

TEST AL, 01H

JNZ THERE

 … THERE:MOV BL,05H

(4) OR指令

OR指令允许对字节或对字进行相“或”运算。OR指令使标志位CF=0,OF=0;相“或”操作的结果反映在标志位PF、SF和ZF上;对AF标志位未定义。

OR指令的一般格式为

OR OPRD1,OPRD2

其中,目的操作数OPRD1可以是累加器,可以是任一通用寄存器,也可以是一个内存操作数。源操作数OPRD2可以是立即数,也可以是寄存器,也可以是内存操作数,

例如:

OR AL,30H

OR AX,00FFH

OR BX,SI

OR BX,DATA --WORD

OR BUFFER,SI

OR BUFFER[BX+SI],8000H

操作数自身相“或”将不改变操作数的值,但可使进位标志位CF清0。

(5) XOR指令

该指令对两个操作数进行按位“异或”操作,即进行“异或”操作的两位值不同时,其结果为“1”;否则就为0,操作结果送回。

XOR 指令的一般形式为

XOR OPRD 1 ,OPRD2

其中,目的操作数OPRD1可以是累加器、任一个通用寄存器,也可以是一个内存操作数。源操作数可以是立即数、寄存器,也可以是内存操作数.

例如:

XOR AL,0FH

XOR AX,BX

XOR DX,SI

XOR CX,CONNT --WORD

XOR BUFFER,DI

XOR BUFFER[BX+SI],AX

当操作数自身进行“异或”时,由于每一位都相同,因此“异或”结果一定为0,且使进位标志位也为0。这是对操作数清0的常用方法。

例如:

XOR AX ,AX

XOR SI,SI

2.移位指令

8088有3条移位指令。算术左移和逻辑左移指令:SAL/SHL OPRD,m ;m是移位次数,可以是1或寄存器CL中的内容算术右移指令:

SAR OPRD, m

逻辑右移指令:SHR OPRD, m

(1) SAL/SHL指令

这两条指令的操作结果是完全一样的。每移位一次在右面最低位补一个0,而左面的最高位则移入标志位CF,如图3.16所示。

(2) SAR指令

该指令每执行一次移位操作,就使操作数右移一位,但符号位保持不变,而最低位移至标志位CF,如图3.17所示。

SAR可移位由m所指定的次数,结果影响标志位CF、OF、PF、SF和ZF。

(3) SHR指令

该指令每执行一次移位操作,就使操作数右移一位,最低位移 至标志位CF中。与SAR不同的是,左面的最高位将补0,如图3.18所示。 该指令可以执行由m所指定的移

位次数。

3. 循环移位指令

8088有4条循环移位指令:

左循环移位指令 ROLOPRD,m

右循环移位指令 ROROPRD,m

带进位左循环移位指令 RCLOPRD,m

带进位右循环移位指令 RCROPRD,m

(1) ROL指令

该指令每做一次移位,总是将最高位移入进位位CF中,并且还将最高位移入操作数的最低位,从而构成一个环,如图3.19(a)所示。

(2) ROR指令

该指令每做一次移位,总是将最低位移入进位标志位CF中,另外,还将最低位移入操作数的最高位,从而构成一个环,如图3.19(b)所示。

(3) RCL指令

该指令是把标志位CF包含在内的循环左移指令。每移位一次,操作数的最高位移入进位标志位CF中,而原来CF的内容则移入操作数的最低位,从而构成一个大环,

如图3.19(c)所示。

(4)RCR指令

该指令是把进位标志位CF包含在内的右循环指令。每移位一次,标志位CF中的原内容就移入操作数的最高位,而操作数的最低位则移入标志位CF中,如图3.19(c)所示。

左移一位,只要左移以后的数未超出一个字节或一个字所能表达的范围,则相当于原来的数乘以2;而右移一位相当于除以2,

例如:

MOV AL,08H

SALAL,1 ;左移一位,相当于乘以2;该指令执行后,AL中的内容为16

MOVAL,16

SARAL,1 ;右移一位,相当于除以2 ;该指令执行后,AL中的内容为8

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。