《微机原理与接口技术》 洪永强习题答案

更新时间:2024-02-03 13:20:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《微机原理与接口技术》

—习题及参考答案 与洪永强编著的

教材配套使用

2008年9月2日

第 1 章 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 第 7 章 第 8 章 第 9 章 第 10 章 第 11 章 第 12 章

微型计算机概述 .............................................................................. 1 微处理器 .......................................................................................... 2 寻址方式和指令系统 ...................................................................... 5 汇编语言程序设计 ........................................................................ 10 输入输出接口 ................................................................................ 13 存储器 ............................................................................................ 14 中断系统 ........................................................................................ 16 计数器/定时器与DMA控制器 .................................................... 22 并行接口与串行接口 .................................................................... 24 总线 ................................................................................................ 28 模拟量输入/输出通道接口 ........................................................... 29 人机交互设备及其接口 ................................................................ 31

0.1下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。 (1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76) 答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0 (2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0

(3) 85-76=01010101B-01001100B=01010101B+10110100B=00001001B=09H; CF=0;OF=0

(4) 85-(-76)=01010101B-10110100B=01010101B+01001100B=10100001B=0A1H; CF=0;OF=1

(5) (-85)-76=10101011B-01001100B=1010 1011B+1011 0100B=0101 1111B=5FH; CF=0;OF=1

(6) -85-(-76)=10101011B-10110100B=10101011B+01001100B=11110111B=0F7H; CF=0;OF=0

41564736.doc集 - 1 - 编者:喻其山

第 1 章 微型计算机概述

1.1 1.2 1.3

微型计算机的发展经历了哪几个时代?每个时代有哪些主要特点? 简述Pentium4 微处理器的处理能力。

冯·诺依曼计算机的结构特点是什么?

答:(1)、由运算器、控制器、存储器、输入设备和输出设备五大部分组成。

(2)、数据和程序以二进制代码形式不加区别地存放在存储器中,存放

位置由地址指定,地址码也为二进制。

(3)、控制器是根据存放在存储器中的指令序列及程序来工作的,并由

一个程序计数器(即指令地址计数器)控制指令的执行。控制器具有判断能力,能以计算结果为基础,选择不同的动作流程。 典型微机有哪三大总线?它们传送的是什么信息? 答:(1)、有数据总线,地址总线和控制总线。

(2)、数据总线用来传输数据信息,是双向总线;

地址总线用于传送CPU发出的地址信息,是单向总线;

控制总线用来传送控制信号、时序信号和状态信息等。 其中有的

是CPU向内存和外设发出的信息,有的则是内存或外设向CPU发出的信息。可见,CB中每一根线的方向是一定的、单向的,但CB作为一个整体是双向的。

什么叫微处理器?什么叫微型计算机?什么叫微型计算机系统?这三者有什么区别和联系?

微处理器内部一般由哪些部分组成?各部分的主要功能是什么?

试用示意图说明内存单元的地址和内存单元的内容,二者有何联系和区别?

1.4

1.5 1.6 1.7

答:示意图如有所示:

41564736.doc集 - 2 - 编者:喻其山

联系:存储单元中存放着信息,该信息可以是数据,也可以是另一单元的地址的一部分,每个存储单元都包含着地址和内容两个部分。都用二进制数表示,地址为无符号整数,书写格式为16进制。

区别:地址是微机用来管理内存单元而设置的,相当于内存单元的编号;而内容是存放在各个内存单元中的二进制信息。 1.8 1.9

高级语言、汇编语言、机器语言有何区别?各有何特点?

评价微型计算机性能的主要指标有哪些?试举例说明现在市场主流机型微型计算机的性能参数。

1.10 现代微型计算机的主板通常由哪些部分组成?主板上的总线扩展插槽有何

用途?

第 2 章 微处理器

2.1 2.2

8086CPU从功能上分为哪两个工作部件?每个工作部件的功能、组成和特

点分别是什么?

8086CPU中有几个通用寄存器,有几个变址寄存器,有几个地址指针寄存器?它们中通常哪几个寄存器可作为地址寄存器使用?

答:(1)、有4个通用寄存器AX、BX、CX、DX,有2个变址寄存器SI、

DI,有2个地址指针寄存器SP、BP。

(2)、BX、BP、SI、DI四个寄存器可作为地址寄存器使用。 8086CPU的标志寄存器中有哪些标志位?它们的含义和作用是什么? 答:(1)、有6个状态标志位CF、OF、ZF、SF、AF、PF;3个控制标志位

DF、IF和TF。

(2)、状态信息由中央处理机根据计算机的结果自动设置,6位状态位

的意义说明如下:

OF(OverFlag)溢出标志:带符号数计算溢出时为1;

SF(SignFlag)符号标志:运算结果为负时为1,取最高有效位; ZF(ZeroFlag)零标志:运算结果是0为1; CF(CarryFlag)进位标志:运算结果有进位为1;

AF(AuxiliaryFlag)辅助进位标志:第3位有进位置1(半字节); PF(ParityFlag)奇偶进位标志:运算结果中1的个数位为偶数置1。 (3)、控制信息由系统程序或用户程序根据需要用指令设置:

DF(Direction Flag)方向标志:DF为1,SI、DI减量,由高地址 向低地址处理;DF为0,SI、DI增量,由低地址向高地址处理;

IF(Interupt Flag )中断标志: IF为1时允许中断;

2.3

41564736.doc集 - 3 - 编者:喻其山

TF(Trap Flag)陷阱标志( 又叫跟踪标志):每执行一条指令就引起一个内部中断。用于单步方式操作,TF为1,指令执行完后产生陷阱,由系统控制计算机;TF为0,CPU不产生陷阱,正常工作。

2.4 2.5

简述最小模式和最大模式的含义及其区别。 8086CPU的地址线有多少位?其寻址范围是多少? 答:(1)、8086CPU的地址线有20位;

(2)、其寻址范围是1MB。 8086CPU工作在最小模式时,

(1) 当CPU访问存储器时,要利用哪些信号? (2) 当CPU访问外部设备时,要利用哪些信号?

(3) 当HOLD有效并得到响应时,CPU的哪些信号是高阻?

8086CPU工作在最大模式时,S2、S1、S0在CPU访问存储器与CPU访问外部设备时,分别是什么状态?

在8086最大模式系统中,8288总线控制器的作用是什么?它产生哪些控制信号? FFFFF FFFFE 8086采用什么方式管理内存?1MB的内存 空间分为哪两个存储体?它们如何与地址总 5 4 线、数据总线相连?

3 2 答:(1)、8086采用分段方式管理内存; 1 0 (2)、1MB的内存空间分为偶地址和奇地

址两个存储体;

A19~A1 D15~D8BHE D7~D0 A0 (3)、如右图所示:

高(奇)位和低(偶)位存储器条

FFFFD FFFFC 2.6

2.7 2.8 2.9

2.10 什么是段基址、偏移地址和物理地址?它们之间有什么关系?

答:(1)、段基址:存储器分段时,每个段的起始地址的低4位为0,高16

位为段基址,放入段寄存器中;

偏移地址:段内某内存单元的物理地址相对于段起始地址的偏移量称

为段内偏移地址,也叫有效地址;

物理地址:8086/8088有20条地址线,最大内存容量为1MB(220),

其中任何一个内存单元都有一个唯一的20位的地址,称为内存单元的物理地址。

(2)、物理地址(PA)=段基址×10H+偏移地址(EA) 2.11 对于8086,已知(DS)=1050H,(CS)=2080H,(SS)=0400H,(SP)=2000H,问:

(1) 在数据段中可存放的数据最多为多少字节?首地址和末地址各为多少?

(2) 堆栈段中可存放多少个16位的字?首地址和末地址各为多少?

41564736.doc集 - 4 - 编者:喻其山

(3) 代码段最大的程序可存放多少字节?首地址和末地址各为多少?

(4) 如果先后将FLAGS、AX、BX、CX、SI和DI压入堆栈,则(SP)=?如果此时(SP)=2300H,则原来的(SP)=?

答:(1)、64KB;首地址为1050:0000H,末地址为1050:FFFFH。

(2)、1000H 个16位的字;首地址为0400:0000H,末地址为0400:1FFEH。 (3)、64KB;首地址为2080:0000H,末地址为2080:FFFFH。 (4)、(SP)=1FF4H;原来的(SP)=230CH 2.12 (3)、如右图所示:对于8086,当(CS)=2020H时,物理地址为24200H,则

当(CS)=6520H时,物理地址应转移到什么地方? 2.13 什么是总线周期?什么是时钟周期?一个典型的总线周期最小包括几个时

钟周期?什么情况下需要插入等待周期TW?

答:(1)、总线周期:总线接口部件完成一个取指令或传送数据的完整操作

所需的最少时钟周期数。

(2)、时钟周期:CPU输入的CLK时钟信号。 (3)、4。

(4)、当被写入数据或者被读取数据的外设或存储器不能及时地配合

CPU传送数据。这时,外设或存储器会通过“READY”信号线在T3状态启动之前向CPU发一个“数据未准备好的信号”,于是CPU会在T3之后插入一个或多个附加的时钟周期TW。 2.14 总线周期中每个T状态的具体任务是什么?

2.15 试画出8086最小模式下将内存单元50326H的内容55H读入AL的时序图。 2.16 80386CPU的主要特点是什么?

2.17 80386CPU包含哪些寄存器?各有什么主要用途?

2.18 什么是实地址方式?什么是保护虚拟地址方式?什么是虚拟8086方式?它

们各有什么特点? 2.19 80386CPU中,选择符中3个字段的名字分别叫什么?大小各是多少?各有

什么作用? 2.20 一个段描述符中有几个字节?试说明其中每个字段的含义与作用? 2.21 80386的地址空间可映射到多少页?页有多大? 2.22 页转换产生的线性地址的3部分各是什么? 2.23 简述Pentium的主要结构特点。

2.24 Pentium内部结构的主要特点有哪些?什么是超标量结构?什么是超级流

41564736.doc集 - 5 - 编者:喻其山

水线?

2.25 简述Pentium处理器中U和V两个指令流水线的特点及作用。 2.26 Pentium 4处理器有哪些高级特性?

第 3 章 寻址方式和指令系统

3.1 3.2

什么叫寻址方式?8086CPU有哪几种寻址方式?

指出下列指令中源操作数和目的操作数的寻址方式: (1)MOV AX, 0AH (2)ADD [BX], DX (3)PUSH CS (4)POP DS (5)MUL BL (6)MOV DX,[1200H] (7)MOVSB (8)SUB AX,5[BP+DI] 答:(1)、DEST为寄存器寻址,SRC为立即数寻址。

(2)、DEST为寄存器间接寻址,SRC为寄存器寻址。

(3)、DEST为隐含堆栈指针寄存器间接寻址,SRC为寄存器寻址。 (4)、DEST为寄存器寻址,SRC为隐含堆栈指针寄存器间接寻址。 (5)、DEST为隐含寻址,SRC为寄存器寻址。

(6)、DEST为寄存器寻址,SRC为存储器直接寻址。

(7)、DEST为附加段存储器DI隐含寻址,SRC为数据段存储器SI隐

含寻址。(串传送)

(8)、DEST为寄存器寻址,SRC为基址变址相对寻址。 在直接寻址方式中,一般只指出操作数的偏移地址。试问:段地址如何确定?如果要用某个段寄存器指出段地址,指令应如何表示? 答:(1)、段地址默认为是DS的内容。

(2)、用短跨越前缀指出段地址。指令中用“段寄存器:”表示。 当用寄存器间接寻址方式时,试问:BX、BP、SI、DI分别在什么情况下使用?它们的物理地址如何计算?

分别指出下列指令中源操作数和目的操作数的寻址方式。若是存储器寻址,试写出其有效地址和物理地址。设(DS)=6000H,(ES)=2000H,(SS)=1500H,(SI)=00A0H,(DI)=6010H,(BX)=0800H,(BP)=1200H,数据变量VAR为0050H。

(1) MOV AX, 3050H (2) MOV DL, 80H (3) MOV AX, VAR (4) MOV AX, VAR[BX][SI] (5) MOV AX, [BX+25H] (6) MOV DI, ES:[BX] (7) MOV DX, [BP] (8) MOV BX, 20H[BX] (9) AND AX, BX (10) MOV BX, ES:[SI]

3.3

3.4 3.5

41564736.doc集 - 6 - 编者:喻其山

(11) ADC AX, [BX+DI] (12) PUSH DS 答:(1)、DEST为寄存器寻址,SRC为立即数寻址。

(2)、DEST为寄存器寻址,SRC为立即数寻址。 (3)、DEST为寄存器寻址,SRC为直接寻址。

EA=0050H,PA=(DS)×10H+EA=60050H

(4)、DEST为寄存器寻址,SRC为基址变址相对寻址。

EA=0050H+0800H+00A0H=08F0H,PA=(DS)×10H+EA =608F0H (5)、DEST为寄存器寻址,SRC为寄存器相对寻址。

EA=0800H+25H=0825H,PA=(DS)×10H+EA =60825H (6)、DEST为寄存器寻址,SRC为寄存器间接寻址。

EA=0800H,PA=(ES)×10H+EA =20800H

(7)、DEST为寄存器寻址,SRC为寄存器间接寻址。

EA=1200H,PA=(SS)×10H+EA =16200H

(8)、DEST为寄存器寻址,SRC为寄存器相对寻址。

EA=20H+0800H=0820H,PA=(DS)×10H+EA =60820H (9)、DEST为寄存器寻址,SRC为寄存器寻址。

(10)、DEST为寄存器寻址,SRC为寄存器间接寻址。

EA=00A0H,PA=(ES)×10H+EA =200A0H

(11)、DEST为寄存器寻址,SRC为基址变址寻址。

EA=0800H+6010H=6810H,PA=(DS)×10H+EA =66810H

(12)、DEST为隐含堆栈指针寄存器间接寻址,SRC为寄存器寻址。

EA=(SP)-2,PA=(SS)×10H+EA 3.6

设堆栈指针SP的初值为2300H,(AX)=5000H,(BX)=4200H。执行指令

PUSH AX后,(SP)=?,再执行指令PUSH BX及POP AX之后,(SP)=? (AX)=? (BX)=?

答:(1)、(SP)=22FEH。

(2)、(SP)=22FEH,(AX)=4200H,(BX)=4200H。 试说明指令MOV BX,15[BX]与指令LEA BX,15[BX]的区别。

答:指令MOV BX,15[BX]是读取数据段偏移地址为((BX)+0FH)的内容

送到BX中。指令LEA BX,15[BX]是取该偏移地址值(BX)+0FH送到BX中。 已知(DS)=2000H,有关的内存单元值为(21000H)=00H,(21001H)=12H,(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,位移量COUNT=1200H。执行下列指令后,寄存器AX、BX、SI的值分别是多少? MOV BX,OFFSET COUNT MOV SI,[BX]

MOV AX,COUNT[SI][BX]

答:(AX)= 3040H,(BX)= 1200H,(SI)= 1000H。

3.7

3.8

41564736.doc集 - 7 - 编者:喻其山

3.9

设标志寄存器值原为0401H,AX=3272H,BX=42A2H。执行下列减法指令SBB AL,BH之后,AX和标志寄存器的值分别是多少? 答: (AX)= 322FH,(FR)= 0410H。

3.10 设若标志寄存器原值为0A11H,SP=0060H,AL=4。下列几条指令执行后,

标志寄存器、AX、SP的值分别是多少? PUSHF LAHF

XCHG AH,AL PUSH AX SAHF POPF

答:(FR)= 0411H,(AX)= 0411H, (SP)= 005EH。 3.11 指出下列指令的错误

(1) ADD SI,CL (2) MOV 50,AL (3) MOV CS, AX (4) MOV DS,1234H (5) SHL AX,05H (6) XCHG 200,AL (7) IN AX,378H (8) JNZ BX (9) MOV AH,CX (10) MOV 33H,AL (11) MOV AX,[SI][DI] (12) MOV [BX],[SI]

(13) ADD BYTE PTR [BP],256 (14) MOV DATA[SI],ES:AX (15) JMP BYTE PTR [BX] (16) OUT 230H,AX (17) MOV DS,BP (18) MUL 39H 答:(1)、SI,CL字长不同。

(2)、DEST不能为立即数50。 (3)、DEST为CS段寄存器寻址。 (4)、立即数不能直接送段寄存器。 (5)、多次移位必须要用CL指出来。

(6)、DEST不能为立即数200(交换指令不能有立即数寻址)。 (7)、端口地址超过0FFH必须要用DX寄存器间接寻址。

(8)、条件转移指令只能用短内直接短转移寻址,不能用寄存器寻址。 (9)、AH,CX字长不同。

(10)、DEST不能为立即数33H。

(11)、SRC可为基址变址寻址。但不能为变址变址寻址。 (12)、双操作数指令不能同时为存储器寻址方式。 (13)、字长不同:256不是字节长度了。

(14)、段跨越前缀应放在存储器操作数或整个指令的前面。 (15)、JMP指令的寻址方式不能为字节属性。

(16)、端口地址超过0FFH必须要用DX寄存器间接寻址。 (17)、指令正确。

(18)、8086的乘法指令不能为立即数。

41564736.doc集 - 8 - 编者:喻其山

3.12 若内存单元DATA在数据段中偏移量为24C0H处,24C0~24C3H单元中依

次存放着55H、66H、77H、88H。下列几条指令执行后,寄存器AX、BX、CL、SI、DS的值分别是多少? MOV AX, DATA LEA SI, DATA MOV CL, [SI] LDS BX, DATA 3.13 条件转移指令均为相对转移指令,请解释“相对转移”含义,试问若须往较

远的地方进行条件转移,该怎么办? 3.14 假设(DS)=212AH,(CS)=0200H,(IP)=1200H,(BX)=0500H,(DI)=2600H,

位移量DATA=40H (217A0H)=2300H,(217E0H)=0400H,(217E2H)=9000H。 试确定下列转移指令的转移地址。 (1) JMP 2300H (2)JMP WORD PTR[BX] (3) JMP DWORD PTR [BX+DATA] (4)JMP BX (5) JMP DWORD PTR [BX][DI] 答:(1)、0200H: 2300H。CS不变

(2)、0200H: 2300H。CS不变 (3)、9000H: 0400H

(4)、0200H: 0500H CS不变 (5)、(23DA2H): (23DA0H) 3.15 若32位二进制数存放于DX和AX中,试利用移位与循环指令实现以下操

作:

(1) DX和AX中存放的无符号数,将其分别乘2除2。 (2) 若DX和AX中为有符号数,将其分别乘2和除2。 答:(1)、SHL AX, 1 ;AX乘2

RCL DX, 1 ;DX乘2 SHR DX, 1 ;DX除2 RCR AX, 1 ;AX除2 (2)、SAL AX, 1 ;AX乘2

RCL DX, 1 ;DX乘2 SAR DX, 1 ;DX除2 RCR AX, 1 ;AX除2 3.16 下段程序完成什么工作?

DATX1 DB 300DUP(?) DATX2 DB 100DUP(?)

MOV CX,100 MOV BX,200 MOV SI,0 MOV DI,0

41564736.doc集 - 9 - 编者:喻其山

NEST: MOV AL,DATX1 [BX] [SI]

MOV DATX2 [DI],AL INC SI INC DI LOOP NEXT

3.17 执行下列指令后,AX寄存器的内容是什么?

TABLE DW 10,20,30,40,50 ;000AH, 0014H, 001EH, 0028H, 0032H ENTRY DW 3

TABLE 0AH ……

00H MOV BX,OFFSET TABLE

14H ADD BX,ENTRY

TABLE+3 00H

MOV AX,[BX]

1EH

答:(AX)=1E00H。存储方式如右图所示:

00H 28H 3.18 分析下面的程序段完成什么功能?

00H MOV CL,04

32H SHL DX,CL

00H MOV BL,AH

3.17题的TABLESHL AX,CL

存储方式 SHR BL,CL

OR DL,BL

答:程序段将 ((DX),(AX)) 的双字同时左移4位,即将此双字乘以10H (16)。 3.19 试写出程序段把DX、AX中的双字右移四位。

3.20 当执行中断指令时,堆栈的内容有什么变化?如何求得子程序的入口地址? 3.21 试述中断指令IRET与RET指令的区别。

3.22 根据给定的条件写出指令或指令序列:

(1)将一个字节的立即数送到地址为NUM的存储单元中? (2)将一个8位立即数与地址为BUF的存储单元内容相加? (3)将地址为ARRAY的存储单元中的字数据循环右移一位? (4)将16位立即数与地址为MEM的存储单元中的数比较? (5)测试地址为BUFFER的字数据的符号位? (6)将AX寄存器及CF标志位同时清零?

(7)用直接寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中?

(8)用寄存器寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中?

(9)用相对寻址方式将首地址为ARRAY的字数组中第8个数送往寄存器BX

41564736.doc集 - 10 - 编者:喻其山

中?

(10)用基址变址寻址方式将首地址为ARRAY的字数组中第N个数送往寄存器BX中?

(11)将首地址为BCD_BUF存储单元中的两个压缩BCD码相加,并送到第三个存储单元中?

第 4 章 汇编语言程序设计

4.1 4.2 4.3 4.4 4.5

什么是汇编语言?什么是汇编语言程序?什么是汇编?什么是汇编程序? 一个完整的汇编语言程序结构上有什么特点? 汇编语言有哪三种基本语句?它们各自的作用是什么?

逻辑运算符与逻辑运算指令中的助记符有完全相同的符号,如何区别它们?作用有何不同?

下面两条语句汇编后,两个字节存储单元NUM1和NUM2中的内容分别是什么?

NUM1 DB (12 OR 4 AND 2) GE 0EH NUM2 DB (12 XOR 4 AND 2) LE 0EH

答:(1)、NUM1中的内容是00H;因为12不大于等于0EH

(2)、NUM2中的内容是0FFH;因为12小于等于0EH 下列指令执行后,字存储单元DA1中的内容是多少? DA1 EQU BYTE PTR DA2 DA2 DW 0ABCDH

……

SHL DA1,1 SHR DA2,1

答:DA1中的内容是55CDH

对下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?

NUMB1 DB ?

NUMB2 DW 20 DUP(?) NUMB3 DB ?USB?

1) MOV AX, TYPE NUMB1 2) MOV AX, TYPE NUMB2 3) MOV CX, LENGTH NUMB2 4) MOV DX, SIZE NUMB2 5) MOV CX, LENGTH NUMB3

