部分习题答案
第二章 计算机中的数值和编码
1、 将十进制数转换为二进制和十六进制
(1)  129.75=1000 0001.11B81.CH      (2)  218.8125=1101 1010.1101BDA.DH
(3)  15.625=1111.101BF.AH          (4)  47.15625=10 1111.0010 1B2F.28 H
2、 将下列二进制数转换为十进制和十六进制
    (1)  111010 B=58 =3A H                (2)  1011 1100.111B= 188.875= BC.E H
    (3)  0.1101 1B=0.84375 =0.D8H          (4)  11110.01 B=30.25 =1E.4H
3、完成下列二进制数的加减法运算
    (1)    1001.11+100.01=1110.0001110101.0110
    (4)  01011101.0110-101101.1011=101111.1011
4、完成下列十六进制数的加减法运算
    (1)    745CH+56DFH=D14B H            (2)    ABF.8H-EF6.AH=9C28.E H     
    (3)    12AB.F7+3CD.05=1678 .FC H    (4)    6F01H-EFD8H=7F29 H
5、计算下列表达式的值
103.CEH             
    (3)    18.9+1010.1101B+12.6H-1011.1001=36.525
6、选取字长n为8位和16位两种情况,求下列十进制数的补码。
    (1)    X=-33的补码:   
    (2)    Y=+33的补码:    0010 0001,    0000 0000 0010 0001
    (3)    Z=-128的补码:1000 0000,    1111 1111 1000 0000
    (4)    N=+127的补码:0111 1111,    0000 0000 0111 1111
    (5)    A=-65的补码: 1011 1111,    1111 1111 1011 1111
    (6)    B=+65的补码: 0100 0001,    0000 0000 0100 0001
    (7)    C=-96的补码: 1010 0000,    1111 1111 1010 0000
    (8)    D=+96的补码: 0110 0000,    0000 0000 0110 0000
7、写出下列用补码表示的二进制数的真值
    (1)    [X]=1000 0000 0000 0000 H            X-1000 0000 0000 0000 H-32768       
    (2)    [Y]=0000 0001 0000 0001 H            Y+0000 0001 0000 0001 H+257         
    (3)    [Z]=1111 1110 1010 0101 H            Z-0000 0001 0101 1011 H-347         
    (4)    [A]=0000 0010 0101 0111 H            A+0000 0010 0101 0111 H+599
8、设机器字长为8位,最高位为符号位,试对下列格式进行二进制补码运算,并判断结果是否
溢出。
    (1)  43+8   
        ∵    [43]00101011B,[8]00001000B
        ∴    [43]+[8]00101011B00001000B00110011B=33H
                00101011B
            +    00001000B                           
                00110011B                           
        ∵  CS0,CD0,OF=CS⊕CD000
        ∴  无溢出
(1)  43+8            33H        (无溢出)      (2) -52+7            D3 H    (无溢出)
(3) 60+90            96 H    (溢出)        (4)  72-8            40 H    (无溢出)
      (5)  -33+(-37)        0BA H    (无溢出)      (6)  -90+(-70)      60 H        (溢出)   
    (7)  ―9―(―7)        FE H      (无溢出)        (8)  60-90            E2 H    (无溢出)
9、 设有变量xyz=01110010B,v=01011010B,试计算x+y=?,x+z=?,y+z=?,z+v=?,请问:① 若为无符号数,计算结果是否正确?② 若为带符号补码数,计算结果是否溢出?
    x+yB=1B8 H
                1110 1111 B
            +    1100 1001B
                1011 1000B
    ① 若为无符号数                    ② 若为带符号补码数
        ∵ CF=1        ∴ 不正确            ∵ CF=1,DF=1    OF=0      ∴ 不溢出
          x+y = 0B8 H        x+z = 61 H        y+z = 3B H        z+v = 0CC H
      ①    不正确          不正确          不正确            正确   
      ②    不溢出            不溢出            不溢出            溢出
第三章  80X86微处理器
1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程。
    答:    (1) BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。
            (2) EU的作用:执行指令,并为BIU提供所需的有效地址。
            (3) 并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令队列中。这样就实现了取指和执行指令的并行工作。
