部分习题答案(3) 0.1101 1B= 0.84375 = 0.D8H (4) 11110.01 B= 30.25 =1E.4H3、完成下列二进制数的加减法运算(1)1001.11 + 100.01 = 1110.0001110101.0110(4) 01011101.0110 — 101101.1011 = 101111.10114、 完成下列十六进制数的加减法运算(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 H5、 计算下列表达式的值 103.CEH(3) 18.9 + 1010.1101B + 12.6H — 1011.1001 = 36.525 6、选取字长n 为8位和16位两种情况,求下列十进制数的补码。
(1) X=— 33的补码: ⑵ Y=+ 33的补码: 0010 0001 ,0000 0000 0010 0001⑶Z=— 128 的补码:1000 0000 , 1111 1111 1000 0000⑷ N=+ 127的补码:0111 1111 , 0000 0000 0111 1111A=— 65的补码:1011 1111 , 1111 1111 1011 1111 ⑹ B=+ 65的补码: 0100 0001 , 0000 0000 0100 0001 ⑺ 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 HY = + 0000000100000001 H =+ 257(3) [Z 补=1111 1110 1010 0101 HZ= — 0000 0001 0101 1011 H =—347(4)[A 补=0000 0010 0101 0111 HA= + 0000 0010 0101 0111 H =+ 5998、设机器字长为8位,最高位为符号位,试对下列格式进行二进制补码运算,并判断结果是否溢出。
(1) 43 + 8[43]补=00101011B , [8]补=00001000B[43]补+ [8]补=00101011B + 00001000B = 00110011B = 33H00101011B+ 00001000B 00110011BT C s = 0, C D = 0, OF= C S ® C D = 0 ® 0= 0 ••• 无溢出 (1) 43+ 8 33H (无溢出)第二章 1、 将十进制数转换为二进制和十六进制(1) 129.75 = 1000 0001.11B = 81.CH (3) 15.625= 1111.101B = F.AH2、 将下列二进制数转换为十进制和十六进制(1) 111010 B= 58 =3A H 计算机中的数值和编码(2) 218.8125 = 1101 1010.1101B = DA.DH⑷ 47.15625= 10 1111.0010 1B = 2F.28 H(2) 1011 1100.111B= 188.875 = BC.E H(2) — 52 + 7D3 H (无溢出)(3) 60 + 90 96 H(溢出) ⑷ 72—8 40 H (无溢出)(5)— 33+ ( — 37)0BA H (无溢出)⑹—90+ ( —70) 60 H ( 溢出)(7) — 9—( — 7) FE H (无溢出) (8) 60 —90E2 H (无溢出) 9、设有变量 xyz = 01110010B , v = 01011010B ,试计算 x +y = ?, x +z= ?, y +z= ?, z +v= ?,请问:① 若+1100 1001B10111000B① 若为无符号数② 若为带符号补码数•/ CF=1•••不正确•/ CF=1 , DF = 1OF = 0 •-不溢出x +y = 0B8 H x +z = 61 Hy +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)称为计数器。
在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化, 有利于提高程序的运行速度。
DXData)称为数据寄存器。
在寄存器间接寻址的I /O 指令中存放I /O 端口地址;在做双字长乘除法运算时,DX 与AX 一起存放一个双字长操作数,其中DX 存放高16位数。
(2) 地址寄存器:一般用来存放段内的偏移地址。
SRStack Pointer)称为堆栈指针寄存器。
在使用堆栈操作指令(PUSH 或POP)对堆栈进行操作时, 每执行一次进栈或出栈操作,系统会自动将 SP 的内容减2或加2,以使其始终指向栈顶。
BRBase Poin ter) 称为基址寄存器。
作为通用寄存器,它可以用来存放数据,但更经常更重要 的用途是存放操作数在堆栈段内的偏移地址。
SI (Source Index)称为源变址寄存器。
SI 存放源串在数据段内的偏移地址。
DI(Destination Index)称为目的变址寄存器。
DI 存放目的串在附加数据段内的偏移地址。
(3) 段寄存器:用于存放段地址C&Code Segment)称为代码段寄存器,用来存储程序当前使用的代码段的段地址。
CS 的内容左移4位再加上指令指针寄存器 IP 的内容就是下一条要读取的指令在存储器中的物理地址。
DSData Segment)称为数据段寄存器,用来存放程序当前使用的数据段的段地址。
DS 的内容左移4位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地 址。
为无符号数,计算结果是否正确?② x +y B = 1B8 H1110 1111 B若为带符号补码数,计算结果是否溢出?S&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、DI4.8086/8088CPU中标志寄存器FLAGS有哪些标志位?它们的含义和作用如何?答:标志寄存器中的标志共有9个,分为两类:状态标志6个和控制标志3个。
其作用是:(1)状态标志:用来反映算术和逻辑运算结果的一些特征。
CRCarry 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,否则为00SF(Sign Flag)—符号标志位。
当运算结果的最高位为1时,SF=1,否则为00OF(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的状态对非屏蔽中断及内部中断没有影响。
DRDirectionFlag) —方向标志位。
若用STD将DF置1,串操作按减地址方式进行,也就是说,从高地址开始,每操作一次地址自动递减;若用CLD将DF清0,则串操作按增地址方式进行,即每操作一次地址自动递增。
5.8086/ 8088CPU的地址总线有多少位?其寻址范围是多少?答:8086/8088 地址总线有20 根,寻址范围1MB6 •什么叫指令队列?8086/ 8088CPU中指令队列有什么作用?其长度分别是多少?答:(1) 指令队列:采用“先进先出”原则,按顺序存放预执行指令的缓冲器称为指令队列。