- 10
- 0
- 约3.87千字
- 约 10页
- 2018-02-07 发布于河南
- 举报
科院微机课后习题解答
第二章
2.5 1M=220 因为最小的一个段的大小为16个字节(一个小段),所以
最多有220/24=216
(1) 0FFFFH:0 物理地址为 0FFFF0H
(2) 40H:17H 物理地址为 400H+17H=417H
(3) 2000H:4500H物理地址为200000H+4500H=24500H
(4) 0B821H:4567H 物理地址为 0B8210H+4567H=0BC777H
2.8
65h 0B7h 4Ch 2Ah 78h 56h 34h 12h
(1) CX 16位 DL 8位 操作数宽度不一样(类型不一致)
IP不能作为源操作数,也不能作为目的操作数
立即数不能直接赋给段寄存器
(4) 段寄存器间不能直接赋值
(5) 类型不一致,立即数300超过8位,不能赋给8位寄存器AL
(6) 寄存器间接寻址方式不能使用sp寄存器
(7)+作为算术运算符,它的操作数为常量
(8)20h为立即数不能作为目的操作数
2.11
code segment
assume cs:code
start: mov al,89h mov指令不影响标志位
add al,al
分析,这里89h看成无符号数化为10进制为137, 执行add al,al后,al的内容为
89h+89h=112h(即274d255d),于是若看成无符号数有进位产生, CF =1 ,
看成有符号数则有溢出,因为
89h=1000 1001b是一个负数
这里89h是补码,对应的反码为 1000 1000b 对应的原码为 1111 0111b化成10进制数为-119,
-119+(-119)=-238-128(在-128到127这个范围之外了)所以有溢出. OF=1
(al)=12h. 因为运算结果不为0,所以ZF=0,因为(al)=12h=0001 0010 b, 最高位为0,所以SF=0, 0001 0010 b中有2个1,所以PF=1.
add al,9dh
12h+9dh=0afh,于是若看成无符号数无进位产生, CF =0
12h对应的10进制数为18d,
9dh对应的二进制为 1001 1101b 这个是补码,对应的反码为 1001 1100b
对应的原码为1110 0011b即 -99d 18+(-99)= - 81 d(在-128到127这个范围之内了)所以没有溢出. OF=0
注:-81d的补码就是 0afh
因为运算结果不为0,所以ZF=0,因为(al)=0afh=1010 1111 b, 最高位为1,所以SF=1, 1010 1111 b中有6个1,所以PF=1.
cmp al,0bch
(注意:这里的减法只是为了cmp用来比较,在计算机内部算一下,并没有把减法的结果赋给al)
cmp通过减法运算修改标志位
把0afh和0bch看成无符号数,0afh小于0bch,所以还有借位,这样, CF=1
把0afh和0bch看成无符号数,0afh对应的10进制数为 -81d
0bch对应的10进制数为 -68d
(-81d)-(-68d)=-13d 运算结果在-128d到127d之间,所以没有溢出,这样 OF=0
因为运算结果不为0,所以ZF=0,因为(al)=0f3h=1111 0011 b, 最高位为1,所以SF=1, 1111 0011 b中有6个1,所以PF=1.
sub al,al
sub al,al后 (al)=0 OF=0 CF=0 ZF=1 SF=0 PF=1 (因为0或偶数个1时,PF=1)
dec al
看作无符号数时: 因为 0h小于1h,所以还有借位,但是在设计DEC和INC指令的时候,不影响标志位CF,所以CF=0(如果改成sub al,1,则 CF=1)
因为 0 -1=-1运算结果在-128到127之间,所以没有溢出,
所以OF=0
因为运算结果不为0,所以ZF=0,因为(al)=0ffh=1111 1111 b, 最高位为1,所以SF=1, 1111 1111 b中有8个1,所以PF=1.
inc al
因为 ffh加1h,为00h,且有进位,但是在设计DEC和INC指令的时候,不影响标志位CF,所以CF=0(如果改成add al,1,则 CF=1)
因为 -1+1=0,运算结果在-128到127之间,所以没有溢出,所以OF=0因为运算结果为
原创力文档

文档评论(0)