4.6

4.7

41564736.doc集 - 11 - 编者:喻其山

答:1)、(AX)=1

2)、(AX)=2

3)、(CX)=0014H 4)、(DX)=0028H 5)、(CX)=1 4.8

假设程序中的数据定义如下: PNUM DW ?

PNAME DB 16 DUP(?) COUNT DD ?

PLETH EQU $-PNUM

问PLETH 的数值是多少?它代表什么意思? 答:(1)、PLETH 的数值是16H

(2)、表示自PNUM开始到PLETH为止的变量占用的存储单元数。 程序中如何实现对各段寄存器和IP、栈顶的初始化?

4.9

4.10 什么是宏?宏指令的功能是什么?宏与过程在汇编过程中,它们的目标代

码有什么区别? 4.11 简述程序设计的步骤。

4.12 编写程序,不用乘法计算Z=10×X+Y/8,用移位运算。

答: MOV AX, X

SHL AX, 1 ;AX乘2 MOV BX, AX SHL AX, 1 ;AX乘2 SHL AX, 1 ;AX乘2 ADD AX, BX ;8X+2X MOV BX, Y MOV CL, 3 SHR BX ;无符号数Y/8 ADD AX, BX ;10×X+Y/8 MOV Z, AX

4.13 编写程序,建立一数据表,表中连续存放1-9的平方,查表求某数字的平方。

