1、微机原理及接口技术李干林习题参考解答习题参考解答1.1 什么是微处理器、微型计算机、微型计算机系统? 参考答案:将运算器和控制器集成在一块大规模集成电路芯片上作为中央处理部件,简称为微处理器;以微处理器为核心,再配上存储器、接口电路等芯片,构成微型计算机;微型计算机系统由硬件和软件系统两大部分组成:(1)硬件系统由微型计算机和外设组成的计算机实体;(2)软件系统是指为微型计算机运行的全部技术资料和各种程序,由系统软件和应用软件构成。1.2 什么是微型计算机的三种总线?参考答案:系统总线包含有三种不同功能的总线,即数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线
2、CB(Control Bus)。 “数据总线DB”用于传送数据信息。数据总线是双向三态形式的总线,即他既可以把CPU的数据传送到存储器或IO接口等其它部件,也可以将其它部件的数据传送到CPU。 “地址总线AB”是专门用来传送地址的,由于地址只能从CPU传向外部存储器或IO端口,所以地址总线总是单向三态的。 “控制总线CB”用来传送控制信号和时序信号。1.3 评估微型计算机的主要技术指标有哪些?参考答案:评估微型计算机的主要技术指标有:CPU的字长,决定计算机内部一次可以处理的二进制代码的位数;内存储器容量与速度,内存储器容量是衡量它存储二进制信息量大小的一个重要指标,内存储器的速度用存取周期来
3、衡量;CPU指令执行时间,反映CPU运算速度的快慢;系统总线的传输速率等。1.4 将下列十进制数分别转换为二进制、十六进制数。 35 130 0.625 48.25参考答案: 100011B,23H 0.101B,0.AH 110000.01B,30.4H1.5 将下列二进制数分别转换为十进制、八进制、十六进制数。 101101B 110110.101B 101011.011B参考答案: 45,55Q,2DH 230,346Q,E6H 54.625,66.5Q,36.AH 43.375,53.3Q,2B.6H1.6 写出下列十进制数的原码、反码、补码(分别采用8位二进制和16位二进制表示)。
4、38 120 -50 -89参考答案: 原码、反码、补码:00100110B,0000000000100110B 原码、反码、补码:01111000B,0000000001111000B 1.7 已知补码求出其真值和原码。 21H 93H 45A6H 0DA25H参考答案: 真值:+21H,原码:21H 真值:-6DH,原码:EDH 真值:+45A6H,原码:45A6H 真值:-25DBH,0A5DBH1.8 将下列十进制数转换为压缩和非压缩格式的BCD码。 12 55 147 368参考答案: 00010010B,00000001 00000010B 01010101B,00000101 0
5、0000101B1.9 下列十进制数算术运算,试用8位二进制补码计算,并用十六进制数表示运算结果,判断是否有溢出。 35-45 80+50 -70-60 -20 +(-60)参考答案:各数的补码:35补 = 00100011B,-45补80补 = 01010000B,50补 = 00110010B,-70补补-20补 -70-60=01111110B=-126,结果不正确,有溢出,因为-130超出了8位补码的表示下限-128; 1.10 分别写出下列字符串的ASCII码(十六进制表示)。 3aB8 eF10 +5(0: How are you?参考答案: 2B3528303AH2.1 8086
6、CPU内部由哪两部分组成?它们的主要用途是什么?参考答案:8086CPU内部按功能分执行单元EU和总线接口单元BIU。执行单元的功能:负责指令的执行。同时向BIU输出数据(操作结果),并对寄存器和标志寄存器进行管理。在ALU中进行16位运算,数据传送和处理均在EU控制下进行。总线接口单元的功能:负责从内存或I/O 端口取指令、取操作数和保存运算结果。2.2 8086/8088CPU 有哪些寄存器?各有什么用途?参考答案:8086/8088 CPU 内部有 14 个 16 位的寄存器,按功能可分为:通用寄存器(8个)、段寄存器(4个)和控制寄存器(2个)。通用寄存器组EU中有4个16位的通用寄存
7、器,即数据寄存器 AX、BX、CX、DX。数据寄存器 AX、BX、CX、DX一般用来存放数据,但它们都有各自的特定用途。AX称为累加器,是最常用的寄存器。它常用来存放算术逻辑运算中的操作数,而且一些操作要在 AX 中完成,如乘法操作和除法操作。此外,所有的 I/O 指令都使用累加器与外设端口交换信息。BX称为基址寄存器。它常用来存放操作数在内存中数据段内的基地址。CX称为计数器。在设计循环程序时一般使用该寄存器存放循环次数。DX称为数据寄存器。在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。指针和变址寄存器8
8、086/8088CPU中,有一组4个16位寄存器,它们是基址指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI。这组寄存器存放的内容是某一段地址偏移量,用来形成操作数地址,主要在堆栈操作和变址运算中使用。SP称为堆栈指针寄存器;BP称为基址指针寄存器; SI称为源变址寄存器;DI称为目的变址寄存器。段寄存器 CS、DS、SS、ES8086/8088 有 20 位地址总线,一共可以寻址 1M 的空间。而所有内部寄存器都是16位的,只能直接寻址64KB,因此采用分段技术来解决。将1MB的存储空间分成若干逻辑段,每段最长64KB,这些逻辑段在整个存储空间中可以浮动。8086/8
9、088定义4个独立的逻辑段,分别为:代码段、数据段、堆栈段和附加数据段,将程序代码或数据分别放在这 4 个逻辑段中。每个逻辑段的段地址分别放在对应的段寄存器中,代码或资料在段内的偏移地址由有关寄存器或立即数给出。8086/8088 的 4 个段寄存器: CS称为代码段寄存器,用来存储程序当前使用的代码段的段地址(起始地址)。 DS称为数据段寄存器,用来存放程序当前使用的数据段的段地址。 SS称为堆栈段寄存器,用来存放程序当前所使用的堆栈段的段地址。 ES称为附加数据段寄存器,用来存放程序当前使用的附加数据段的段地址。指令指针寄存器 IPIP称为指令指针寄存器,用来存放预取指令在代码段内的偏移地
10、址。. 标志寄存器FF称为标志寄存器,是一个 16 位的寄存器,其中只用了 9 位。分别为 6 个状态标志位和 3 个控制标志位。2.3 8086/8088CPU 中标志寄存器有几位状态位?有几位控制位?其含义各是什么?参考答案:标志寄存器是一个 16 位的寄存器,其中只用了 9 位。分别为 6 个状态标志位和 3 个控制标志位。 状态标志位状态标志位用来反映算术和逻辑运算结果的一些特征。 CF:进位标志位。当进行加减运算时,若最高位发生进位或借位则CF1,否则 CF0。 PF:奇偶标志位。当运算结果的低 8 位中含有偶数个 1 时,PF1,否则 PF0。 AF:辅助进位标志位。加法或减法运算
11、时,若结果的低字节的低 4位向高 4 位有进位或借位,则 AF1;否则 AF0。 ZF:零标志位。若当前的运算结果为 0,则 ZF1;否则 ZF0。 SF:符号标志位。与运算结果的最高位相同,当运算结果的最高位为 1时,SF=1;否则为 0。 OF:溢出标志位。当运算结果超出了带符号数的范围,即溢出时,OF=1;否则 OF=0。 控制标志位控制标志位有 3 个,用来设置控制条件来控制 CPU 的操作,由程序设置或清除。 TF:跟踪标志位。 IF:中断允许标志位。用来控制可屏蔽中断的控制标志。若 IF=1,允许 CPU 接受可屏蔽中断请求;若 IF0,则禁止 CPU 回应可屏蔽中断请求。IF 的
12、状态对非屏蔽中断及内部中断没有影响。 DF:方向标志位。控制串操作指令用的标志。2.4 Intel 8086CPU 和 8088CPU 主要区别有哪些?参考答案:8086CPU 与 8088CPU 的区别主要有以下 4 个方面:. 内部结构8086 的指令队列有 6B,而 8088 仅有 4B。它们的执行单元 EU 完全相同,而总线接口单元 BIU 却不完全相同。8086CPU 内、外部的数据总线(DB)都为 16 位,8088 内部数据总线为 16 位,外部为 8 位。. 引出线和内存组织8086 有一条高 8 位数据总线允许引出线,它可以看做一条附加的地址线,用来访问内存的高字节,而 A0
13、 用来访问内存的低字节。. 地址/数据复用线8086 的地址/数据复用线是 16 位 AD15AD0;而 8088 仅有 AD7AD0 复用,A8A15仅作为地址线使用。. 内存与 I/O 接口选通信号电平。内存与 I/O 接口选通信号电平不同:8086 为M/ ,即高电平进行存储器操作,低电平进行 I/O 操作;而 8088 则相反,为IO/ 。2.5 逻辑地址和物理地址指的是什么?如果已知逻辑地址为 1200:0ABCDH,其物理地址为多少?参考答案:把用段地址和偏移地址表示存储单元的地址称为逻辑地址,段地址和段内偏移地址经20位地址加法器生成的20位地址称为物理地址。已知逻辑地址为 12
14、00:0ABCDH,其物理地址为 12000H + 0ABCDH= 1CBCDH。2.6 若CS为3000H,试说明现行代码段可寻址的存储空间的范围。参考答案:可寻址的存储空间的范围:30000H+0000H 30000H+FFFFH,既:30000H3FFFFH2.7 设现行数据段位于存储器10000H到1FFFFH存储单元,DS段寄存器内容为多少?参考答案:一个逻辑段最大范围:0000HFFFFH,因此DS段寄存器内容为:1000H。参考答案:2.9 已知堆栈段寄存器SS=4000H,堆栈指针SP=0100H,试将数据56789ABCH推入堆栈,画出进栈示意图。最后栈顶SP=?参考答案:
15、最后栈顶SP=400FCH2.10 试求出下列运算后的各个状态标志。 1234H + 6789H 23A5H 65C2H参考答案: 1234H + 6789H=79BDH,CF=0,PF=1,AF=0,ZF=0,SF=0,OF=0; 23A5H65C2H=0BDE3H,CF=1,PF=0,AF=0,ZF=0,SF=1,OF=0。2.11 8088CPU工作在最小模式时。 当CPU访问存储器时,要利用哪些信号? 当CPU访问I/O时,要利用哪些信号?参考答案: IO/=0,A19/S16 A16/S3,A15 A8,AD7 AD0,ALE,读存储器时:=0,DT/=0(写存储器时:=0,DT/=
16、1),。IO/=1,A19/S16 A16/S3,A15 A8,AD7 AD0,ALE,读IO端口时:=0,DT/=0(写IO端口时:=0,DT/=1),。2.12 简要说明 8086/8088 的指令周期、总线周期、机器周期和时钟周期有何不同。参考答案:(1) 指令周期由若干个机器周期组成,而机器周期时间又包含若干个时钟周期,总线周期一般由 4 个时钟周期组成。(2) 机器周期和总线周期的关系是:机器周期指的是完成一个基本操作的时间,这个基本操作有时可能包含总线读/写,因而包含总线周期,但是有时可能与总线读/写无关,所以,并无明确的相互包含关系。2.13 什么情况下插入TW等待周期?插入TW
17、多少,取决什么因素?参考答案:在T3状态,CPU采样READY线,若READY信号无效,插入TW状态;插入TW状态为一个至多个,直到READY信号有效,才进入T4状态。2.14 什么情况下会出现总线的空闲周期?参考答案:只有在8086CPU和存储器或I/O接口之间传输数据时,CPU才执行总线周期,当CPU不执行总线周期时(指令队列6个字节已装满,EU未申请访问存储器),总线接口部件不和总线打交道,就进入了总线空闲周期Ti 。在空闲周期中,虽然CPU对总线进行空操作,但是CPU内部操作仍然进行,即EU部件在工作。所以说,总线空操作是总线接口部件BIU对总线执行部件EU的等待。3.1 指出下列传送
18、类指令源操作数的寻址方式。(1) MOV SI,120 (2) MOV BX,DX(3) MOV AX,100BXDI (4) MOV DI,BX100(5) MOV AX,1000H (6) MOV AX,80H(7) MOV AX,BX (8) MOV CX,BXSI参考答案:(1) 立即数寻址 (2) 寄存器寻址(3) 基址加变址寻址 (4) 基址寻址(5) 直接寻址 (6) 立即数寻址(7) 基址寻址 (8) 基址加变址寻址3.2 指出下列指令中存储器操作数物理地址的计算表达式。(1) MOV SI,BX (2) MOV 8DI,DX(3) MOV AX,BPSI (4) ADD DI
19、,BX100(5) ADD AX,1000H (6) SUB AX,BX+DI+80H(7) ADD AX,ES:BX (8) DEC WORD PTRSI参考答案:(1) DS16BX (2) DS16DI8(3) SS16BPSI (4) DS16BX100(5) DS161000H (6) DS16BXDI80H(7) ES16BX (8) DS16DI3.3 指出下列指令中的错误。(1) MOV BX,AL (2) MOV CS,AX(3) MOV 100,CL (4) MOV BX,1000H(5) PUSH 1234H (6) MOV CS ,1200H(7) XCHG AH,12
20、H (8) INC 2000H(9) ADD BX,10 (10) OUT 258H,AX参考答案:(1) 源操作数和目的操作数寄存器类型不匹配(2) 代码段寄存器CS不允许赋值(3) 立即数不能做目的操作数(4) 内存单元之间不能直接传送(5) 立即数不能做堆栈指令操作数(6) 代码段寄存器CS不允许赋值(7) 立即数不能做交换指令操作数 (8) 字类型还是字节类型不明确(9) 目的操作数类型不明确 (10) 端口地址大于8位二进制数,需要通过DX传送。3.4 设(SP)3000H,(AX)1234H,(BX)5678H,指出执行下列指令后相关寄存器的内容。 PUSH AX PUSH BX
21、POP AX POP BX参考答案:执行后,(AX)5678H, (BX)1234H, (SP)3000H。3.5 若AX=1234H,BX=3456H,当执行SUB AX,BX指令后,求AX和标志寄存器CF、AF、SF、ZF和OF标志位的值?参考答案:(AX)=0DDDEH,CF=1,AF=1,SF=1,ZF=0,OF=0。3.6 设(AH)0F6H,(AL)90H,问执行SUB AH,AL指令后,AX中的值及标志寄存器CF、AF、SF、ZF、PF和OF标志位的值?参考答案:(AX)=6690H,CF=0,AF=0,SF=0,ZF=0,OF=0,PF=1。3.7 设(BX)1000H,(DI
22、)0050H,执行LEA BX,BXSI0200H后,(BX)?参考答案:(BX)0E50H3.8 已知(DS)2000H,(SS)5000H,(AX)0012H,(BX)0340H,(CX)0781H,(BP)0035H,(SI)0100H,(DI)0300H,(20440H)2104H,(20742H)0E2AH,(20372H)6FD3H,试求单独执行下列指令后的结果。 参考答案:(1) MOV DL,BXSI ;(DL)04H(2) MOV BPDI,CX ;(50336H)07H(3) LEA BX,100HBXDI ;(BX)0740HMOV DX,2BX ;(DX)0E2AH(4
23、) SUB SI,CX ;(SI)0F97FH(5) XCHG CX,32HBX ;(CX)6FD3H3.9 下列指令完成什么功能?(1) NEG BX (2) MUL BL(3) DIV CL (4) DEC AX(5) SBB AX,CX (6) INC DL(7) ADC AX,1000H (8) SAR AL,CL(9) DAA (10) CBW参考答案: (1) 将BX中的内容求补(正数变负数或负数变正数,绝对值不变)后送回BX。 (2) BLAL,结果送AX。(3) AX/CL,商存于AL,余数存于AH。 (4) AX中值减1,结果送回AL。(5) AX中的值减去BX中的值再减去C
24、F中的值,结果送回AX。 (6) DL中的值当无符号数加1,结果送回DL。(7) AX中的内容加上1000H后,再加上CF的值,结果送回AX。 (8) AL中的值向右移,移动位数为CL中的值,AL左边补充符号位的值。(9) 将AL中的两位BCD码加法运算的结果调整为两位压缩型十进制数,仍保留在AL中。 (10) 将AL的最高有效位扩展至AH。3.10 已知AX=3405H,BX=0FE1H,CX=0002H,DX=2A3EH,求下列每条指令执行后目的操作数的结果。(1) AND AH,BL (2) OR CL,20H(3) NOT DX (4) XOR CX,0FE3H(5) TEST AL,
25、80H (6) CMP BX,OF123H(7) SHR DX,CL (8) SAR AL,CL(9) RCL AL,1 (10) ROR DX,CL参考答案:(1) (AH)=02H (2) (CL)=22H(3) (DX)=0D5B1H (4) (CX)=0FE1H(5) (AL)=05H (6) (BX)=OFE1H(7) (DX)=0A8FH (8) (AL)=01H(9) (AL)=0AH (10) (DX)=8A8FH3.11 设(AX)54D1H,执行下列程序段指令后,求相应的结果。 MOV BL,AH 参考答案: MOV CL,AL ADD BL,100 ;BL=0B8H XC
26、HG AL,BL ;AL=0B8H SUB AL,CL ;AX=54E7H JS HH AND AL,0FH HH: ADC AH,BL ;AX=26E7H BL=0D1H3.12 设(AX)1023H、(BX)0430H,执行下列程序段指令后,求相应的结果。 MOV CL,2 参考答案: SHR AH,CL ;AX=0423H ADD BX,AX ;BX=0853H JMP NEXT MUL BLNEXT:OR AX,BX ;AX=0C73H HLT 3.13 已知当前数据段中有一个十进制数字09的7段ASCII表,其数值依次为30H39H,其首地址为2000H。要求用XLAT指令将十进制数
27、46转换成相应的7段代码值,存到AX寄存器中,试写出相应的程序段。参考答案: MOV BX, 2000H MOV AL,4 XLAT MOV AH,AL MOV AL,6 XLAT HLT3.14 设有程序段: DATA SEGMENT STRING DB Today is saturdy! N EQU $-STRING DATA ENDS试用字符串指令完成以下功能: 把该字符串传送到附加段中偏移量为CHAR1开始的内存单元中; 检查该字符串是否有“!”字符,若有将找到的第一个“!”用“?”将其替换。参考答案: CLD MOV CX,N LEA SI,STRING LEA DI,CHAR1 R
28、EP MOVSB LEA DI,STRING MOV AL,! MOV CX,N CLD REPNE SCASB MOV AL,? MOV DI,AL3.15 阅读程序段,说明其完成的功能。 MOV CX,100 MOV DL,0 MOV BX,1000H LP1:MOV AL,BX CMP AL,0 JNZ LP2 INC DLLP2:INC BXLOOP LP1 MOV BX,DL HLT参考答案:程序段的功能:统计从数据段偏移地址1000H的100个字节单元内容0的个数,并将统计 结果存入数据段偏移地址为1064H的内存单元。 3.16 试编程完成(AL)7/4的程序段,AL中的数为有符
29、号数。 参考答案: MOV BL,7 IMUL BL MOV CL,2 SAR AX,CL3.17 使用最少指令,实现下述要求的功能。 BL的高4位置1; AL的低4位取反; DL中的高4位移到低4位,低4位移到高4位; AH的低4位移到高4位,低4位清0。参考答案: OR BL,0F0H; XOR AL,0FH; MOV CL,4ROR AH,CL; MOV CL,4SHL AH,CL。 3.18 在DS:2000H为首址的内存数据段中,存放了10个16位带符号数,试编程将其中最大和最小的带符号数找出来,分别存放到以DS:3000H和DS:3002H内存单元中。 参考答案: MOV SI,2000H MOV AX,SI ;AX中存放最大数 MOV BX,SI ;BX中存放最小数 MOV CX,9FIND:ADD SI,2 MOV DX,SI CMP AX,DX JG LOP1 MOV AX,DXL0P1:CMP BX,DX JL LOP2 MOV BX,DXLOP2:LOOP FIND MOV SI,3000H MOV
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1