微型计算机原理与接口技术(第5版)课后答案及问题墙

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

微型计算机原理与接口技术(第5版)课后答案及问题墙第一章绪论{崔文韬问}:课后习题第一题,二进制数与十进制数转换。{崔文韬答}:11001010B=202D,00111101B=61D,01001101B=77D,10100100B=164D。{崔文韬问}:课后习题第二题,16进制数与十进制数转换。{崔文韬答}:12CH=300D,0FFH=255,3A8DH=14989D,5BEH=1470D{崔文韬问}:课后习题第三题,十进制数转化为二进制数和16进制数。{杨艺答}:25D=19H=00011001B,76D=4CH=01001100B,128D=100H=0000000100000000B,134D=106H=0000000100000110B{杨艺答}:128D=80H=10000000B,134D=86H=10000110B{崔文韬问}:课后习题第四题,写出10进制数的BCD码{杨艺答}:327D=(001100100111)BCD,1256D=(0001001101010110)BCD{杨艺答}:1256D=(0001001001010110)BCD{崔文韬问}:英文单词About的ASCII码{沙猛答}:3935H{王金鑫改}:41H,62H,6FH,75H,74H{崔文韬问}:数字95的ASCII码{王金鑫答}:39H,35H{崔文韬问}:课后习题第六题:10进制数的原码、补码、反码{杨艺答}:【+42】原=00101010B=【+42】反=【+42】补【-42】原=10101010B,【-42】反=11010101B,【-42】补=11010110B【+85】原=01010101B=【+85】反=【+85】补【-85】原=11010101B,【-85】反=10101010B,【-85】补=10101011B{崔文韬问}:机器语言或者机器码(MachineCode),汇编语言(AssembleLanguage),高级语言的定义{沙猛答}:机器码:计算机只认得二进制数码,计算机中的所有指令都必须用二进制表示,这种用二进制表示的指令称为机器码。汇编语言:用助记符来代替二进制的机器码的符号语言高级语言:相对于机器语言,接近人们使用习惯的程序设计语言。{崔文韬问}:课后习题第10题{崔文韬答}:参考课本16页图1.4{崔文韬问}:课后习题第11题{崔文韬答}:参考课本11页图1.2{杨艺答}:微处理器、存储器、I/O接口,I/O设备和总线。6{崔文韬问}:课后习题第12题{崔文韬答}:ALU:ArithmeticLogicUnit,CPU:CentralProcessingUnit,PC:PersonalComputer,DOS:DiskOperationSystem{崔文韬问}:8086和80386各有多少根地址线,可直接寻址的内存空间是多少,他们的数据线各有多少根?{杨艺答}:8086有20根地址线A19~A0,可直接寻址的内存空间是2^20个字节单元,有16根数据线;80386有32根地址线,可直接寻址的内存空间是2^32个字节单元,有32根数据线。{崔文韬问}:什么是二进制编码,常用的二进制编码有哪两种?{杨艺答}:采用若干特定的二进制码的组合来表示各种数字、英文字母、运算符号等的编码方式叫做二进制编码,常见的二进制编码有BCD码和ASCII码两种。{崔文韬问}:解释位,字节,字,字长的含义?{沙猛答}:位bit:计算机中二进制数的每一位0或1是组成二进制信息的最小单位,称为位。字节byte:8个二进制信息组成的一个单位称为一个字节,1Byte=8Bits。字word:由16位二进制数即两个字节组成。字长wordlength:决定计算机内部一次可以处理的二进制代码位数。{刘玉年问}:存在计算机中的数都是以有符号数存储的,还是以无符号数存储的呢?{崔文韬答}:刘玉年同学,你能先自己尝试回答一下这个问题,或者说你自己的理解是什么?{刘玉年答}:应该是两者都不是吧,因为在运算的时候仅仅就是二进制数的运算,而判断结果的意义(是什么样的数)是通过标志为判断的。{崔文韬答}:两者都不是,存储器中数据的含义是完全由编程人员决定的。计算机只接收二进制数据,即01序列。至于原始数据是什么以及如何转化为二进制数据,都是由编程人员决定的。计算机对所存储数据按照二进制计算法则进行运算,为适应有符号数和无符号数运算两种情况,通过设置标志位来计算结果在两种情况下的意义。第二章8086CPU{崔文韬问}:8086/8088可直接寻址多少内存(字节)单元?多少IO端口?外部数据线各有多少?{董国福答}:8086/8088可直接寻址1MB内存空间;可以访问64K个I/O端口;但外部数据总线8086有16根,8088有8根。{崔文韬问}:8086CPU内部由那两部分组成?{俞楠答}:8086CPU由总线接口单元(BIU)和指令执行单元(EU)两部分组成。{崔文韬问}:EU,BIU,AX,BX,CX,DX,DS,CS,ES,SS,SP,BP,DI,SI全称?{董国福答}:EU:ExecutionUnitBIU:BusInterfaceUnitAX:AccumulatorBX:BaseCX:CountDX:DataDS:DataSegmentCS:CodeSegmentES:ExtraSegmentSS:StackSegmentSP:StackPointerBP:BasePointerDI:DestinationIndexSI:SourceIndex{崔文韬问}:8086CPU内部包含哪些寄存器?各有什么用途?{俞楠答}:1.数据寄存器:用来存放16位数据信息或地址信息。2.地址指针和变址寄存器:SP,BP,SI,DI这组地址指针个变址寄存器加上基址寄存器BX,可与段寄存器配合使用,一起构成内存的物理地址。(数据寄存器和地址指针和变址寄存器则被称为通用寄存器。)(段基地址和段内偏移地址Offset组合起来就可形成20位物理地址)5.标志寄存器:6个状态标志CF,PF,AF,ZF,SF,OF用来表示指令执行后的结果或状态特征,根据这些特征,由转移指令控制程序的走向。3个控制标志,TF,IF,DF,可以根据需要用程序设置或清除。{崔文韬问}:带符号数10110100B和11000111B相加,各标志位为多少?哪些标志位有意义?如果作为无符号数相加,各标志位为多少?哪些标志位有意义?{崔文韬答}:二进制数所有位都参与运算10110100+11000111101111011OFSFZFAFPFCF100011程序员将该数看做有符号数,因此SF,OF,ZF,PF有意义。如果将该数看做无符号数,计算过程一样,标志位结果相同,CF,ZF,PF有意义。利用debug程序验证结果:运行dosbox,输入debug,r命令查看初始寄存器数值,a命令输入汇编指令,t命令执行查看结果,过程如下图所示:debug中,flags中的NV,UP等表示什么含义,请查看百度网盘中共享的debug教程,下图为该教程中的截图:{崔文韬问}:课后习题第七题,段地址:偏移地址与物理地址的关系(原理在书中31-32页){俞楠答}:20位的物理地址=段基地址*16+16位的偏移量1200H*16+3500H=15500H(1200H*16等同于把1200H左移一位地址变成12000H,下面同理)FF00H*16+0458H=FF458H3A60H*16+0100H=3A700H{崔文韬问}:CS:IP=3456:0210,CPU要执行的下条指令的物理地址为多少?{俞楠答}:3456H*16+0210H=33770H曲洋答:34770H{崔文韬问}:课后习题十一题,SS:SP=2000,0300H,堆栈在内存当中的物理地址范围是多少?执行两条PUSH指令后,SS:SP=?再执行一条PUSH指令后,SS:SP=?{俞楠答}:物理地址范围:(2000H*16+0):(2000H*16+(0300H))=20000H:20300H执行两条PUSH指令后:SS:SP=2000H:(0300H-4)=2000H:02FCH再执行一条PUSH指令后,SS:SP=2000H:(02FC-2)=2000H:02FAH{刘瑾改}:堆栈在内存当中的物理地址范围为:2000:0000H~2000:(0300H-1){崔文韬问}:课后习题十二题,从存储单元2000H开始存放的字节数据为:3AH,28H,56H,4FH,试画出示意图说明,从2000H和2001H单元开始取出一个字数据各要进行几次操作,取出的数据分别等于多少?{俞楠答}:从2000H中取出一个字数据要进行 一次操作,取出字为283A。从2001H中取出一个字数据要进行 两次操作,取出字为5628。{罗小东补充}:如下表,如果从2000H取出一个字数据,则执行一次操作直接取出一个字283AH如果从2001H开始取出一个字数据,则需进行两次操作,分别是——先从2000H单元开始读取一个字283AH,取得低字节28H,舍弃3AH;再从2002H单元读取一个字数据,4F56H,取得其高字节56H,然后就可以得到2001H单元开始取出的一个自数据——5628H。原理就是:8086CPU对存储器进行存取操作时,都是从偶地址体开始的。20003A20012820025620034F{罗小东问}:一个含有16个字节数据的变量,它的逻辑地址为1000:0100H,那么该变量的最后一个字节数据的物理地址是____H?(可不可以答案再加点简单分析呀){崔文韬问}:设定SS:SP后形成的堆栈占据一定的物理地址范围,是否可无限次执行PUSH或者POP指令?为什么?{苏子宇答}:堆栈有一定的容量,无限次执行push会超出范围,导致覆盖设定的堆栈空间外的数据,产生栈顶越界现象。堆栈空间是程序员向系统请,系统开辟的安全数据空间,空间外的数据可能具有其他用途,任意改动可能引发错误。8086CPU不提供检测栈顶是否越界的机制。编程时要注意栈顶越界问题,根据可能用到的最大栈空间来安排堆栈大小,防止入栈的数据导致栈顶越界。{刘玉年问}:8086有20根地址总线,可寻址的内存空间是1M,是不是就说8086里面的内存空间就只有1M呢?如果不是这样的,那么多余的地址空间又该如何寻址呢?{崔文韬答}:8086的内存寻址空间真的只有1M,这1M空间分配给内存使用(包含显存,主内存,BIOS的ROM)。8086针对外设的寻址,通过硬件电路另外生成64k的IO地址,供寻址IO接口使用还有啊,如果真的是内存空间的大小m和地址总线的数目n是:m=2^n的关系的话,那么现在的片子运存是4g的话,那要32根地址总线的,相应的地址输入输出端口也要有32个,这是不是又有些浪费?{崔文韬答}:内存空间大小和地址数目的关系就是如此。32根地址线对应4g内存,这个是必须的,不存在浪费问题。第三章8086寻址方式和指令系统{崔文韬问}:习题1中题目,分别说明源操作数和目的操作数各采用的寻址方式1.movax,2408h2.movcl,0ffh3.movbx,[si]4.mov5[bx],bl{沙猛答}:1.立即数,寄存器2.立即数,寄存器3.寄存器间接,寄存器4.寄存器,寄存相对{崔文韬问}:习题1中题目,分别说明源操作数和目的操作数各采用的寻址方式1.mov[bp+100],ax2.mov[bx+di],'$'3.movdx,es:[bx+si]4.movval[bp+di],dx{俞楠答}:1.寄存器寻址,寄存器相对寻址2.立即数寻址,基址变址寻址3.基址变址寻址,寄存器寻址4.寄存器寻址,相对基址变址寻址。{崔文韬问}:习题1中题目,分别说明源操作数和目的操作数各采用的寻址方式1.inal,052.movds,ax{姚胜答}1.寄存器,立即数。2.寄存器,寄存器{崔文韬问}:习题2中题目,已知DS=1000h,bx=0200h,si=02h,内存10200h~10205h的内容分别为10h,2ah,3ch,

1 / 57
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功