答:TABLE DB 1*1,2*2,3*3,4*4,5*5,6*6,7*7,8*8,9*9

??

MOV BX, OFFSET TABLE MOV AL, n DEC AL XLAT ;n的平方即在AL中 4.14 简述利用跳转表实现多路分支程序设计的思想。地址跳转表和指令跳转表

41564736.doc集 - 12 - 编者:喻其山

只要区别是什么?

4.15 简述分支结构程序设计的注意事项。

4.16 编写程序,将自定义的三个符号数X、Y、Z的最大者送入MAX字单元。

答: MOV AX, X

CMP AX, Y JGE NEXT MOV AX,Y

NEXT: CMP AX, Z

JGE NEXT1 MOV AX, Z

NEXT1: MOV MAX, AX 4.17 在A、B、C中存在有三个数,编写程序完成如下处理:

1)若有一个数为零,则将其它两个量清为零。 2)若三个数都不为零,求它们的和,并送D中。 3)若三个数都为零,则将它们都置一。 答: CMP A, 0

JNZ NEXT CMP B, 0 JNZ NEXT1 CMP C, 0 JNZ NEXT1 MOV A, 1 MOV B, 1 MOV C, 1 JMP OK

NEXT: CMP B, 0

JZ NEXT1 CMP C, 0 JZ NEXT1 MOV AX, A ADD AX, B ADD AX, C MOV D, AX JMP OK

