微机原理王忠民版 课后答案.docx

上传人:b****5 文档编号:27911011 上传时间:2023-07-06 格式:DOCX 页数:23 大小:30.62KB
下载 相关 举报
微机原理王忠民版 课后答案.docx_第1页
第1页 / 共23页
微机原理王忠民版 课后答案.docx_第2页
第2页 / 共23页
微机原理王忠民版 课后答案.docx_第3页
第3页 / 共23页
微机原理王忠民版 课后答案.docx_第4页
第4页 / 共23页
微机原理王忠民版 课后答案.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

微机原理王忠民版 课后答案.docx

《微机原理王忠民版 课后答案.docx》由会员分享,可在线阅读,更多相关《微机原理王忠民版 课后答案.docx(23页珍藏版)》请在冰豆网上搜索。

微机原理王忠民版 课后答案.docx

微机原理王忠民版课后答案

部分习题答案

第二章计算机中的数值与编码

1、将十进制数转换为二进制与十六进制

(1)129、75=10000001、11B=81、CH

(2)218、8125=11011010、1101B=DA、DH

(3)15、625=1111、101B=F、AH(4)47、15625=101111、00101B=2F、28H

2、将下列二进制数转换为十进制与十六进制

(1)111010B=58=3AH

(2)10111100、111B=188、875=BC、EH

(3)0、11011B=0、84375=0、D8H(4)11110、01B=30、25=1E、4H

3、完成下列二进制数的加减法运算

(1)1001、11+100、01=1110、00

(2)1101010110、1001-01100001、0011=01110101、0110

(3)00111101+10111011=(4)01011101、0110-101101、1011=101111、1011

4、完成下列十六进制数的加减法运算

(1)745CH+56DFH=D14BH

(2)ABF、8H-EF6、AH=9C28、EH

(3)12AB、F7+3CD、05=1678、FCH(4)6F01H-EFD8H=7F29H

5、计算下列表达式的值

(1)128、8125+10110101、1011B+1F、2H=101010101、1010B

(2)287、68-10101010、11H+8E、EH=103、CEH

(3)18、9+1010、1101B+12、6H-1011、1001=36、525

6、选取字长n为8位与16位两种情况,求下列十进制数的补码。

(1)X=-33的补码:

11011111,111111*********1

(2)Y=+33的补码:

00100001,0000000000100001

(3)Z=-128的补码:

10000000,1111111110000000

(4)N=+127的补码:

01111111,0000000001111111

(5)A=-65的补码:

10111111,1111111110111111

(6)B=+65的补码:

01000001,0000000001000001

(7)C=-96的补码:

10100000,1111111110100000

(8)D=+96的补码:

01100000,0000000001100000

7、写出下列用补码表示的二进制数的真值

(1)[X]补=1000000000000000HX=-1000000000000000H=-32768

(2)[Y]补=0000000100000001HY=+0000000100000001H=+257

(3)[Z]补=1111111010100101HZ=-0000000101011011H=-347

(4)[A]补=0000001001010111HA=+0000001001010111H=+599

8、设机器字长为8位,最高位为符号位,试对下列格式进行二进制补码运算,并判断结果就是否溢出。

(1)43+8

∵[43]补=00101011B,[8]补=00001000B

∴[43]补+[8]补=B+B=B=33H

00101011B

+00001000B

00110011B

∵CS=0,CD=0,OF=CS⊕CD=0⊕0=0

∴无溢出

(1)43+833H(无溢出)

(2)-52+7D3H(无溢出)

(3)60+9096H(溢出)(4)72-840H(无溢出)

(5)-33+(-37)0BAH(无溢出)(6)-90+(-70)60H(溢出)

(7)―9―(―7)FEH(无溢出)(8)60-90E2H(无溢出)

9、设有变量x=11101111B,y=11001001B,z=01110010B,v=01011010B,试计算x+y=?

x+z=?

y+z=?

z+v=?

请问:

①若为无符号数,计算结果就是否正确?

②若为带符号补码数,计算结果就是否溢出?

x+y=11101111B+11001001B=B=1B8H

11101111B

+11001001B

10111000B

①若为无符号数②若为带符号补码数

∵CF=1∴不正确∵CF=1,DF=1OF=0∴不溢出

x+y=0B8Hx+z=61Hy+z=3BHz+v=0CCH

①不正确不正确不正确正确

②不溢出不溢出不溢出溢出

第三章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(StackPointer)称为堆栈指针寄存器。

