首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

王爽汇编 标示寄存器 监测点11.2 求解

2013-01-04 
王爽汇编 标志寄存器 监测点11.2 求解?本帖最后由 wjp9981 于 2012-11-07 17:09:54 编辑检测点11.2写出下

王爽汇编 标志寄存器 监测点11.2 求解?
本帖最后由 wjp9981 于 2012-11-07 17:09:54 编辑 检测点11.2

写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值。 

              al                 CF    OF    SF    ZF    PF

sub al,al     0h/0000 0000b      0     0     0     1     1

mov al,10h    10h/0010 0000b     0     0     0     1     1

add al,90h    a0h/1010 0000b     0     0     1     0     1

mov al,80h    80h/1000 0000b     0     0     1     0     1

add al,80h    0h/0000 0000b      1     1     0     1     1

mov al,0fch   0fch/1111 1100b    1     1     0     1     1

add al,05h    1h/0000 0001b      1     0     0     0     0

mov al,7dh    7dh/1111 1101b     1     0     0     0     0

add al,0bh    88h/1000 1000b     0     1     1     0     1


如何判断 一个运算 是 有符号运算还是无符号运算?

mov al, 80h
add al ,80h 结果 应该是  100h   cf=1 of=1

mov al, ofch
add al,05h   结果 应该是 101h  cf=1 of =0    为什么两次运算 cf of  值不同?

mov al,7dh
add al,0bh   如何判断是有符号还是无符号运算 ,

[解决办法]

引用:
本帖最后由 wjp9981 于 2012-11-07 17:09:54 编辑检测点11.2

写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值。 

              al                 CF    OF    SF    ZF    PF

sub al,al     0h/0000 0000b      0     0     0    ……

呵呵,刚好我也看到这章
如何判断 一个运算 是 有符号运算还是无符号运算?

mov al, 80h


add al ,80h 结果 应该是  100h   cf=1 of=1    
al是8位寄存器,只能存放八位二进制数据,100h显然存不下,
如果做为无符号数来运算,相当于128+128=256则进位,cf=1    如果做为有符号数来运算,80h是-128的补码,-128-128 = -256显然溢出,OF=1mov al, ofch
add al,05h   结果 应该是 101h  cf=1 of =0    为什么两次运算 cf of  值不同?
同理,做为无符号数来运算,有进位,CF=1  但是如果做为有符号数来运算,0fch是-4的补码,-4+5=1 没有溢出,OF=0mov al,7dh
add al,0bh   如何判断是有符号还是无符号运算 ,
这个问题我的理解是,机器本身是不知道你要用到的是无符号数还是有符号数,所有才有OF和CF,
对于无符号和有有符号数的使用,应该取决于你在编译器中的定义,然后编译器再根据你的定义和机器中对于CF和OF的判断来给出最终的结果(高级语言)   
而汇编语言,本身是不区分有符号数和无符号数的,对于任意一个数它代表符号数还是无符号数不取决于数本身 而是与它参与的运算有关
我也是刚学,我是这么理解的,也不知道对不对.

热点排行