NEXT1: MOV A, 0

MOV B, 0 MOV C, 0

OK: …… 4.18 循环结构程序由哪几部分组成?各部分的功能是什么? 4.19 简述循环结构程序设计的注意事项。

41564736.doc集 - 13 - 编者:喻其山

4.20 编写程序,将以STR1为首地址的字节串传送到以STR2 为首地址的字节

存储区中。 4.21 从偏移量DAT1开始存放200个带符号的字节数据,编写程序,找出其中

最小的数放入DATA2中。 4.22 子程序设计时,有哪些注意事项?

4.23 调用程序和主程序之间是如何进行参数传递的?

4.24 用主程序调用子程序的结构形式,编程实现∑n!=1!+2!+3!+4!+5! (提示:n!

= { ,n! 用n(n-1)!代替,则计算n! 子程序必须用递归调用n!子程序,但每次调用所使用的参数都不同。

第 5 章 输入输出接口

5.1 5.2 5.3 5.4

为什么要在CPU 与外设之间增设接口? 微型计算机的接口一般应具备哪些功能? 接口电路的硬件一般由哪几部分组成?

什么是端口?I/O端口的编址方式有哪些?各有什么特点?8086 系统中采用哪种编址方式?

答:(1)、端口(port)是接口电路中能被CPU直接访问的寄存器的地址。

(2)、端口地址和存储器地址统一编址,也称存储器映射方式;I/O端口

地址和存储器地址分开独立编址,也称I/O映射方式。 (3)、各自的特点:

存储器映射方式的优点:

1)、访问I/O端口可实现输入/输出操作,还可以对端口内容进行算术逻辑运算、移位等等;

2)、能给端口有较大的编址空间,这对大型控制系统和数据通信系统是很有意义的。