2.8086/8088CPU内部有哪些寄存器?其主要作用是什么?
    答:8086/8088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。其主要作用是:
            (1) 数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。
        AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,所有的I/O指令都使用该寄存器与外设端口交换信息。 
        BX(Base)称为基址寄存器。用来存放操作数在内存中数据段内的偏移地址,
        CX(Counter)称为计数器。在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。 
        DX(Data)称为数据寄存器。在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。
            (2) 地址寄存器:一般用来存放段内的偏移地址。
              SP(Stack Pointer)称为堆栈指针寄存器。在使用堆栈操作指令(PUSH或POP)对堆栈
进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。
        BP(Base Pointer)称为基址寄存器。作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。
        SI(Source Index)称为源变址寄存器。SI存放源串在数据段内的偏移地址。
            DI(Destination Index)称为目的变址寄存器。DI存放目的串在附加数据段内的偏移地址。
            (3) 段寄存器:用于存放段地址
        CS(Code Segment)称为代码段寄存器,用来存储程序当前使用的代码段的段地址。 CS的内容左移4位再加上指令指针寄存器IP的内容就是下一条要读取的指令在存储器中的物理地址。
        DS(Data Segment)称为数据段寄存器,用来存放程序当前使用的数据段的段地址。 DS
的内容左移4位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地址。
        SS(Stack Segment)称为堆栈段寄存器,用来存放程序当前所使用的堆栈段的段地址。堆栈是存储器中开辟的按“先进后出”原则组织的一个特殊存储区,主要用于调用子程序或执行中断服务程序时保护断点和现场。
        ES(Extra Segment)称为附加数据段寄存器,用来存放程序当前使用的附加数据段的段地址。附加数据段用来存放字符串操作时的目的字符串。
            (4) 控制寄存器
        IP(Instmcdon Pointer)称为指令指针寄存器,用来存放下一条要读取的指令在代码段内的偏移地址。用户程序不能直接访问IP。
        FLAGS称为标志寄存器,它是一个16位的寄存器,但只用了其中9位,这9位包括(个状态标志位和3个控制标志位。它用来反映算术运算和逻辑运算结果的一些特征,或用来控制CPU的某种操作。
3.8086/8088CPU中有哪些寄存器可用来指示操作数在存储器中某段内的偏移地址?
    答:可用来指示段内偏移地址的寄存器共有6个:IP、SP、BP、BX、SI、DI
4.8086/8088CPU中标志寄存器FLAGS有哪些标志位?它们的含义和作用如何?
    答:标志寄存器中的标志共有9个,分为两类:状态标志6个和控制标志3个。其作用是:
            (1) 状态标志:用来反映算术和逻辑运算结果的一些特征。
        CF(Carry Flag)—进位标志位。当进行加减运算时,若最高位发生进位或借位,则CF为1,否则为0。该标志位通常用于判断无符号数运算结果是否超出了计算机所能表示的无符号数的范围。
        PF(Parity Flag)—奇偶标志位。当指令执行结果的低8位中含有偶数个1时,PF为1,否则为0。
        AF(Auxiliary Flag)—辅助进位标志位。当执行一条加法或减法运算指令时,若结果的低字节的低4位向高4位有进位或借位,则AF为1,否则为0。
        ZF(Zero Flag)—零标志位。若当前的运算结果为0,则ZF为1,否则为00
        SF(Sign Flag)—符号标志位。当运算结果的最高位为1时,SF=1,否则为00
        OF(Overflow Flag)—溢出标志位。当运算结果超出了带符号数所能表示的数值范围,即溢出时,OF=1,否则为0。该标志位通常用来判断带符号数运算结果是否溢出o
              (2) 控制标志位:用来控制CPU的操作,由程序设置或清除。它们是:
              TF(TrapFlag)—跟踪(陷阱)标志位。它是为测试程序的方便而设置的。若将TF置1,8086/8088CPU处于单步工作方式,否则,将正常执行程序。
        IP(Interrupt Flag)—中断允许标志位。它是用来控制可屏蔽中断的控制标志位。若用STI指令将IF置1,表示允许CPU接受外部从INTR引脚上发来的可屏蔽中断请求信号;若用CLI指令将IP清0,则禁止CPU接受可屏蔽中断请求信号。IF的状态对非屏蔽中断及内部中断没有影响。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。