1、微机原理王忠民版 课后答案部分习题答案第二章 计算机中的数值和编码1、 将十进制数转换为二进制和十六进制(1) 129.751000 0001.11B81.CH (2) 218.81251101 1010.1101BDA.DH(3) 15.6251111.101BF.AH (4) 47.1562510 1111.0010 1B2F.28 H2、 将下列二进制数转换为十进制和十六进制 (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
2、 =1E.4H3、完成下列二进制数的加减法运算 (1) 1001.11100.011110.00 (2) 1101010110.100101100001.001101110101.0110 (3) 001111011011101111111000 (4) 01011101.0110101101.1011101111.10114、完成下列十六进制数的加减法运算 (1) 745CH56DFHD14B H (2) ABF.8HEF6.AH9C28.E H (3) 12AB.F73CD.051678 .FC H (4) 6F01HEFD8H7F29 H5、计算下列表达式的值 (1) 128.81251
3、0110101.1011B1F.2H101010101.1010B (2) 287.6810101010.11H8E.EH103.CEH (3) 18.91010.1101B12.6H1011.100136.5256、选取字长n为8位和16位两种情况,求下列十进制数的补码。 (1) X33的补码: 1101 1111, 111111*1 (2) Y33的补码: 0010 0001, 0000 0000 0010 0001 (3) Z128的补码:1000 0000, 1111 1111 1000 0000 (4) N127的补码:0111 1111, 0000 0000 0111 1111 (
4、5) A65的补码: 1011 1111, 1111 1111 1011 1111 (6) B65的补码: 0100 0001, 0000 0000 0100 0001 (7) C96的补码: 1010 0000, 1111 1111 1010 0000 (8) D96的补码: 0110 0000, 0000 0000 0110 00007、写出下列用补码表示的二进制数的真值 (1) X补1000 0000 0000 0000 H X1000 0000 0000 0000 H32768 (2) Y补0000 0001 0000 0001 H Y0000 0001 0000 0001 H257
5、(3) Z补1111 1110 1010 0101 H Z0000 0001 0101 1011 H347 (4) A补0000 0010 0101 0111 H A0000 0010 0101 0111 H5998、设机器字长为8位,最高位为符号位,试对下列格式进行二进制补码运算,并判断结果是否溢出。 (1) 438 43补00101011B,8补00001000B 43补8补00101011B00001000B00110011B33H 00101011B 00001000B 00110011B CS0,CD0,OFCSCD000 无溢出(1) 438 33H (无溢出) (2) 527 D
6、3 H (无溢出) (3) 6090 96 H (溢出) (4) 728 40 H (无溢出) (5) 33(37) 0BA H (无溢出) (6) 90(70) 60 H (溢出) (7) 9(7) FE H (无溢出) (8) 6090 E2 H (无溢出)9、 设有变量x11101111B,y11001001B,z01110010B,v01011010B,试计算x+y?,x+z?,y+z?,z+v?,请问: 若为无符号数,计算结果是否正确? 若为带符号补码数,计算结果是否溢出? x+y = 11101111B11001001B10111000B1B8 H 1110 1111 B 1100
7、 1001B 1011 1000B 若为无符号数 若为带符号补码数 CF=1 不正确 CF=1,DF1 OF0 不溢出 x+y = 0B8 H x+z = 61 H y+z = 3B H z+v = 0CC H 不正确 不正确 不正确 正确 不溢出 不溢出 不溢出 溢出第三章 80X86微处理器1简述80868088CPU中BIU和EU的作用,并说明其并行工作过程。 答: (1) BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。 (2) EU的作用:执行指令,并为BIU提供所需的有效地址。 (3) 并行工作过程:当EU从指令队列中取出指令执行时,BIU将
8、从内存中取出指令补充到指令队列中。这样就实现了取指和执行指令的并行工作。280868088CPU内部有哪些寄存器?其主要作用是什么? 答:80868088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。其主要作用是: (1) 数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。 AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,所有的IO指令都使用该寄存器与外设端口交换信息。 BX(Base)称为基址寄存器。用来存放操作数在内存中数据段内的偏移地址, CX(Counter)称为计
9、数器。在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。 DX(Data)称为数据寄存器。在寄存器间接寻址的IO指令中存放IO端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。 (2) 地址寄存器:一般用来存放段内的偏移地址。 SP(Stack Pointer)称为堆栈指针寄存器。在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。 BP(Base Pointer)称为基址寄存器。作为通用寄存器,它可以用来存放数据,但更经常更重要的
10、用途是存放操作数在堆栈段内的偏移地址。 SI(Source Index)称为源变址寄存器。SI存放源串在数据段内的偏移地址。 DI(Destination Index)称为目的变址寄存器。DI存放目的串在附加数据段内的偏移地址。 (3) 段寄存器:用于存放段地址 CS(Code Segment)称为代码段寄存器,用来存储程序当前使用的代码段的段地址。 CS的内容左移4位再加上指令指针寄存器IP的内容就是下一条要读取的指令在存储器中的物理地址。 DS(Data Segment)称为数据段寄存器,用来存放程序当前使用的数据段的段地址。 DS的内容左移4位再加上按指令中存储器寻址方式给出的偏移地址即
11、得到对数据段指定单元进行读写的物理地址。 SS(Stack Segment)称为堆栈段寄存器,用来存放程序当前所使用的堆栈段的段地址。堆栈是存储器中开辟的按“先进后出”原则组织的一个特殊存储区,主要用于调用子程序或执行中断服务程序时保护断点和现场。 ES(Extra Segment)称为附加数据段寄存器,用来存放程序当前使用的附加数据段的段地址。附加数据段用来存放字符串操作时的目的字符串。 (4) 控制寄存器 IP(Instmcdon Pointer)称为指令指针寄存器,用来存放下一条要读取的指令在代码段内的偏移地址。用户程序不能直接访问IP。 FLAGS称为标志寄存器,它是一个16位的寄存器
12、,但只用了其中9位,这9位包括(个状态标志位和3个控制标志位。它用来反映算术运算和逻辑运算结果的一些特征,或用来控制CPU的某种操作。380868088CPU中有哪些寄存器可用来指示操作数在存储器中某段内的偏移地址? 答:可用来指示段内偏移地址的寄存器共有6个:IP、SP、BP、BX、SI、DI480868088CPU中标志寄存器FLAGS有哪些标志位?它们的含义和作用如何? 答:标志寄存器中的标志共有9个,分为两类:状态标志6个和控制标志3个。其作用是: (1) 状态标志:用来反映算术和逻辑运算结果的一些特征。 CF(Carry Flag)进位标志位。当进行加减运算时,若最高位发生进位或借位
13、,则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)溢出标志位。当运算结果超出了带符号数所
14、能表示的数值范围,即溢出时,OF=1,否则为0。该标志位通常用来判断带符号数运算结果是否溢出o (2) 控制标志位:用来控制CPU的操作,由程序设置或清除。它们是: TF(TrapFlag)跟踪(陷阱)标志位。它是为测试程序的方便而设置的。若将TF置1,80868088CPU处于单步工作方式,否则,将正常执行程序。 IP(Interrupt Flag)中断允许标志位。它是用来控制可屏蔽中断的控制标志位。若用STI指令将IF置1,表示允许CPU接受外部从INTR引脚上发来的可屏蔽中断请求信号;若用CLI指令将IP清0,则禁止CPU接受可屏蔽中断请求信号。IF的状态对非屏蔽中断及内部中断没有影响。
15、 DF(DirectionFlag)方向标志位。若用STD将DF置1,串操作按减地址方式进行,也就是说,从高地址开始,每操作一次地址自动递减;若用CLD将DF清0,则串操作按增地址方式进行,即每操作一次地址自动递增。580868088CPU的地址总线有多少位?其寻址范围是多少? 答:8086/8088地址总线有20根,寻址范围1MB6什么叫指令队列?80868088CPU中指令队列有什么作用?其长度分别是多少? 答: (1) 指令队列:采用“先进先出”原则,按顺序存放预执行指令的缓冲器称为指令队列。 (2) 指令队列的作用:存放EU将要执行的指令,使CPU的取指和执行指令能并行工作。 (3)
16、指令队列的长度:8086为6个字节,8088为4个字节。7Intel8086与8088有何区别? 答:8086与8088的区别有三处: (1) 外部数据总线位数不同(即地址数据分时复用引脚条数不同); 8086为16位:AD15AD0 。 8088为 8位:AD7AD0 。 (2) 内部指令队列缓冲器长度不同; 8086有6个字节。当指令队列出现2个空字节时,BIU将取指补充。 8086有4个字节。当指令队列出现1个空字节时,BIU将取指补充。 (3) 外部某些控制总线定义不同。 8086的28号引脚定义为MIO(S2),8088定义为IOM(S2) 8086的34号引脚定义为BHES7,80
17、88定义为SS0(HIGH)8简述8086 CPU使用地址锁存信号ALE将地址A15A0与数据D15D0分开的工作原理。 答:在任何一个总线周期的T1状态,ALE均为高电平,以表示当前地址数据复用线上的输出的是地址信息,在ALE由高变低的下降沿时把地址装入地址锁存器,而在T2、T3和T4状态,ALE均为低电平,以表示当前地址数据复用线上的输出的是数据信息,此时通过数据收发器进行传送。9什么是逻辑地址?什么是物理地址?若已知逻辑地址为BA00:A800,试求物理地址。 答: 逻辑地址:由段地址和偏移地址表示的存储单元地址称为逻辑地址。 物理地址:CPU对存储器进行访问时实际所使用的20位地址称为
18、物理地址。 若 逻辑地址为BA00H:A800H 则 物理地址BA00H10HA800HC4800H10简述堆栈指针寄存器SP的功能及堆栈的操作过程。 答: (1) SP的功能:指示进栈和出栈操作时的偏移地址。 (2) 堆栈的操作过程:进栈时,先将SP2,再将数据压入堆栈(即先移后入);出栈时,先将数据弹出堆栈,再将SP+2(即先出后移)。第四章 80X86 指令系统1、 指出源操作数的寻址方式 MOV BX,2000H ;立即数寻址 MOV BX,2000H ;直接寻址 MOV BX,SI ;寄存器间接寻址 MOV BX,SI2000H ;寄存器相对寻址 MOV BXSI,AL ;寄存器寻址
19、 ADD AX,BXDI80 ;基址变址相对寻址 MUL BL ;寄存器寻址 JMP BX ;段内间接寻址 IN AL,DX ;端口间接寻址 INC WORD PTR BP+10H ;寄存器相对寻址 MOV CL,LENGTH VAR ;立即数寻址 MOV BL,OFFSET VAR1 ;立即数寻址2、 指出下列指令是否正确 (1) MOV DS,0100H ;错误。源操作数是立即数时,目的操作数不能时段寄存器 (2) MOV BP,AL ;错误。操作数类型不一致 (3) XCHG AH,AL ;正确。 (4) OUT 310H,AL ;错误。端口直接寻址的范围应在0FFH之间 (5) MOV
20、 BX,BX ;正确。 (6) MOV ES:BXDI ,AX ;正确。 (7) MOV AX,SIDI ;错误。存储器寻址中有效地址不能由两个变址寄存器组成 (8) MOV SS:BX+SI+100H,BX ;正确。 (9) AND AX,BL ;错误。操作数类型不一致 (10) MOV DX,DS:BP ;正确。 (11) ADD SI,20H ;错误。用PTR 说明类型 (12) MOV 30H,AL ;错误。目的操作数不能为立即数 (13) PUSH 2000H ;错误。堆栈指令的操作数不能是立即数 (14) MOV SI,2000H ;错误。两个操作数不能同时为存储器操作数 (15)
21、 MOV SI,AL ;错误。操作数类型不一致 (16) ADD 2000H,20H ;错误。用PTR 说明类型 (17) MOV CS,AX ;错误。目的操作数不能为代码段寄存器 (18) INC DI ;错误。需用PTR说明类型 (19) OUT BX,AL ;错误。端口间接寻址的寄存器只能是DX寄存器 (20) SHL BX,3 ;错误。移位次数大于1时应该用CL寄存器 (21) XCHG CX,DS ;错误。交换指令中不能出现段寄存器 (22) POP AL ;错误。堆栈指令的操作数只能是字操作数(即16位操作数) 3、 写出存储器操作数物理地址的计算表达式 (1) MOV AL,DI
22、 ;(DS)10H(DI) (2) MOV AX,BX+SI ;(DS)10H(BX)(SI) (3) MOV 5BX+DI,AL ;(DS)10H(BX)(DI)5 (4) ADD AL,ES:BX ;(ES)10H(BX) (5) SUB AX,1000H ;(DS)10H1000H (6) ADC AX,BX+DI+2000H ;(DS)10H(BX)(DI)2000H (7) MOV CX,BP+SI ;(SS)10H(BP)(SI) (8) INC BYTE PTR DI ;(DS)10H(DI)4、 若(DS)3000H,(BX)2000H,(SI)0100H,(ES)4000H,
23、计算下列存储器操作数的物理地址。 (1) (DS)10H(BX)3000H10H2000H32000H (2) (DS)10H(BX)(SI)1000H3000H10H2000H0100H1000H33100 H (3) (DS)10H(BX)(SI)3000H10H2000H0100H32100 H (4) (ES)10H(BX)4000H10H2000H42000 H5、若(CS)E000H,说明代码段可寻址物理存储空间的范围。 最小物理地址为:(CS)10H0000HE0000H 最大物理地址为:(CS)10HFFFFHEFFFFH 代码段可寻址物理存储空间的范围是:E0000HEFFF
24、FH6、设(SP)2000H,(AX)3000H, (BX)5000H,执行下列程序段后,(SP)?,(AX)?, (BX)? PUSH AX PUSH BX POP AX (SP)1FFEH,(AX)5000H, (BX)5000H7、试比较SUB AL,09H与CMP AL,09H这两条指令的异同。若(AL)=08H,分别执行上述两条指令后,(AL)=?,CF=?,OF=0,ZF=? (1) 相同点:两条指令都能完成(AL)09H的功能,并且都影响六个状态标志位; 不同点:SUB指令将运算结果回送到AL寄存器中,而CMP指令不回送。 (2) SUB AL,09H ;(AL)=FFH,CF=
25、1,OF=0,ZF=0 CMP AL,09H ;(AL)=08H,CF=1,OF=0,ZF=08、分别执行下列指令,试求AL的内容及各状态标志位的状态。 (1) MOV AL,19H ; ADD AL,61H ;(AL)=7AH OF=0 SF=0 ZF=0 AF=0 PF=0 CF=0 (2) MOV AL,19H ; SUB AL,61H ;(AL)=B8H OF=0 SF=1 ZF=0 AF=0 PF=1 CF=1 (3) MOV AL,5DH ; ADD AL,0C6H ;(AL)=23H OF=0 SF=0 ZF=0 AF=1 PF=0 CF=1 (4) MOV AL,7EH ; S
26、UB AL,95H ;(AL)=E9H OF=1 SF=1 ZF=0 AF=0 PF=0 CF=19、用最少的指令,实现下述要求的功能。 (1) AH的高4位清零。 AND AH,0FH (2) AL的高4位去反。 XOR AH, 0F0H (3) AL的高4位移到低4位,高4位清0。 MOV CL,4 SHR AL,CL (4) AL的低4位移到高4位,低4位清0。 MOV CL,4 SHL AL,CL 10、设(BX)6D16H,(AX)1100H,写出下列三条指令执行后,AX和BX寄存器中的内容。 MOV CL,06H ROL AX,CL SHR BX,CL (AX)=4004 H (B
27、X)=01B4 H11、设初值(AX)0119H,执行下列程序段后,(AX)? MOV CH,AH ADD AL,AH DAA XCHG AL,CH ADC AL,34H DAA MOV AH,AL MOV AL,CH (AX)=3520 H12、指出下列程序段的功能。 (1) MOV CX,10 LEA SI,First LEA DI,Second REP MOVSB 将 First串中前10个字符传送至Second 中 (2) CLD LEA DI,0404H MOV CX,0080H XOR AX,AX REP STOSW 将起始地址为0404 H开始的80 H个单元置成013、 设(B
28、X)6F30H,(BP)0200H,(SI)0046H,(SS)2F00H,(2F246H)4154H,试求执行XCHG BX,BPSI后, (BX)?,(2F246H)? (BX)4154H (2F246H)6F30H14、设(BX)0400H,(DI)003CH,执行LEA BX,BXDI0F62H后,(BX)? (BX)139E H15、设(DS)C000H,(C0010H)0180H,(C0012H)2000H,执行LDS SI,10H后,(SI)?, (DS)? (SI)0180 H,(DS)2000 H16、已知(DS)091DH,(SS)1E4AH,(AX)1234H,(BX)0024H,(CX)5678H,(BP)0024H,(SI)0012H,(DI)0032H,(09226H)00F6H,(09228H)1E40H,试求单独执行下列指令后的结果。 (1) MOV CL,20HBXSI ;(CL)0F6 H (2) MOV BPDI,CX ;(1E4F6 H)5678 H (3) LEA BX,20HBXSI ;(BX)=0056 H MOV AX,2BX ;(AX)=1E40 H(4)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1