计算机组成原理及汇编语言程序设计179页4-23题 假设(BX)=12FFH,有以下程序段:

题目:

4-23 假设有(BX)=12FFH,以下程序段:

MOV    CL,8
ROL    BX,CL
AND    BX,0FFH
CMP    BX,0FFH

上述程序执行后,(BX) =_______,ZF=________,CF=____________。

关键点:

ROL:循环左移,将最高位放入CF

CMP:比较两个数,为第一个操作减去第二个操作数,但不影响第两个操作数的值,它影响flag的CF,ZF,OF,AF,PF。

ZF=1,则说明两个数相等。

当无符号时:

CF=1,则说明了有进位或借位,cmp是进行的减操作,故可以看出为借位,所以,此时oprd1

CF=0,则说明了无借位,但此时要注意ZF是否为0,若为0,则说明结果不为0,故此时oprd1>oprd2。

当有符号时:

若SF=0,OF=0 则说明了此时的值为正数,没有溢出,可以直观的看出,oprd1>oprd2;

若SF=1,OF=0 则说明了此时的值为负数,没有溢出,则为oprd1

若SF=0,OF=1 则说明了此时的值为正数,有溢出,可以看出oprd1

若SF=1,OF=1则说明了此时的值为负数,有溢出,可以看出oprd1>oprd2;

MOV    CL,8

执行后CL=8

ROL    BX,CL

把BX左移动CL位后放入到BX

BX是段寄存器

(BX)=12FFH

二进制为:0001 0010 1111 1111

CL=8

指令之后为:1111 1111 0001 0010

十六进制:BX=FF12

CF=1

AND    BX,0FFH

 0FFH的二进制:0000 0000 1111 1111

BX=FF12

BX的二进制:1111 1111 0001 0010

0000 0000 1111 1111

AND

1111 1111 0001 0010

=

0000 0000 0001 0010

BX=0000 0000 0001 0010

BX十六进制:0012H

CF=0

CMP    BX,0FFH

 BX=0012H

CMP比较2个数:0012H

所以ZF=0

CF=1

最后,结果为:(BX)=0012H,ZF=0,CF=1

你可能感兴趣的:(笔记,汇编,汇编)