检测点11.2答案和个人分析
答案:参考了shuiyu的答案:
al CF OF SF ZF PF
sub al,al 0 00011
mov al,10h .. 00011
add al,90h 0A0h 00101
mov al,80h .. 00101
add al,80h (1)00h11011
mov al,0FCh .. 11011
add al,05h(1)01h10000
mov al,7D .. 10000
add al,0Bh 88h 01101
个人分析:
al, 进位,溢出,符号,零,奇偶
sub al,al 0 00011
mov al,10h 10h00011不影响
add al,90hA0h00101
A0h=240d=10100000,
补码是负数,两个1
mov al,80h 80h00101不影响
add al,80h (1)00h11011
mov al,0FCh.. 11011 不影响
add al,05h (1)01h10000
负数+正数不可能溢出
mov al,7Dh .. 10000 不影响
add al,0Bh 88h 01101
125d+11d=136d=10001000b
正+正=负 溢出了,两个1
★溢出:对于N bit的数据 eg:8bit(以有符号数看待,即以补码看待)
设H=2^(N-1)eg:H为=128=80h
当运算结果超出-H~H-1 eg:-128~127
(即运算结果∈(-∞,-H)U[H,+∞))
则为溢出
★判断运算结果是否溢出有一个简单的规则:
1两个正数相加(或正数减负数)得到负数或0,就是溢出
2两个负数相加(或负数减正数)得到正数或0,就是溢出
3 一个正数和一个负数相加不可能溢出
ps:对于8位数据,
00h~7Fh是正数(00h是0)
80h~FFh是负数
◆复习标志位
https://m.baidu.com/sf_edu_wenku/view/02cf5d7402768e9951e738cc
CF CarryFlag 进位标志位
指令执行后是(CF为1)否(为0)进位或借位
(当程序员把该数据视做无符号数看待时,则需要关心CF标志位,因为进借位后会出错)
PF 奇偶标志位
指令执行后结果以二进制表示,其中1的个数是(PF为1)否(为0)为偶数
ZF 零标志位
指令执行后是(ZF为1)否(为0)为0
SF 符号标志位
指令执行后是(SF为1)否(为0)为负
(结果以有符号方式(补码)看待)
OF 溢出标志位
指令执行后是(OF为1)否(为0)溢出
(当程序员把该数据视做有符号数看待时,则需要关心OF标志位,因为溢出后会出错)
{:5_101:} 过来参考大佬了
页:
[1]