编程论坛's Archiver

shanfengpk 发表于 2008-4-21 20:37

关于CF进位标志位的问题

小弟还是个新手,在学习的时关于INC AL和DEC AL 两个指令的时候,书上说它们可以影响OF,SF,ZF,AF,PF标志位,但是不影响CF进位标志位!!我想如果AL中的内容是11111111,那么执行对CF没有影响吗??
请高手帮忙解释一下!!最好举例说明一下!!
先谢谢了!!

woami66 发表于 2008-4-21 21:44

如果AL中的内容是11111111,那么执行完inc al后,al=00000000,CF=0
可以执行一下下边的代码:
         mov  cl,97
        mov al,0ffh
        inc al
        jc next
        add cl,al
        mov dl,cl
        mov ah,2
        int 21h
        jmp exit
next:       
        inc al
        add cl,al
        mov dl,cl
        mov ah,2
        int 21h
exit:

shanfengpk 发表于 2008-4-22 12:46

是的啊,AL中的内容变为了00000000,但是还是有向高位的一个进位啊,既然有进位那CF为什么不是为1,而是为0呢??这个问题还是不懂啊!!
还是谢谢了啊!!

rediums 发表于 2008-4-22 23:02

个人意见,仅供参考:
CPU的设计者为了提高指令的效率,所以只是把操作数增1,而不做其他的操作,如果设置了进位标志,那么和add al,1指令就没有什么区别了,INC 也就没有存在的意义了

wangjianguo 发表于 2008-4-26 21:57

我也觉得那只是单纯的逻辑加一指令.就是在0到255中的任意一个数之上加1.没有进位.只涉及八位二进制数.当为11111111时,只是产生益处

henankaifei717 发表于 2008-4-27 18:40

INC和DEC的引入主要是用于对计数器和地址指针的调整,所以它们不影响进位CF标志。至于你说的那种情况Intel公司想让咱们用ADD

folksy_smile 发表于 2008-5-1 01:11

inc的操作数是无符号数,增加时不存在进位的问题

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.