1、第1章 微型计算机系统概述习题1.3微型计算机主要由哪些基本部件组成?各部件的主要功能是什么?解答微机主要有存储器、I/O设备和I/O接口、CPU、系统总线、操作系统和应用软件组成,各部分功能如下:CPU:统一协调和控制系统中的各个部件系统总线:传送信息存储器:存放程序和数据I/O设备:实现微机的输入输出功能I/O接口:I/O设备与CPU的桥梁操作系统:管理系统所有的软硬件资源习题1.10简述计算机中“数”和“码”的区别,计算机中常用的数制和码制各有哪些?解答(1)数用来直接表征量的大小,包括:定点数、浮点数。 (2)码用来指代某个事物或事物的某种状态属性,包括:二进制、八进制、 十进制,十六
2、进制 区别:使用场合不同,详见P16.习题1.12请写出与数据37和37对应的8位机器数原码、反码、补码和移码,并分别用二进制和十六进制表示出来。解答 原码 反码 补码 +37 00100101/25H 00100101/25H 00100101/25H -37 10100101/A5H 11011010/DAH 11011011/DBH习题1.13请将上题中37和37的8位补码机器数分别扩充为16位和32位的形式,用十六进制表示出来。解答 +37 -3716位 32位 16位 32位00 25H00 00 00 25HFF 5BHFF FF FF 5BH第2章 微处理器指令系统 习题2.1微
3、处理器内部具有哪3个基本部分?8088分为哪两大功能部件?其各自的 主要功能是什么? 解答算术逻辑单元ALU、寄存器组和控制器; 总线接口单元BIU:管理8088与系统总线的接口负责cpu对接口和外设进行访问 执行单元EU:负责指令译码、执行和数据运算; 8位CPU在指令译码前必须等待取指令操作的完成,8088中需要译码的指令已经 取到了指令队列,不需要等待取指令。而取指令是CPU最为频繁的操作,因此8088的结构和操作方式节省了大量等待时间,比8位CPU节省了时间,提高了性能。习题2.2说明8088的8个8位和8个16位通用寄存器各是什么?解答8个8位寄存器:AH、AL、BH、BL、CH、C
4、L、DH、DL; 8个16位寄存器:累加器AX、基址寄存器BX、计数器CX、数据寄存器DX、源地 址寄存器SI、目的地址寄存器DI、基址指针BP、堆栈指针SP。习题2.3什么是标志?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。解答)标志用于反映指令执行结果或者控制指令执行形式。 状态标志用于记录程序运行结果的状态信息; 控制标志用于控制指令执行的形式。OF-溢出标志,若算术运算的结果有溢出,则OF1;否则 OF0DF-方向标志IF-中断允许标志TF-陷阱标志SF-符号标志ZF-零标志,若运算结果为0,则ZF = 1;否则ZF = 0AF-辅助进位标志PF-
5、奇偶标志CF-进位标志,当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置为1,即CF = 1;否则CF = 0。 习题2.5什么是8088中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?1MB最多能分成多少个逻辑段?请将如下逻辑地址用物理地址表达: FFFFH:0 40H:17H 2000H:4500H B821H:4567H解答 . 物理地址:物理存储单元具有的一个唯一的20位编号n 逻辑地址:在8088内部和用户编程时,所采用的“段地址:偏移地址”形式n 将逻辑地址中的段地址左移二进制4位(对应16进制是一位,即乘以16),加上偏 移地址就得到20位物理地址n 1MB最
6、多能分成1MB16B22024216个逻辑段,因为每隔16个字节单元就可以开始一个逻辑段 FFFFH:0FFFF0H 40H:17H00417H 2000H:4500H24500H B821H:4567HBC777H习题2.7什么是有效地址EA?8088的操作数如果在主存中,有哪些寻址方式可以存取它?解答8088的存储空间分段管理,程序设计时采用逻辑地址。由于段地址在默认的或指定的段寄存器中,所以只需要偏移地址,称为有效地址EA.操作数在主存中有以下几种寻址方式:直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址。习题2.8已知DS2000H、BX0100H、SI0002
7、H,存储单元20100H20103H依次存放12H、34H、56H、78H,21200H21203H依次存放2AH、4CH、B7H、65H,说明下列每条指令执行完后AX寄存器的内容,以及源操作数的寻址方式? mov ax,1200h mov ax,bx mov ax,1200h mov ax,bx mov ax,bx+1100h mov ax,bx+si mov ax,bxsi+1100h解答 mov ax,1200h ;AX1200H,立即数寻址 mov ax,bx ;AX0100H,寄存器寻址 mov ax,1200h ;AX4C2AH,直接寻址 mov ax,bx ;AX3412H,寄存
8、器间接寻址 mov ax,bx+1100h ;AX4C2AH,寄存器相对寻址 mov ax,bx+si ;AX7856H, 基址变址寻址 mov ax,bxsi+1100h ;AX65B7H,相对基址变址寻址习题2.11给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:mov al,89hadd al,aladd al,9dhcmp al,0bchsub al,aldec alinc al解答 mov al,89h;AL89H CFZFSFOFPF add al,al ;AL12H 10011 add al,9dh;AL0AFH 00101 cmp al,0bch;AL0A
9、FH 10101 sub al,al ;AL00H 01001 dec al ;AL0FFH 00101 inc al ;AL00H 01001习题2.13设X、Y、Z、V均为16位带符号数,分别装在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。mov ax,Ximul Ymov cx,axmox bx,dxmov ax,Zcwdadd cx,axadc bx,dxsub cx,540sbb bx,0mov ax,Vcwdsub ax,cxsbb dx,bxidiv X解答: V(X + Z 540) / X习题2.18如下是一段软件延时程序,请问NOP指
10、令执行了多少次?xor cx,cxdelay:noploop delay解答:FFFFH-0001H=216-1=65535次 (若将“xor cx,cx”改为“mov cx,0”,则为0次)第3章 汇编语言程序设计12简化段定义格式的源程序框架 .model small.stack.data .codestart: mov ax,data mov ds,ax mov ax,4c00h int 21hend start完整段定义格式的源程序框架stacksegment stack db 1024 dup(0)stackendsdata segment . ;在数据段定义数据data endsc
11、ode segment code assume cs:code,ds:data,ss:stackstart: mov ax,data mov ds,ax . ;在代码段填入指令序列 mov ax,4c00h int 21h . ;子程序代码code ends end start习题3.13名字和标号有什么属性?解答:包括逻辑地址-名字和标号对应存储单元的逻辑地址,含有段地址和偏移地址。 类型-标号、子程序名的类型可以是NEAR(近)和FAR(远),分别表示段内或段间 变量名的类型可以是BYTE(字节)、WORD(字)和DWORD(双字)等。第章微处理器的外部特性习题4.18088一共有 20
12、根地址线。在访问内存时它所使用的地址线是A0A19,可直接寻址 1MB 的内存空间;在访问外设时它所使用地址线是A0A15 ,共能寻址 64K 个输入输出端口。实际上,PC/XT在寻址外设时,只使用地址线 A0A9若A91,说明它要寻址的I/O端口位于 I/O通道 。习题4.2总线操作指的是 发生在总线上的某些特定的操作 ,总线周期指的是 CPU通过总线操作与外界(存储器和I/O端口)进行一次数据交换的过程(时间) ,对8088引脚信号来说,其典型的总线周期由 4 个T状态组成。如果8088的CLK引脚接5MHz的时钟信号,那么每个T状态的持续时间为 200ns 。习题4.4在8088的工作过
13、程中,什么情况下会产生TW?具体发生在什么时刻?解答n当8088进行读写存储器或I/O接口时,如果存储器或I/O接口无法满足CPU的读写时序(来不及提供或读取数据时),需要CPU插入等待状态Tw。n在读写总线周期的T3和T4之间插入Tw。习题4.9以最小组态下的I/O读为例,说明在T2T4期间,8088 CPU和I/O端口的工作表现。解答:习题4.11在最小组态下,当8088在进行存储器读、存储器写、输入和输出操作时,其引脚信号、和的有效状态各是什么情况? 解答:第章存储器系统习题5.2在半导体存储器中,RAM指的是 随机存取存储器,它可读可写,但断电后信息一般会 丢失 ;而ROM指的是 只读
14、存储器 ,正常工作时只能从中 读取 信息,但断电后信息 不会丢失 。以EPROM芯片2764为例,其存储容量为8K8位,共有 8 条数据线、 13 条地址线。用它组成64KB的ROM存储区共需 8 片芯片。习题5.4一个容量为4K4位的假想RAM存储芯片,它应该有多少个地址引脚和多少个数据引脚?如果让你来进行设计,那么需要安排哪些控制引脚?这些引脚分别起什么样的控制作用?解答n(非双译码设计,即单译码设计时)应该有12根地址线引脚,以及4根数据线引脚n 控制引脚:n 读取信号OE*:有效时,表示读取存储单元的数据n 写入信号WE*:有效时,表示将数据写入存储单元n 片选信号CS*:有效时,表示
15、选中该芯片,可以进行读写操作习题5.7什么是存储芯片连接中的“位扩充”和“地址扩充”?采用静态RAM芯片2114(1K4位)或动态RAM芯片4116(16K1位)来组成32KB的RAM存储区,请问各需要多少芯片?在位方向和地址方向上各需要进行什么样的扩充? 解答n位扩充存储器芯片数据位数小于主机数据线数时,利用多个存储器芯片在数据“位”方向的扩充;n 地址扩充(字扩充)当一个存储器芯片不能满足系统存储容量时,利用多个存储器芯片在“地址”方向的扩充n 组成32KB存储空间,用SRAM 2114(1K4)需要64个芯片;n 组成32KB存储空间,用DRAM 4116(16K1)需要16个芯片;n
16、它们都需要进行位扩充和地址扩充第章输入输出及接口习题6.1在80x86系统中,I/O口的地址采用I/O端口独立编址方式,访问端口时要使用专门的I/O(输入输出)指令,有 2 种寻址方式,其具体形式是:直接寻址和通过DX间接寻址。习题6.2一般的I/O接口电路安排有哪三类寄存器?它们各自的作用是什么?解答(1)数据寄存器n保存外设给CPU和CPU发往外设的数据(2)状态寄存器n保存外设或接口电路的状态()控制寄存器n保存CPU给外设或接口电路的命令习题6.简述与外设进行数据交换的几种常用方式。解答:习题6.8什么是中断源?为什么要安排中断优先级?什么是中断嵌套?什么情况下程序会发生中断嵌套?解答
17、 中断源:计算机系统中引起中断的事件或原因 当多个中断源同时请求时,CPU需要利用中断优先权决定首先响应哪一个;当一个中断正在服务时,又发生了新的中断请求,CPU需要利用中断优先权确定后者是否优先权更高,以便实现中断嵌套 中断嵌套:当一个中断服务时CPU又响应新的中断请求就形成中断嵌套 CPU允许中断(开中断)、新的中断请求比正在服务的中断优先权更高,通常发生中断嵌套第章 中断控制接口习题8.18088 CPU具有哪些中断类型?各种中断如何产生,如何得到中断向量号?解答:内(软)中断、外(硬)中断,具体如下:n 除法错中断:在执行除法指令时,除数为0或商超过了寄存器所能表达的范围产生n 指令中
18、断:在执行中断指令INT n时产生n 溢出中断:在执行溢出中断指令INTO时,溢出标志OF为1产生n 单步中断:单步标志TF为1,在每条指令执行结束后产生n 非屏蔽中断:外部通过NMI请求信号向微处理器提出请求时产生n 可屏蔽中断:外部通过INTR请求信号向微处理器提出请求,并在允许可屏蔽中断的条件下产生解答:n 除法错中断、溢出中断、单步中断、非屏蔽中断的向量号是8086微处理器内部已经确定n 指令中断的操作数n就是向量号n可屏蔽中断的向量号在响应中断时通过数据总线从外部获得习题8.28088中断向量表的作用是什么?解答:中断向量表是一种表数据结构。是中断向量号与对应中断服务程序之间的连接表
19、。习题8.5PC/XT机的ROM-BIOS对8259A的初始化程序如下:mov al,13hout 20h,almov al,08hout 21h,almov al,09hout 21h,al请说明其设定的工作方式。解答mov al, 13h;13H = 0001 0011,设定工作方式:单片,边沿触发,要写入ICW4out 20h, al;写入ICW1:主(单)片地址是20H(参见表8-1)mov al, 08h;08H =0000 1000,设定主(单)片IR0的中断向量号为08Hout 21h, al;写入ICW2:地址参见表8-1mov al, 09h;09H=0000 1001,设定
20、为16位80x86CPU、非自动中断结束、;该片8259A是从片(按教材是“从”片,个人认为应该是“主片”)、;8259A数据线采用缓冲方式、8259A工作于普通全嵌套方式out 21h, al;写入ICW4:地址参见表8-1习题8.8某一8086CPU系统中,采用一片8259A进行中断管理。设定8259A工作在普通全嵌套方式,发送EOI命令结束中断,采用边沿触发方式请求中断,IR0对应的中断向量号为90H。另外,8259A在系统中的I/O地址是FFDCH(A0=0)和FFDEH(A0=1)。请编写8259A的初始化程序段。解答MOVDX, 0FFDC H; 地址参考教材表8-1MOVAL,
21、00010011 ; 参见教材图8-7OUTDX,AL; MOVDX, 0FFDE H; 地址参考教材表8-1MOV AL, 10001000 ; 参见教材图8-7、204/205页例程OUT DX,AL;MOV AL, 00000111 ; 参见教材图8-7OUT DX,AL;第章定时计数控制接口习题9.38253每个通道有_种工作方式可供选择。若设定某通道为方式0后,其输出引脚为 低 电平;当 写入计数初值(并进入减1计数器) 后通道开始计数, CLK 信号端每来一个脉冲 减1计数器 就减1;当 计数器减为0 ,则输出引脚输出 高 电平,表示计数结束。8253的CLK0接1.5MHz的时钟
22、,欲使OUT0产生频率为300KHz的方波信号,则8253的计数值应为 5(1.5MHz300KHz) ,应选用的工作方式是 3 。习题9.4试按如下要求分别编写8253的初始化程序,已知8253的计数器02和控制字I/O地址依次为204H207H。 使计数器1工作在方式0,仅用8位二进制计数,计数初值为128。 使计数器0工作在方式1,按BCD码计数,计数值为3000。 使计数器2工作在方式2,计数值为02F0H。解答为便于理解,在语句后面加了注释。真正答题时不需要写注释;写入方式控制字MOVAL, 50 H;50H = 0101 0000 ,参考图9-9MOVDX, 207 H;地址参考表
23、9-1OUTDX,AL;写入方式控制字;写入计数初值MOVAL, 128 ;80H:计数初值MOVDX, 205 H;计数器 1 的地址参考表9-1OUTDX,AL;向计数器 1 写入初值;写入方式控制字MOVAL,33 H;33H = 0011 0011 ,先低后高写入十进制计数初值MOVDX,207 H;地址参考表9-1OUTDX,AL;写入方式控制字。参考图9-9;写入计数初值MOVDX,204 H;计数器 0 的地址参考表9-1MOVAX,3000 H;不是3000,而是BCD码形式的十进制数OUTDX,AL;向计数器 0 写入计数初值的低字节MOVAL,AH; OUTDX,AL;向计
24、数器 0 写入计数初值的高字节;写入方式控制字MOVAL, 0B4 H;B4H = 1011 0100 ,先低后高写入二进制计数初值MOVDX, 207 H;地址参考表9-1OUTDX,AL;写入方式控制字;写入计数初值MOVDX, 206 H;计数器 2 的地址参考表9-1MOVAX, 02F0 H;OUTDX,AL;向计数器 2 写入计数初值的低字节MOVAL,AHOUTDX,AL;向计数器 2 写入计数初值的高字节习题9.5设8253计数器02和控制字的I/O地址依次为F8HFBH,说明如下程序的作用。mov al, 33hout 0fbh, almov al, 80hout 0f8h,
25、 almov al, 50hout 0f8h, al解答;设置计数器0采用工作方式1,先低后高写入计数值;BCD码十进制计数MOVAL,33H;33H = 0011 0011OUT0FBH,AL;计数值为5080MOVAL,80HOUT0F8H,AL;-;MOVAL,50HOUT0F8H,AL总结:计数器0采用工作方式1,计数初值为十进制5080(BCD码形式),先低后高写入计数初值习题9.6PC机是如何应用8253每个通道的?解答n 计数器0每隔55ms产生一个IRQ0中断请求n 计数器1每隔15s产生一个DRAM刷新请求n 计数器2控制扬声器音调第章 并行接口习题11.4设定8255A的口
26、A为方式1输入,口B为方式1输出,则读取口C的数据的各位是什么含义?解答参见教材图11-8口C 的各个引脚口A为方式1输入,且口B为方式1输出时口C 的各个引脚被用作 PC7I/O引脚PC6I/O引脚PC5IBFA引脚PC4INTEA(STBA)引脚PC3INTRA引脚PC2INTEB(ACKB)引脚PC1IBFB引脚PC0INTRB引脚注:PC4INTEA(STBA)引脚和PC2INTEB(ACKB)引脚中,括号内的注释可参见教材248页 “(2)选通输出方式”上面的那一段的讲解,以及图11-3、图11-4、图11-8习题11.5对8255A的控制寄存器写入B0H,则其端口C的PC5引脚是什么作用的信号线?解答n方式控制字为B0H1 0110 000B,说明A组为方式1输入,它将征用PC5引脚作为输入缓冲器满信号IBFA