在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。

BP(BasePointer)称为基址寄存器。

作为通用寄存器,它可以用来存放数据,但更经常更重要的用途就是存放操作数在堆栈段内的偏移地址。

SI(SourceIndex)称为源变址寄存器。

SI存放源串在数据段内的偏移地址。

DI(DestinationIndex)称为目的变址寄存器。

DI存放目的串在附加数据段内的偏移地址。

(3)段寄存器:

用于存放段地址

CS(CodeSegment)称为代码段寄存器,用来存储程序当前使用的代码段的段地址。

CS的内容左移4位再加上指令指针寄存器IP的内容就就是下一条要读取的指令在存储器中的物理地址。

DS(DataSegment)称为数据段寄存器,用来存放程序当前使用的数据段的段地址。

DS的内容左移4位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地址。

SS(StackSegment)称为堆栈段寄存器,用来存放程序当前所使用的堆栈段的段地址。

堆栈就是存储器中开辟的按“先进后出”原则组织的一个特殊存储区,主要用于调用子程序或执行中断服务程序时保护断点与现场。

ES(ExtraSegment)称为附加数据段寄存器,用来存放程序当前使用的附加数据段的段地址。

附加数据段用来存放字符串操作时的目的字符串。

(4)控制寄存器

IP(InstmcdonPointer)称为指令指针寄存器,用来存放下一条要读取的指令在代码段内的偏移地址。

用户程序不能直接访问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(CarryFlag)—进位标志位。

当进行加减运算时,若最高位发生进位或借位,则CF为1,否则为0。

该标志位通常用于判断无符号数运算结果就是否超出了计算机所能表示的无符号数的范围。

PF(ParityFlag)—奇偶标志位。

当指令执行结果的低8位中含有偶数个1时,PF为1,否则为0。

AF(AuxiliaryFlag)—辅助进位标志位。

当执行一条加法或减法运算指令时,若结果的低字节的低4位向高4位有进位或借位,则AF为1,否则为0。

ZF(ZeroFlag)—零标志位。

若当前的运算结果为0,则ZF为1,否则为00

SF(SignFlag)—符号标志位。

当运算结果的最高位为1时,SF=1,否则为00

OF(OverflowFlag)—溢出标志位。

当运算结果超出了带符号数所能表示的数值范围,即溢出时,OF=1,否则为0。

该标志位通常用来判断带符号数运算结果就是否溢出o

(2)控制标志位:

用来控制CPU的操作,由程序设置或清除。

它们就是:

TF(TrapFlag)—跟踪(陷阱)标志位。

它就是为测试程序的方便而设置的。

若将TF置1,8086/8088CPU处于单步工作方式,否则,将正常执行程序。

IP(InterruptFlag)—中断允许标志位。

它就是用来控制可屏蔽中断的控制标志位。

若用STI指令将IF置1,表示允许CPU接受外部从INTR引脚上发来的可屏蔽中断请求信号;若用CLI指令将IP清0,则禁止CPU接受可屏蔽中断请求信号。

IF的状态对非屏蔽中断及内部中断没有影响。

DF(DirectionFlag)—方向标志位。

若用STD将DF置1,串操作按减地址方式进行,也就就是说,从高地址开始,每操作一次地址自动递减;若用CLD将DF清0,则串操作按增地址方式进行,即每操作一次地址自动递增。

5.8086/8088CPU的地址总线有多少位?

其寻址范围就是多少?

答:

8086/8088地址总线有20根,寻址范围1MB

6.什么叫指令队列?

8086/8088CPU中指令队列有什么作用?

其长度分别就是多少?

答:

(1)指令队列:

采用“先进先出”原则,按顺序存放预执行指令的缓冲器称为指令队列。

(2)指令队列的作用:

存放EU将要执行的指令,使CPU的取指与执行指令能并行工作。

(3)指令队列的长度:

8086为6个字节,8088为4个字节。

7.Intel8086与8088有何区别?

答:

8086与8088的区别有三处:

(1)外部数据总线位数不同(即地址/数据分时复用引脚条数不同);

8086为16位:

AD15~AD0。

8088为8位:

AD7~AD0。

(2)内部指令队列缓冲器长度不同;

8086有6个字节。

当指令队列出现2个空字节时,BIU将取指补充。

8086有4个字节。

当指令队列出现1个空字节时,BIU将取指补充。

(3)外部某些控制总线定义不同。

①8086的28号引脚定义为M/IO(S2),8088定义为IO/M(S2)