存储器映射方式的缺点:

1)、端口占用了存储器的地址空间,使存储器容量减小; 2)、指令长度比专门I/O指令要长,因而执行速度较慢。

I/O映射方式的优点:

1)、I/O端口地址不占用存储器空间;

2)、使用专门的I/O指令对端口进行操作,I/O指令短、执行速度快;

3)、并且由于专门I/O指令与存储器访问指令有明显的区别,使程序中I/O操作和存储器操作层次清晰,程序的可读性强。

41564736.doc集 - 19 - 编者:喻其山

(3)从通信接口COM1接收一个字符,并放入内存? (4)通过通信接口COM1向外发送1个字符?? 答:(1)、MOV DL, ?A?

MOV AH, 05H INT 21H (2)、MOV DX, 0 ;0号打印机

MOV AL, ?P? MOV AH, 0 INT 17H

(3)、MOV AH, 03H ;从通信接口COM1接收一个字符

INT 21H MOV BUF, AL (4)、MOV DL, ?C? ;通过通信接口COM1发送字符C

MOV AH, 04H INT 21H 7.12 利用DOS 系统功能调用,完成将键盘输入的小写字母转换为大写字母并输

出显示,直到输入?$?字符时停止输出 答:完整程序如下: CODE SEGMENT

ASSUME CS:CODE

START: MOV AH, 02H

MOV DL, 0DH ;显示“回车” INT 21H MOV AH, 02H MOV DL, 0AH ;显示“换行” INT 21H

INPUT: MOV AH, 01H ;键盘输入一个字符回显功能

INT 21H CMP AL, ?$? ;?$?字符? JE INPUT_END CMP AL, ?a? ;?a~z?字符? JB INPUT CMP AL, ?z? JA INPUT

AND AL, 0DFH ;小写字母转换为大写字母 MOV AH, 02H MOV DL, AL ;显示大写字母 INT 21H JMP INPUT

INPUT_END: MOV AX, 4C00H ;返回DOS功能

INT 21H

CODE ENDS

END START

41564736.doc集 - 20 - 编者:喻其山

7.13 从内存单元BUF开始的缓冲区中有7个8位无符号数,依次为53H、0D8H、

67H、82H、0A6H、9EH、0F4H。编程找出它们的中间值并放入RES单元,且将结果以“(RES)=?”的格式显示在屏幕上。 7.14 设某测试系统中,1号端口为测试口,所得数据是0~9之间的十进制整数;

2号端口为显示口,对应于数字0~9的LED七段共阴显示码依次为:3FH、06H、5BH、4FH、66H、6DH、3DH、07H、7FH、6FH。编写一段查表送显的程序,要求先从测试口读入一个数据,再查表将相应的显示码从显示口送出,如此反复进行直至读入数据0FFH为止。 7.15 编程实现以下操作:从键盘输入4个数字,分别作为两个10~99之间的十

进制数。求它们的和,并把结果以三位十进制数的形式显示在屏幕上。要求输入回显的两个加数与送显的和之间有适当的分隔,以示区别。格式自行拟定。

答:完整程序如下: CODE SEGMENT

ASSUME CS:CODE

START: MOV AH, 02H

MOV DL, 0DH ;显示“回车” INT 21H MOV AH, 02H MOV DL, 0AH ;显示“换行” INT 21H CALL INPUT ;输入2数并转换为十进制数送BL MOV AL, BL ;转换的十进制数保存在AL中 CALL INPUT ;输入2数并转换为十进制数送BL ADD AL, BL DAA

MOV BH, 0 ADC BH, 0 ;将进位位保存在BH中 MOV BL, AL ;将求和结果保存在BL中 CALL OUTPUT ;输入显示子程序调用 INT 20H ;结束,返回DOS

INPUT PROC

PUSH AX

