微机原理习题答案(完整版)
1-7已知下列补码[X]补和[Y]补,分别求[X+Y]补、[X-Y]补。并判断运算结果是否出现溢出。
[X]补=10011001,[Y]补=00101100;
[-Y]补=11010100,[X+Y]补=[X]补+[Y]补=11000101不溢出;[X-Y]补=[X]补+[-Y]补=[X]补-[Y]补=01101101溢出;
ANL 30H, #00H;直接寻址,立即寻址
PUSH P1;寄存器间接寻址(指针为SP,只是在堆栈操作指令中省略了),直接寻址
堆栈操作除了用PUSH和POP指令,完全可以用其它指令来完成,举例如下:
第
2-1请说明单片机89C52内部有哪些资源。
答:1个8位CPU、8KB的FLASH程序存储器、256B的SRAM数据存储器、4个8位的并行I/O口(P0,P1,P2,P3)、1个全双工串行口、中断系统(5个中断源、2个中断优先级)、3个16位的定时/计数器(T0,T1,T2)、时钟电路(时钟频率6~24MHZ)。
(134)D=(10000110)B=(86)H=(000100110100)8421BCD
注:8421BCD码为4位表示一个十进制数符,本质是符号不是数值,所以不可省略0。
1-5将下列真值分别转化为用8位和16位二进制数表示的原码、补码和反码。
X=1000100;
[X]8位原=[X]8位反=[X]8位补=01000100;[X]16位原=[X]16位反=[X]16位补=0000000001000100
第一章习题答案
1-1请说明CPU的功能以及CPU是如何执行指令和程序的。
答:CPU的功能是执行程序和统筹处理计算机系统中各类事务。
CPU执行指令分为3步:取指令、分析指令、执行指令;计算机程序是由一条条指令按一定的顺序排列组成的,CPU执行程序的过程就是一条条指令累计执行的过程,其方式分为串行作业方式和流水线作业方式。
答:上电复位后,内部数据存储器中的内容为不确定的状态。
人工按钮复位后,内部数据存储器中的内容不变(因为没有断电)。
2-12 51应用系统中,为何要对堆栈指针SP重新设置?
答:复位后(SP)=07H,则堆栈是从08H开始存放数据的。而内部数据存储器中00H~1FH单元为工作寄存器区,而20H~2FH单元为位寻址区,在实际的应用系统中,这些区域都可能使用到。故一般将堆栈设置在地址30H以后的单元中,所以需要对堆ห้องสมุดไป่ตู้指针SP重新设置。
位地址=(字节地址-20H)×8+DX, DX-该位在字节单元中的位置(D0~D7)
位地址÷8,商+20H=字节地址,余数=DX
2)SFR中的可位寻址(位地址80H~0FFH)的寄存器,其最低位的位地址与其字节地址相同。关系如下:
位地址÷8,商*8=SFR的字节地址,余数=DX,DX-该位在SFR中的位置(D0~D7)
2-351单片机中的工作寄存器分布在存储器的哪个区域?
答:分布在内部数据存储器的00H~1FH区域。
2-4在51系列单片机中,工作寄存器分几个区?如何改变工作寄存器区?
答:分为0、1、2、3四个区。修改特殊功能寄存器PSW的RS1和RS0位可改变当前工作寄存器区。
2-5特殊功能寄存器和工作寄存器在存放信息方面有和区别?
答:特殊功能寄存器(SFR)中存放的是一些专用信息,这些信息与下列内容有关:计算机指令的执行条件及状态标志,定时/计数器的使用控制、中断系统的使用、并行I/O及串行I/O接口的使用。
工作寄存器只是用于暂时存放指令执行过程中一般的被操作数据。
2-6特殊功能寄存器的地址空间如何?
答:特殊功能寄存器(SFR)的地址为8为二进制编码,地址范围为80H~0FFH,但各特殊功能寄存器的地址并非连续分布的。指令通过直接寻址的方式才能访问到。
X=-1000100
[X]8位原=11000100,[X]8位反=10111011,[X]8位补=10111100;
[X]16位原=1000000001000100,[X]16位反=1111111110111011,[X]16位补=1111111110111100;
X=-0111111
[X]8位原=10111111,[X]8位反=11000000,[X]8位补=11000001;
答:指令中给出操作数的方式叫做寻址方式。51系列机给出的寻址方式一般有7中:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址(直接寻址的一个特例――地址指向位单元)。
3-3对于内部数据存储器00H~1FH区域的访问有哪些寻址方式?对于外部数据存储器的访问有哪些寻址方式?对于特殊功能寄存器的访问有哪些寻址方式?
答:对于内部数据存储器00H~1FH区域的访问有直接寻址、寄存器寻址、寄存器间接寻址三种方式。
对于外部数据存储器的访问只有寄存器间接寻址一种方式(以DPTR或R0、R1为指针)。
对于特殊功能寄存器的访问只有直接寻址一种方式。同时对于内部数据存储器80H~0FFH的128个单元的访问只有寄存器间接寻址一种方式(以R0、R1或SP为指针);借助于两种不同的寻址方式,可以将在地址上重合(80H~0FFH)的SFR和内部RAM高128字节单元的两部分空间加以区分。
另补码减法也可用加法实现[X-Y]补=[X]补+[-Y]补。上题的第2小题,由于[Y]8位补=10000000=28,Y=-28,所以(-Y)=28,已不能用8位补码表示,可以先扩补位9位补码,然后进行运算,或直接用[X-Y]补=[X]补-[Y]补进行计算。判断结果是否溢出,可按下列方法:加法时,如果正负数相加(即两数的符号位不同),则结果肯定不溢出;如果同号数相加,结果与被加数和加数异号的则溢出(即正正相加结果为负或负负相加结果为正时)。减法时,如果同号数相减(即两数的符号位相同),则结果肯定不溢出;如果异号数相减,结果与被加数异号的则溢出(即正负相减结果为负或负正相减结果为正时)。此法比用变形补码直观,加和减都适用。
2-13 51单片机中的I/O接口中,那个接口在作为准双向口时需要外接电阻?若对某一接口进行读引脚的操作,必须事先对该接口做什么操作?
答:P0口需外接上拉电阻(因为P0是集电极开路结构)。
若需对某个接口读引脚(即读取外部输入信号的状态),需要对该接口的口锁存器写入1(例如:若需要读取P1.0、P1.1、P1.2、P1.3的引脚状态时,需要先执行MOV P1, #0FH。这也是为什么复位后(P0)=(P1)=(P2)=(P3)=0FFH的道理。)
2-7 51单片机中的位寻址区在哪里?它们的地址空间如何?
答:51单片机的位寻址区分布在两个地方。一部分位于内部数据存储器中字节地址为20H~2FH的16个单元中,这部分包括128个位,位地址空间为00H~7FH;另一部分位于字节地址能被8整除的特殊功能寄存器中,位地址空间为80H~0FFH。
2-8请指出下列位地址所在的内部数据存储器单元的字节地址或SFR名称。
第
3-1指令的格式是由哪些部分组成的?每部分的含义是什么?
答:指令由操作码和操作数组成。在形式上操作码和操作数都是二进制代码。操作码用来表示指令的种类和功能,经由控制器中的指令译码器译码后产生控制信号。操作数是指令的操作对象,表示被操作数据或数据所在的存储单元地址。
3-2什么是寻址方式?51系列指令系统有哪些寻址方式?
[X]补=11111111,[Y]补=10000000;
[-Y]9位补=010000000,[X+Y]补=[X]补+[Y]补=01111111溢出;[X-Y]补=[X]补+[-Y]补=[X]补-[Y]补=01111111不溢出;
[X]补=00110111,[Y]补=11100000;
[-Y]补=00100000,[X+Y]补=[X]补+[Y]补=00010111不溢出;[X-Y]补=[X]补+[-Y]补=[X]补-[Y]补=01010111不溢出;
MOVC A, @A+DPTR;寄存器寻址,变址寻址(又称基址寄存器加变址寄存器间接寻址)
MOVX A, @DPTR;寄存器寻址,寄存器间接寻址
DEC B;直接寻址
SETB 24H;位寻址(直接寻址的一种,只是给出的直接地址是位地址)
CJNE A, #100, NEXT;寄存器寻址,立即寻址,相对寻址
2-9若某51单片机应用系统将F000H~FFFFH地址空间分配给它外部的I/O接口,那么该单片机应用系统最多给外部数据存储器分配多少单元?地址空间如何?
答:51单片机的外部I/O接口和外部数据存储器是统一编制的,占用同一个地址空间,地址空间的容量为64KB,地址范围为0000H~FFFFH。据题意,系统已将F000H~FFFFH地址空间分配给它外部的I/O接口,则只剩下0000H~EFFFH可分配给外部数据存储器,容量为60KB。
答:8K=8192=213,故地址线为13根。
另附:存储器的数据线由存储器的字长决定,例如一块32K×16(存储器容量显示格式:存储单元数×存储单元的字长)的存储器,其地址线为15根,数据线为16根。
1-4将十进制数78,134,分别用二进制数、十六进制数和8421BCD吗表示。
答:(78)D=(1001110)B=(4E)H=(01111000)8421BCD
答:00H内部RAM的20H单元;(20H).0
20H内部RAM的24H单元;(24H).0
0A0HP2;P2.0
0B0HP3;P3.0
64H内部RAM的2CH单元;(2CH).4
E6H累加器ACC; ACC.6。
提示:1)内部数据存储器内的可寻址位,其位地址(00H~7FH)与所在单元的字节地址(20H~2FH)间的关系如下:
2-2为什么51系列单片机的存储器系统采用哈佛结构。
答:哈佛结构指的是指令代码和数据分别存放在程序存储器和数据存储器中,两部分存储器分别采用不同的地址总线系统。单片机在工作时一般执行固定不变的应用程序代码,而作为嵌入式控制系统的核心,受限于体积要求,单片机系统一般不会带有辅助存储器(例如硬盘等),为了在断电时也能保存用户的应用程序,故需将程序固化在只读存储器中,而单片机工作时程序运行过程中的数据是变化的,所以需要放在随机访问存储器中。