②8086的34号引脚定义为BHE/S7,8088定义为SS0/(HIGH)

8.简述8086CPU使用地址锁存信号ALE将地址A15~A0与数据D15~D0分开的工作原理。

答:

在任何一个总线周期的T1状态,ALE均为高电平,以表示当前地址/数据复用线上的输出的就是地址信息,在ALE由高变低的下降沿时把地址装入地址锁存器,而在T2、T3与T4状态,ALE均为低电平,以表示当前地址/数据复用线上的输出的就是数据信息,此时通过数据收发器进行传送。

9.什么就是逻辑地址?

什么就是物理地址?

若已知逻辑地址为BA00:

A800,试求物理地址。

答:

逻辑地址:

由段地址与偏移地址表示的存储单元地址称为逻辑地址。

物理地址:

CPU对存储器进行访问时实际所使用的20位地址称为物理地址。

若逻辑地址为BA00H:

A800H

则物理地址=BA00H×10H+A800H=C4800H

10.简述堆栈指针寄存器SP的功能及堆栈的操作过程。

答:

(1)SP的功能:

指示进栈与出栈操作时的偏移地址。

(2)堆栈的操作过程:

进栈时,先将SP-2,再将数据压入堆栈(即先移后入);出栈时,先将数据弹出堆栈,再将SP+2(即先出后移)。

第四章80X86指令系统

1、指出源操作数的寻址方式

⑴MOVBX,2000H;立即数寻址⑵MOVBX,[2000H];直接寻址

⑶MOVBX,[SI];寄存器间接寻址⑷MOVBX,[SI+2000H];寄存器相对寻址

⑸MOV[BX+SI],AL;寄存器寻址⑹ADDAX,[BX+DI+80];基址变址相对寻址

⑺MULBL;寄存器寻址⑻JMPBX;段内间接寻址

⑼INAL,DX;端口间接寻址⑽INCWORDPTR[BP+10H];寄存器相对寻址

⑾MOVCL,LENGTHVAR;立即数寻址⑿MOVBL,OFFSETVAR1;立即数寻址

2、指出下列指令就是否正确

(1)MOVDS,0100H;错误。

源操作数就是立即数时,目的操作数不能时段寄存器

(2)MOVBP,AL;错误。

操作数类型不一致

(3)XCHGAH,AL;正确。

(4)OUT310H,AL;错误。

端口直接寻址的范围应在0~FFH之间

(5)MOVBX,[BX];正确。

(6)MOVES:

[BX+DI],AX;正确。

(7)MOVAX,[SI+DI];错误。

存储器寻址中有效地址不能由两个变址寄存器组成

(8)MOVSS:

[BX+SI+100H],BX;正确。

(9)ANDAX,BL;错误。

操作数类型不一致

(10)MOVDX,DS:

[BP];正确。

(11)ADD[SI],20H;错误。

用PTR说明类型

(12)MOV30H,AL;错误。

目的操作数不能为立即数

(13)PUSH2000H;错误。

堆栈指令的操作数不能就是立即数

(14)MOV[SI],[2000H];错误。

两个操作数不能同时为存储器操作数

(15)MOVSI,AL;错误。

操作数类型不一致

(16)ADD[2000H],20H;错误。

用PTR说明类型

(17)MOVCS,AX;错误。

目的操作数不能为代码段寄存器

(18)INC[DI];错误。

需用PTR说明类型

(19)OUTBX,AL;错误。

端口间接寻址的寄存器只能就是DX寄存器

(20)SHLBX,3;错误。

移位次数大于1时应该用CL寄存器

(21)XCHGCX,DS;错误。

交换指令中不能出现段寄存器

(22)POPAL;错误。

堆栈指令的操作数只能就是字操作数(即16位操作数)

3、写出存储器操作数物理地址的计算表达式

(1)MOVAL,[DI];(DS)×10H+(DI)

(2)MOVAX,[BX+SI];(DS)×10H+(BX)+(SI)

(3)MOV5[BX+DI],AL;(DS)×10H+(BX)+(DI)+5

(4)ADDAL,ES:

[BX];(ES)×10H+(BX)

(5)SUBAX,[1000H];(DS)×10H+1000H

(6)ADCAX,[BX+DI+2000H];(DS)×10H+(BX)+(DI)+2000H

(7)MOVCX,[BP+SI];(SS)×10H+(BP)+(SI)

(8)INCBYTEPTR[DI];(DS)×10H+(DI)