MOV AH, 01H ;键盘输入一个字符功能 INT 21H

AND AL, 0FH ;ASCII码转换为二进制数 MOV BL, AL MOV CL, 4 SHL BL, CL ;BL内容左移四位 MOV AH, 01H ;键盘输入一个字符功能

41564736.doc集 - 21 - 编者:喻其山

INT 21H AND AL, 0FH OR BL, AL MOV AH, 02H MOV DL, ' '

;ASCII码转换为二进制数 ;合成为一个两位的十进制数 ;显示空格

INT 21H POP AX RET

INPUT ENDP

OUTPUT PROC

PUSH AX PUSH DX PUSH CX

MOV AH, 02H MOV DL, ' ' INT 21H MOV DL, BH OR DL, 30H

MOV AH, 02H INT 21H MOV DL, BL MOV CL, 04H SHR DL, CL OR DL, 30H MOV AH, 02H INT 21H MOV DL, BL AND DL, 0FH OR DL, 30H

MOV AH, 02H INT 21H POP CX POP DX POP AX RET

OUTPUT ENDP CODE ENDS

END START

ASCII码

ASCII码

ASCII码

;显示空格;显示进位位;进位位转换为;显示求和结果高位;结果高位转换为;显示求和结果低位;结果低位转换为41564736.doc集 - 22 - 编者:喻其山

第 8 章 计数器/定时器与DMA控制器

8.1 8.2 8.3 8.4 8.5

微机系统中的外部定时有哪两种方法?其特点如何? 8253计数/定时器有哪些特点? 8253初始化编程包括哪两项内容? 答:设定方式控制字和计数初始值。

8253有哪几种工作方式?区分不同工作方式的特点体现在哪几方面? 设8253芯片的计数器0、计数器2和控制口地址分别为04B0H、04B4H、04B6H。定义计数器0工作在方式3,CLK0为5MHz,要求输出OUT0为1KHz方波;定义计数器2用OUT0作计数脉冲,计数值为1000,计数器计到0时向CPU发出中断请求,CPU响应这一中断请求后继续写入计数值1000,开始重新计数,保持每一秒钟向CPU发出一次中断请求。试写出对8253的初始化程序,并画出硬件连接图。 答:硬件连接图如下:

D7~D0 D7~D0 S2 WR IOWC S1 RD IORC S0 INTA 8253 8259 1Hz 8288 IR INTR OUT2 8086CPU CLK0 A9 或门 5MHz OUT0 G2A Y0 A8 7432 GATE0 74LS138 A10 +5V G2B 7400 A6 GATE2 G1 A7 CLK2 C Y5 A5 CS B Y6 A4 A Y7 A3 A1 A2 A0 A1

8253的初始化程序段如下:

INIT8253: MOV DX, 04B6H ;控制口

MOV AL, 37H ;计数器0方式3 OUT DX, AL

MOV DX, 04B0H ;计数器0

MOV AX, 5000H ;计数值=5MHz/1kHz=5000 OUT DX, AL

41564736.doc集 - 23 - 编者:喻其山

MOV OUT MOV MOV OUT MOV MOV OUT MOV OUT

8.6

AL, AH DX, AL

DX, 04B6H ;控制口

AL, 0B7H ;计数器2方式3 DX, AL

DX, 04B4H ;计数器2 AX, 1000H ;计数值1000 DX, AL AL, AH DX, AL

将8253计数器0设为方式3(方波发生器),计数器1设为方式2(分频器)。要求计数器0的输出脉冲作为计数器1的时钟输入,CLK0连接总线时钟4.77MHz,定时器1输出OUT1约为40HZ,试编一段程序。设8253端口地址为:40H~43H。

答:程序段如下:计数值 = 4.77MHZ÷40Hz =119250 = 2385×50 INIT8253: MOV AL, 37H ;计数器0方式字

OUT 43H, AL ;控制口

MOV AX, 2385H ;计数器0计数值 OUT 40H, AL MOV AL, AH OUT 40H, AL MOV AL, 55H ;计数器1方式字 OUT 43H, AL ;控制口 MOV AL, 50H ;计数器1计数值 OUT 41H, AL 什么是DMA传送方式?为什么DMA方式能实现高速传送? 说明DMA控制器应具有什么功能?

8237A有哪些内部寄存器?各有什么功能?初始化编程要对哪些寄存器进行预置?

8.7 8.8 8.9

8.10 分述8237A单字节传送、请求传送、块传送三种工作方式的传送过程。 8.11 假设利用8237A通道1在存储器的两个区域BUF1和 BUF2间直接传送100

个数据,采用连续传送方式,传送完毕后不进行自动预置,试写出初始化程序。

41564736.doc集 - 24 - 编者:喻其山

第 9 章 并行接口与串行接口

9.1 可编程并行接口芯片8255A面向I/O设备一侧的端口有几个?其中C口的

使用有哪些特点? 9.2 试分别说明可编程并行接口芯片8255A的方式控制字和置位/复位字的作用

及其格式中每位的含义是什么? 9.3 “由于8255A的端口C按位置位/复位控制字是对C口进行操作,所以可以

写到C口”,这句话对吗?为什么? 答:(1)、不对!

(2)、因为该控制字按规定只能写入控制口,而且D7=0。 9.4 如何对8255A进行初始化编程?

答:通过向8255A控制口设定方式选择控制字来进行初始化编程。方式选

择控制字的格式如下图所示: 1 D6 D5 D4 D3 D2 D1 D0 方式选择控制 PC3~PC0:1—输入,0—输出 字的标识位 端口B:1—输入,0—输出 A组方式选择 端口A B组方式选择:0—方式0,1—方式1 00—方式0 1—输入 01PC7~PC4:1—输入,0—输出 —方式1 0—输出 1x —方式2 9.4图:方式选择控制字的格式

9.5 可编程并行接口芯片8255A有哪几种工作方式?各自的特点何在? 9.6 在方式1下输入和输出时,其专用联络信号是如何定义的?

9.7 现有4种简单的外设:①一组8位开关;②一组8位LED指示灯;③一个

按钮开关;④一个蜂鸣片。要求:

(1)用8255A作为接口芯片,将这些外设构成一个简单的微机应用系统,画出接口连接图。

