文章
382
粉丝
1101
获赞
1685
访问
137w
(1) R2 = 0000 FF38H,R4 = FFFF FF38H,R5 = 0000 0064H,R6 = 0000 01F4H。
us2 为unsigned short 类型,其值为65336 = 216 − 200 = FF38H,将其分配到32 位寄存器需要进行零扩展,所以R2 = 0000 FF38H;
m1 为unsigned short 类型,us1 + us2 = 65636,超出unsigned short 的最大表示范围65535,
因此会溢出到无符号数65636%216 = 100 = 0064H,分配到32 位寄存器需要进行零扩展,所以R5 = 0000 0064H;
us2 = 65336 = FF38H,将其转换为short 类型,机器数不变,改变解释方式,可知s2 为负数,
将其分配到32 位寄存器需要进行符号扩展,所以R4 = FFFF FF38H。
m2 为unsigned short 类型,us1−us2 = −65036,因此会溢出到无符号数−65036%216 = 500 =01F4H,分配到32 位寄存器需要进行零扩展,所以R6 = 0000 01F4H。
(2) n1 = 100,n2 = 500。us1 = 300,按有符号数解释s1 = 300。s2 的机器数为FF38H,按有符号
数解释可知s2 = −200。s1+s2 = 100,s1 − s2 = 500,结果均在short 型变量表示范围内,未
发生溢出。所以n1 = 100,n2 = 500。
(3) m1 = us1 − us2,由于us1 < us2,因此会产生借位,所以CF = 1;结果不为0,所以ZF = 0。
(4) 计算机内部判断CF 的逻辑表达式为CF = Cin⊕ Cout,其中Cin 为低位进位输入,当执行减法时Cin = 1,执行加法时Cin = 0,Cout 为最高位进位输出;
当执行有符号加/减运算时也会按上述规则产生CF 标志位,这是因为加法器对于无/有符号
加减法是统一的,在电路层面数据只是一个二进制串,所以会同等产生各标志位。但需要注
...
登录后发布评论
暂无评论,来抢沙发