4、若(DS)=3000H,(BX)=2000H,(SI)=0100H,(ES)=4000H,计算下列存储器操作数的物理地址。

(1)(DS)×10H+(BX)=3000H×10H+2000H=32000H

(2)(DS)×10H+(BX)+(SI)+1000H=3000H×10H+2000H+0100H+1000H=33100H

(3)(DS)×10H+(BX)+(SI)=3000H×10H+2000H+0100H=32100H

(4)(ES)×10H+(BX)=4000H×10H+2000H=42000H

5、若(CS)=E000H,说明代码段可寻址物理存储空间的范围。

∵最小物理地址为:

(CS)×10H+0000H=E0000H

最大物理地址为:

(CS)×10H+FFFFH=EFFFFH

∴代码段可寻址物理存储空间的范围就是:

E0000H~EFFFFH

6、设(SP)=2000H,(AX)=3000H,(BX)=5000H,执行下列程序段后,(SP)=?

(AX)=?

(BX)=?

PUSHAX

PUSHBX

POPAX

(SP)=1FFEH,(AX)=5000H,(BX)=5000H

7、试比较SUBAL,09H与CMPAL,09H这两条指令的异同。

若(AL)=08H,分别执行上述两条指令后,(AL)=?

CF=?

OF=0,ZF=?

(1)相同点:

两条指令都能完成(AL)-09H的功能,并且都影响六个状态标志位;

不同点:

SUB指令将运算结果回送到AL寄存器中,而CMP指令不回送。

(2)SUBAL,09H;(AL)=FFH,CF=1,OF=0,ZF=0

CMPAL,09H;(AL)=08H,CF=1,OF=0,ZF=0

8、分别执行下列指令,试求AL的内容及各状态标志位的状态。

(1)MOVAL,19H;

ADDAL,61H;(AL)=7AHOF=0SF=0ZF=0AF=0PF=0CF=0

(2)MOVAL,19H;

SUBAL,61H;(AL)=B8HOF=0SF=1ZF=0AF=0PF=1CF=1

(3)MOVAL,5DH;

ADDAL,0C6H;(AL)=23HOF=0SF=0ZF=0AF=1PF=0CF=1

(4)MOVAL,7EH;

SUBAL,95H;(AL)=E9HOF=1SF=1ZF=0AF=0PF=0CF=1

9、用最少的指令,实现下述要求的功能。

(1)AH的高4位清零。

ANDAH,0FH

(2)AL的高4位去反。

XORAH,0F0H

(3)AL的高4位移到低4位,高4位清0。

MOVCL,4

SHRAL,CL

(4)AL的低4位移到高4位,低4位清0。

MOVCL,4

SHLAL,CL

10、设(BX)=6D16H,(AX)=1100H,写出下列三条指令执行后,AX与BX寄存器中的内容。

MOVCL,06H

ROLAX,CL

SHRBX,CL(AX)=4004H(BX)=01B4H

11、设初值(AX)=0119H,执行下列程序段后,(AX)=?

MOVCH,AH

ADDAL,AH

DAA

XCHGAL,CH

ADCAL,34H

DAA

MOVAH,AL

MOVAL,CH(AX)=3520H

12、指出下列程序段的功能。

(1)MOVCX,10

LEASI,First

LEADI,Second

REPMOVSB将First串中前10个字符传送至Second中

(2)CLD

LEADI,[0404H]

MOVCX,0080H

XORAX,AX

REPSTOSW将起始地址为0404H开始的80H个单元置成0

13、设(BX)=6F30H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246H)=4154H,试求执行XCHGBX,[BP+SI]后,(BX)=?

(2F246H)=?

(BX)=4154H(2F246H)=6F30H

14、设(BX)=0400H,(DI)=003CH,执行LEABX,[BX+DI+0F62H]后,(BX)=?

(BX)=139EH

15、设(DS)=C000H,(C0010H)=0180H,(C0012H)=2000H,执行LDSSI,[10H]后,(SI)=?

(DS)=?

(SI)=0180H,(DS)=2000H

16、已知(DS)=091DH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,(09226H)=00F6H,(09228H)=1E40H,试求单独执行下列指令后的结果。

(1)MOVCL,20H[BX][SI];(CL)=0F6H

(2)MOV[BP][DI],CX;(1E4F6H)=5678H

(3)LEABX,20H[BX][SI];(BX)=0056H

MOVAX,2[BX];(AX)=1E40H

(4)LDSSI,[BP][D

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1