(2)编制3种驱动程序,每个程序必须包括至少有两种外设共同作用的操作(例如,根据8位开关“ON”和“OFF”的状态来决定8个LED指示灯“亮”和“灭”。又如,当按下按钮开关时,才使蜂鸣片发声等)。(方式0和方式1下,在按下按钮并释放后,再根据8位开关“ON”和“OFF”的状态来决定8个LED指示灯“亮”和“灭”。 使用查询方式。)

答:(1)、接口连接图如下:8255与CPU的连接省略。

41564736.doc集 - 25 - 编者:喻其山 +5V D7 D6 D5 D4 D3 D2 D1 D0 1K 1K 1K 1K 1K 1K 1K 1K PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 PC0 KN 8255 PC4 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 5K 5K 5K 5K 5K 5K 5K 5K 5K K7 K6 K5 K4 K3 K2 K1 K0 图中,PB口经限流电阻接8位LED指示灯;PA口经上拉电阻接8位开关,PC4经上拉电阻接按钮开关(作为PA口工作于方式1输入的选通信号STBA),PC0接蜂鸣片。假设8255的端口地址为60H、61H、62H、63H,地址译码电路图中未画出。

(2)、8255初始化程序段如下:A口方式0输入,B口方式0输出,C

口低4位输出、高4位输入。

MOV AL, 10011000B ;8255方式控制字98H OUT 63H, AL ; 控制口 MOV AL, 0FFH ;关闭8位LED指示灯 OUT 61H, AL ;B口 OUT 62H, AL ;C口,禁鸣蜂鸣片

;驱动程序1如下:根据8位开关“ON”和“OFF”的状态来决定8个LED

指示灯“亮”和“灭”。 NEXT: IN AL, 60H ;输入A口的8位开关状态

OUT 61H, AL ;送B口8位LED指示灯显示 JMP NEXT ;死循环输入并显示

;驱动程序2如下:当按下按钮开关时,才使蜂鸣片发声。 VOICE: IN AL, 62H ;输入C口的按钮开关状态

TEST AL, 10H ;PC4=0? JNZ VOICE_OFF MOV AL, 00H

41564736.doc集 - 26 - 编者:喻其山

OUT CALL JMP

VOICE_OFF:

MOV OUT JMP

63H,AL DELAY2S VOICE AL, 01H 63H,AL VOICE

;置PC0=0,发声 ;延时2秒

;置PC0=1,关闭声音 ;死循环检测发声

;驱动程序3如下:A口工作于方式0下,在按下按钮并释放后,再根据

8位开关“ON”和“OFF”的状态来决定8个LED指示灯“亮”和“灭”。使用查询方式。

LED0_OFF: IN AL, 62H ;输入C口的按钮开关状态

TEST AL, 10H ;PC4=0? JNZ LED0_OFF ;没有按按钮,继续等待按下

LED0_ON: IN AL, 62H ;输入C口的按钮开关状态

TEST AL, 10H ;PC4=0? JZ LED0_ON ;仍然按下,继续等待释放 IN AL, 60H ;输入A口的8位开关状态 OUT 61H, AL ;送B口8位LED指示灯显示 JMP LED0_OFF ;死循环输入并显示 ;驱动程序4如下:8255初始化程序段:A口方式1输入,B口方式0

输出,C口低4位输出、高4位配合A口工作。

MOV AL, 10110000B ;8255方式控制字0B0H OUT 63H, AL ; 控制口 MOV AL, 0FFH ;关闭8位LED指示灯 OUT 61H, AL ;B口 OUT 62H, AL ;C口,禁鸣蜂鸣片

;A口工作于方式1下,在按下按钮并释放后,再根据8位开关“ON”和

“OFF”的状态来决定8个LED指示灯“亮”和“灭”。使用查询方式。 LED1_OFF: IN AL, 62H ;输入C口的状态

TEST AL, 20H ;PC5=0?(PC5为IBFA) JZ LED1_OFF ;没有按按钮,继续等待STBA IN AL, 60H ;IBFA=1,输入A口的8位开关状态 OUT 61H, AL ;送B口8位LED指示灯显示 JMP LED1_OFF ;死循环输入并显示 9.8 串行传送的特点是什么?

9.9 什么是串行传送的全双工和半双工? 9.10 调制解调器(MODEM)在通信中的作用?

9.11 什么是波特率?发送时钟和接收时钟与波特率有什么关系?

41564736.doc集 - 27 - 编者:喻其山

9.12 串行通信按信号格式分为哪两种?这两种格式有何不同? 9.13 串行接口的基本功能有哪些? 9.14 试简述8251A内部结构及工作过程。

9.15 试说明8251A的方式控制字、操作控制字和状态字各位的含义及它们之间

的关系。在对8251A进行初始化编程时,应按什么顺序向它的控制口写入控制字 9.16 某系统中使可编程串行接口芯片8251A工作在异步方式,7位数字,不带

校验,2位停止位,波特率因子为16,允许发送也允许接收,若已知其控制口地址为04A2H,试编写初始化程序。

答:程序段如下:方式字为11001010B=CAH,控制字为00010101B=15H INIT8251: MOV AL, 0CAH ;方式字

MOV DX, 04A2H OUT DX, AL ;控制口 MOV AL, 15H ;控制字 OUT DX, AL ;控制口 9.17 设8251A的控制口和状态口地址为04A2H,数据输入/输出口地址为04A0H

(输出端口未用),输入100个字符,并将字符放在buffer所指的内存缓冲区中。请写出这段的程序。

答:程序段如下:方式字为11001010B=CAH,控制字为00010101B=15H INIT8251: MOV AL, 0CAH ;方式字

MOV DX, 04A2H OUT DX, AL ;控制口 MOV AL, 15H ;控制字 OUT DX, AL ;控制口 MOV CX,100

LEA SI, buffer ;输入缓冲区

RECEV: MOV DX, 04A2H

IN AL, DX ;读取状态 TEST AL, 02H ;RxRDY=1? JZ RECEV TEST AL, 38H ;输入数据有三种错误之一吗? JNZ ERROR

MOV DX, 04A0H ;数据口 IN AL, DX ;输入数据

AND AL, 7FH ;7位数据,清除最高位 MOV [SI], AL INC SI

LOOP RECEV JMP STOP

41564736.doc集 - 28 - 编者:喻其山

