计算机组成原理及汇编语言程序设计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<oprd2;

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

当有符号时:

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

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

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

若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<FFH

所以ZF=0

CF=1

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小星博博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值