ERROR: ?? STOP: ??

9.18 在图9-17两台微机串行通信例子中,在不改变硬件的情况下,通信双方的约定改为1位停止位、奇校验、波特率因子为16,其他参数不变,试编写出两机的初始化程序。

答:发送部分初始化程序段如下:

方式字为01011110B=5EH,控制字为00110111B=37H INIT8251A: MOV DX, 309H

MOV AL,0 ;先写三个00H OUT DX, AL ;控制口 OUT DX, AL OUT DX, AL MOV AL,40 ;40H,软件复位命令 OUT DX, AL ;控制口 MOV AL, 5EH ;方式字 OUT DX, AL MOV AL, 37H ;控制字 OUT DX, AL

接收部分初始化程序段如下:

方式字为01011110B=5EH,控制字为00110111B=14H INIT8251B: MOV DX, 309H

MOV AL,0 ;先写三个00H OUT DX, AL ;控制口 OUT DX, AL OUT DX, AL MOV AL,40 ;40H,软件复位命令 OUT DX, AL ;控制口 MOV AL, 5EH ;方式字 OUT DX, AL MOV AL, 14H ;控制字 OUT DX, AL

第 10 章 总线

10.1 什么是总线?微型计算机的总线由哪些部分组成?各部分的作用是什? 10.2 什么是总线标准?试简述总线标准4个特性的含义。

10.3 微机系统中总线的层次结构是怎样的?试说明微机系统中系统总线和局部

总线的概念.局部总线有什么特点?

41564736.doc集 - 29 - 编者:喻其山

10.4 总线有哪些主要的性能参数?试比较ISA总线与PCI总线的性能参数。 10.5 ISA和EISA总线的相似点和不同点是什么? 10.6 简述ISA,EASA,PCI总线的特点。

10.7 PCI局部总线的信号线有多少根?可分为哪几组功能信号? 10.8 RS-232C最主要的接线是什么?其功能是什么?

10.9 RS-232C在实际应用中有几种连接方式?它分别适用于什么工作要求? 10.10 EIA-RS-232C电平和TTL电平有什么区别?如何将EIA电平和TTL电平接

口? 10.11 MXA232与MC1488,MC1489这两类芯片在使用中有什么区别? 10.12 USB接口有什么特点?USB如何扩展?最多可连接多少个USB设备? 10.13 USB系统由哪些部分组成? 10.14 SCSI接口标准的主要特点有哪些? 10.15 为什么引入AGP接口?它有什么特点? 10.16 IEEE1394的主要特点是什么?试与USB作比较

第 11 章 模拟量输入/输出通道接口

11.1 一个完整的微机控制系统的输入通道和输出通道应包括哪几个环节? 11.2 D/A转换器和A/D转换器在微型计算机的应用系统中起什么作用? 11.3 说明D/A转换器的工作原理。

11.4 在D/A转换中,什么是分辨率?什么是相对转换精度?

11.5 DAC0832与CPU有几种连接方式?它们与CPU的硬件接口有何不同? 11.6 某控制系统模拟量输出通道如图11-16所

41564736.doc集 - 30 - 编者:喻其山

(1)图11-16中采用的是哪一种控制方式?其输出是什么形式?

(2)写出图中Y2和Y4两个地址。 (3)画出实现D/A转换的程序框图。

(4)用8086汇编语言写出完成上述D/A转换的程序。 11.7 A/D转换器的原理有几种?它们各有什么特点和用途? 11.8 试说明逐次逼近型A/D转换器转换原理。

11.9 在A/D转换中,什么是分辨率?什么是转换时间?

11.10 A/D转换器的结束信号(设为EOC)有什么作用?根据该信号在I/O控制

中的连接方式,A/D转换有几种控制方式?它们各在接口电路和程序设计上有什么特点?

11.11 设某8位A/D转换器的输入电压位0~+5V,求出当输入模拟量为下列值时

输出的数字量。(1)1.25V;(2)2V;(3)2.5V;(4)3.75V;(5)4V;(6)5V。 11.12 某A/D转换电路如图11-17所示。

(1)试写出A/D转换器的地址。

(2)该电路采用什么控制方式?画出该中转换的程序框图。 (3)用8086汇编语言编写出完成上述A/D转换的程序。

41564736.doc集 - 31 - 编者:喻其山

11.13 设被测温度变化范围为0℃~1200℃,如果要求误差不超过0.4℃,应选用分

辨率为多少位的A/D转换器(设ADC的分辨率和精度一样)。 11.14 AD574A有何特点?

11.15 试利用8253、8255A、8259A和AD574A设计一个数据采集系统,假设模拟信号已满足A/D转换的要求。要求每隔50us采集一个数据,数据I/O传送控制采用中断控制,8255A的INTR信号(方式1)接8259A的IR2,CPU为8088。外围逻辑电路自选,试完成: (1)进行硬件设计,画出连接图。

(2)进行软件设计,包括8253、8255A和8259A的初始化及中断服务。

第 12 章 人机交互设备及其接口

12.1 编码键盘与非编码键盘有什么区别?

12.2 非编码键盘应达到哪些功能?识别被按键有哪几种方法?简述逐行扫描法的

基本思想。 12.3 说明非编码键盘的工作原理。

12.4 试应用8255A设计一个4*8的非编码矩阵键盘硬件框图并编写出程序。 12.5 说明PC微机键盘的特点和接口标准。 12.6 鼠标器与主机常用的接口标准类型有哪些? 12.7 说明CRT显示器的工作原理。

41564736.doc集 - 32 - 编者:喻其山

12.8 说明CRT屏幕光栅扫描过程。

12.9 CRT接口电路一般由哪些部分组成?简述各部分功能。 12.10 CRT控制器完成哪些主要功能?

12.11 针式打印机由哪些部分组成?说明针式打印机的打印过程。 12.12 喷墨打印机喷墨有哪些实现方式?具体如何实现的。

12.13 并行打印机常用哪些接口标准?该标准定义了多少条信号线? 12.14 试述激光打印机的打印过程。 12.15 试说明并行打印机的数据传送过程。

12.16 简述液晶显示器,扫描仪,触摸屏,数码相机的功能和工作特。

本文来源:https://www.bwwdw.com/article/bz5w.html

Top