微机原理复习题1-交学生_第1页
微机原理复习题1-交学生_第2页
微机原理复习题1-交学生_第3页
微机原理复习题1-交学生_第4页
微机原理复习题1-交学生_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-. z.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同 解: 把CPU(运算器和控制器)用大规模集成电路技术做在一个芯片上,即为微处理器。微处理器加上一定数量的存储器和外部设备(或外部设备的接口)构成微型计算机。微型计算机与管理、维护计算机的硬件以及支持应用的软件相结合就形成了微型计算机系统。 2 CPU在部构造上由哪几局部组成CPU应该具备哪些主要功能 解:CPU主要由起运算器作用的算术逻辑单元、起控制器作用的指令存放器、指 令译码器、可编程逻辑阵列和标志存放器等一些存放器组成。其主要功能是进展算 术和逻辑运算以及控制计算机按照程序的规定自动运行。 3微型计算机采用总线构造有什

2、么优点 解:采用总线构造,扩大了数据传送的灵活性、减少了连线。而且总线可以标准化,易于兼容和工业化生产。 4数据总线和地址总线在构造上有什么不同之处如果一个系统的数据和地址合 用一套总线或者合用局部总线,则要靠什么来区分地址和数据 解:数据总线是双向的(数据既可以读也可以写),而地址总线是单向的。 8086CPU为了减少芯片的引脚数量,采用数据与地址线复用,既作数据总线也作为 地址总线。它们主要靠信号的时序来区分。通常在读写数据时,总是先输出地址 (指定要读或写数据的单元),过一段时间再读或写数据。 5 8086微处理器的总线接口部件由哪几局部组成 解:8086微处理器中的总线接口单元(BIU

3、)负责CPU与存储器之间的信息传 送。具体地说,BIU既负责从存的指定局部取出指令,送至指令队列中排队(8086的指令队列有6个字节,而8088的指令队列只有4个字节);也负责传送执行指令时所需的操作数。执行单元(EU)负责执行指令规定的操作。 6段存放器CS=120OH,指令指针存放器IP=FFOOH,此时,指令的物理地址为 多少 解:指令的物理地址=12000H+FFOOH=21FOOH7 分别指出以下指令中的源操作数和目的操作数的寻址方式。 (1)MOV SI, 300 (2)MOV C*, DATADI (3)ADD A*, B*SI (4)AND A*, C* (5)MOVBP, A

4、* (6)PUSHF 解: (l)源操作数为立即寻址,目的操作数为存放器寻址。 (2)源操作数为变址存放器加位移量寻址,目的操作数为存放器寻址。 (3)源操作数为基址加变址寻址,目的操作数为存放器寻址。 (4)源操作数和目的操作数都为存放器寻址。 (5)源操作数为存放器寻址,目的操作数为存放器间接寻址。 (6)为堆栈操作。 8 试述指令MOV A*,2000H和MOV A*,DS:2000H的区别。 解: 前一条指令是立即寻址,即把立即数2000H传送至存放器A*。后一条指令是直接寻址,是把数据(DS)段中的地址为200OH单元的容传送至存放器A*。 9写出以下指令中存操作数的所在地址。 (1

5、)MOV AL, B*+10 (2)MOV BP+10, A* (3)INC BYTEPTRSI十5 (4)MOV DL, ES:B*+SI (5)MOV B*,BP+DI+2 解: (1)数据段B*+10单元。 (2)堆栈段BP+10单元。 (3)数据段SI+5字节单元。 (4)附加段(ES段)B*+SI单元。 (5)堆栈段BP+DI+2单元。 10判断以下指令是否正确。 (1)MOV AL, B* (2)MOV AL, CL (3)INC B* (4)MOV 5, AL (5)MOV B*,SI (6)M0V BL, 0F5H (7)MOV D*, 2000H (8)POP CS (9)P

6、USH CS 解: (l)不正确,AL与B*数据宽度不同。 (2)正确。 (3)不正确,因为不明确是增量字节还是字。 (4)不正确,立即数不能作为目的操作数。(5)不正确,因为不明确要传送的是字节还是字。 (6)正确。 (7)正确。 (8)不正确,CS不能作为:pop指令的操作数。 (9)不正确,CS不能作为PUSH指令的操作数。 11设堆钱指针SP的初值为1000H,A*=2000H,B*=3000H,试问: (1)执行指令PUSH A*后SP的值是多少 (2)再执行PUSH B*及POP A*后,SP、A*和B*的值各是多少 解: (1)SP=0FFEH。 (2)SP=0FFEH;A*=3

7、000H, B*=3000H。 12要想完成把3000H送2000H中, 用指令: MOM2000H,3000H 是否正确如果不正确,应该用什么方法实现解:不正确。 正确的选项是: MOV AL, 3000H MOV 2000H,AL 13假设想从200中减去AL中的容,用SUB 200,AL是否正确如果不正确,应该用什么方法 解:不正确。 正确的选项是: MOV BL, 200 SUB BL,AL 14试用两种方法写出从80H端口读入信息的指令。再用两种方法写出从40H口输出100H的指令。解: (1)IN AL, 80H (2) MOV D*,80H IN AL, D* (3)MOVAL,

8、100H OUT40H,AL 4)MOV AL,100H MOV D*,40H OUT D*,AL 15假设:AL=20H,BL=10H,当执行CMPAL,BL后,问: (1)AL、BL中的容是两个无符号数,比拟结果如何影响哪儿个标志位 (2)AL、BL中的容是两个有符号数,结果又如何,影响哪几个标志位 解: (l)AL=2OH,BL=1OH,O=0,S=0,Z=0,A=0,P=0,C=0。 (2)因为两个都是符号正数,其结果与(l)一样。 16假设要使AL10,有哪几种方法,试编写出各自的程序段 解:使用乘法指令: MOVBL,10 MULBI, (2)使用移位指令: SHLAL,1 ;AL

9、2 MOV BL,AL SHLAL,2 ;(AL2) 22=AL8 ADDAL,BL ;(AL8)+(AL2(3)使用加法指令: ADD AL,AL ;AL2 MOVBL,AL ADDAL,AL ;AL4 ADDAL,AL ;AL8 ADDAL,BL ;( AL8)+( AL2)17 8086汇编语言指令的寻址方式有哪几类哪种寻址方式的指令执行速度最快 解:寻址方式分为:立即数寻址方式、存放器操作数寻址方式和存储器操作数寻址方式。其中,存放器操作数寻址方式的指令执行速度最快。 18在直接寻址方式中,一般只指出操作数的偏移地址,则,段地址如何确定如果要用*个段存放器指出段地址,指令中应该如何表示

10、 解: 默认数据访问:操作数在DS段;堆栈操作在SS段; 串操作源操作数在(SI), 目的操作数在(DI)段; 用BP作为堆栈指针,则在SS段。如果要显式地指定段地址,则在操作数中用冒号规定段存放器。例如: MOV A*,ES:(B*+10H) ;在ES段19采用存放器间接寻址方式时,B*、BP、SI、DI分别针对什么情况来使用这4个存放器组合间接寻址时,地址是怎样计算的请举例说明。 解:在存放器间接寻址方式下,B*和BP作为间址存放器使用,而SI、DI作为 变址存放器使用。除BP间址默认的段为堆栈段,其他的都默认为数据段。它们都可以单独使用,或加上偏移量或组合使用。如: B*+n LBP+n

11、 SI+n DI+n B*+SI+n B*+DI+n BP+SI+n BP+DI+n 20设DS=2100H,SS=5200H,B*=1400H,BP=6200H,说明下面两条指令所进展的具体操作: 解:MOVBYTEPTRBP,200 MOVWORDPTRB*,2000 解:前一条指令是把立即数(字节)200,传送至堆栈段(BP的默认段偏移量由BP决定的字节单元,物理地址为:52000H+620OH=58200H第二条指令是把立即数2000,传送至数据段(B*的默认段),偏移量是B*决定的字单元地址,为: 21000H+1400H=22400H。 21使用堆钱操作指令时要注意什么问题 传送指

12、令和交换指令在涉及存操作数 时应该分别要注意什么问题 解: 使用堆栈指令可以把存单元作为一个操作数(从存到存)。但堆栈 固定在堆栈段且只能由SP指向。且堆栈操作要修改堆栈指针。MOV指令不能实现存单元间的数据传送。*CHG指令功能是交换,其中有一个操作数必须是存放器。 22下面这些指令中哪些是正确的哪些是错误的假设是错误的,请说明原因。 (1)*CHG CS, A* (2)MOVB*, 1000 (3)*CHGB*, IP (4)PUSHCS (5)POP CS (6)IN B*, D* (7)MOVBYTEB*,100O (8)MOVCS, 1000 解: (l)错误,CS不能交换。 (2)

13、错误,MOV指令不能在存间传送。 (3)错误,IP不能交换。 (4)错误CS可以作为PUSH指令的操作数。 (5)错误,CS可以作为POP指令的操作数。 (6)错误,IN指令的目的操作数是累加器。 (7)错误,目的操作数是字节单元。 (8错误,CS不能作为MOV指令的目的操作数。 23 以下是格雷码的编码表,:0 0000 1 0001 2 0011 3 0010 4 0110 5 0111 6 0101 7 0100 8 1100 请用换码指令和其他指令设计一个程序段,以实现由格雷码向ASCII码的转换。 解:MOVB*,TABLE MOVSI,ASCII_TAB MOVAL,0 MOVC*

14、,10 TRAN:*LATTABLE MOVDL,AL ADDDL,30H MOVSI,DL INCAL LOOPTRAN 24字节扩展指令和字扩展指令一般用在什么场合举例说明。 解: 主要用于字节相除和字相除之前, 把被除数扩展为两倍宽度的操作数。 25 什么叫BCD码 什么叫组合的BCD码 什么叫非组合的BCD码 8086汇编语言在对 BCD码进展加、减、乘、除运算时, 采用什么方法 解:BCD码为十进制编码的二进制数。组合的BCD数是把两位BCD加在一个字节中, 高位的在高4位。非组合的BCD码是把一位BCD数放在一个字节的低4位,高4位为0。8086在BCD加、减和乘法运算以后用BCD

15、调整指令把结果调整为正确的BCD 26字节扩展指令和字扩展指令一般用在什么场合举例说明。 解: 主要用于字节相除和字相除之前, 把被除数扩展为两倍宽度的操作数。 27 什么叫BCD码 什么叫组合的BCD码 什么叫非组合的BCD码 8086汇编语言在对 BCD码进展加、减、乘、除运算时, 采用什么方法 解:BCD码为十进制编码的二进制数。组合的BCD数是把两位BCD加在一个字节中, 高位的在高4位。非组合的BCD码是把一位BCD数放在一个字节的低4位,高4位为0。8086在BCD加、减和乘法运算以后用BCD调整指令把结果调整为正确的BCD数。在BCD除法之前先用BCD调整指令再做除法. 28用普

16、通运算指令执行BCD码运算时,为什么要进展十进制调整具体地讲,在进展BCD码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令 解:因为8086指令把操作数作为二进制数进展二进制运算,要得到正确的BCD结果,需要进展调整。在加、减、乘法指令之后加上BCD调整指令,而在除法指令 之前先用BCD调整指令再用除法指令。 29在以下程序运行后,给相应的存放器及存储单元填入运行的结果: MOV AL, 1OH MOV C*, 100OH MOV B*, 2000H MOV C*,AL *CHGC*, B* MOV DH, B* MOVDL, 01H *CHGC*, B* MOV B*,DL

17、HLT 解:存放器及存储单元的容如下: AL=10H BL=00H BH=20H CL=00H CH=10H DH=10H (1000H)=l0H (2000H)=0lH 30 要求同题4.1,程序如下: MOV AL, 50H MOV BP, 100OH MOV B*, 200OH MOVBP,AL MOV DH, 20H MOVB*,DH MOV DL, OlH MOV DL, B* MOV C*, 300OH HLT 解:存放器及存储单元的容如下: AL=50H BL=00H BH=20H CL=00H CH=30H DL=20H DH=20H BP=1000H (1000H)=50H

18、(2000H)=20H 蓝色字局部有新指令,需重点理解辅导:MOVSBMOVSW数据串传送指令功能:(ES:DI)(DS:SI);附加段数据段MOVSB;传1字节:SISI1,DIDI1 DF=0则+,DF=1则-:先传低地址MOVSW ;传1字: SISI2,DIDI2 DF=0则+,DF=1则-:先传高地址31 自1000H单元开场有一个100个数的数据块,假设要把它传送到自2000H开场的存储区中去,可以采用以下3种方法实现,试分别编制程序以实现数据块的传送。 (l)不用数据块传送指令 (2)用单个传送的数据块传送指令 (3)用数据块成组传送指令。 解:(1) 不用数据块传送指令LEA

19、SI, 1000H LEA DI, 2000H MOV C*, 100 L1: MOV A*, SI MOVDI,A* LOOPLl ;C*-1,不等于零转移HLT (2) 用单个传送的数据块传送指令LEASI,1000H LEADI,2000H MOVC*,100 CLD ;令方向标志DF=0 L1: MOVSB ;(ES:DI)(DS:SI);附加段数据段;传1字节:SISI1,DIDI1 DF=0则+,DF=1则-:先传低地址LOOP L1 HLT(3) 用数据块成组传送指令LEASI, 1000H LEADI, 2000H MOVC*, 100 CLD ;令方向标志DF=0REP MO

20、VSB ;C*0,重复执行MOVSB ,且C*-1;REP 重复前缀:功能:当C*0时重复执行后面的数据串操作指令HLT 32 利用变址存放器,编写一个程序, 把自1000H单元开场的100个数传送到自1070H 开场的存储区中去。 解: LEASI,1000H LEADI,1070H MOVC*,100 CLD REP MOVSB ;C*0,重复执行MOVSB ,且C*-1 HLT 33要求同题4.4,源地址为2050H,目的地址为2000H,数据块长度为50. 解: LEASI,2050H LEADI,2000H MOVC*,50 CLD REPMOVSB ;C*0,重复执行MOVSB ,

21、且C*-1 HLT 34编写一个程序,把自1000H单元开场的100个数传送至1050H开场的存储区中(注意:数据区有重叠)。 解: LEASI, 1000H LEADI,1050H ADDSI, 63H ;1000H单元后 ADDDI, 63H MOVC*, 100 STD ;令方向标志DF=1 REPMOVSB;C*0,重复执行MOVSB ,且C*-1HLT 35在自0500H单元开场,存有100个数。要求把它传送到1000H开场的存储区中, 但在传送过程中要检查数的值,遇到第一个零就停顿传送。 解:LEA SI, 0500H LEA DI, 1000H MOV C*, 100 N1: M

22、OV AL, SI CMP AL, 0 JZ N2 MOVDI,AL INC SI INC DI LOOPN1 N2: HLT 36假设在0500H单元中有一个数 (1)利用加法指令把它乘2,且送回原存储单元假定*2后仍为一个字节; (2)*4; (3)*10假定*l0 255 解:(1) LEA B*, 0500H ;*乘2MOV AL, B* ADD AL, AL MOVB*,AL (2) LEA B*, 0500H ; *4MOV AL, B* ADD AL, AL ; *乘2ADD AL, AL ;2*乘2MOVB*,AL (3)LEAB*, 050OH ; *10假定*l0 255

23、MOVAL, B* ADDAL, AL ; *乘2 MOVDL, AL ;2* ADDAL, AL ;2*乘2=4* ADD AL,AL ; 4*+4*=8* ADDAL, DL ; 8*+2*=10* MOVB*,AL37总线周期的含义是什么8086/8088CPU的根本总线周期由几个时钟组成 如果一个CPU的时钟频率为8MHz,则,它的一个时钟周期是多少一个根本总线周期是多少如果主频为5MHz呢 解:CPU访问总线从存储器或I/0端口读/写字节或字所需的时间称为总线周期。8086/8088CPU的根本总线周期由4个时钟组成。假设CPU的时钟频率为8MHz, 时钟周期为1/8MHz=(1/8

24、)us=0.125us时钟频率为5MHz, 时钟周期为1/5MHz=(1/5)us=0.2us38 假设要扩大1KB RAM(用2114片子),规定地址为8000H83FFH,地址线应该如何连接解: 扩大lKB RAM至规定地址8000H 83FFH,其地址线的低10位(A9 A0)接芯片,高6位地址(Al5 A10 = 100000)产生体选存储芯片组信号。39 外部设备为什么要通过接口电路和主机系统相连 解:因为外部设备种类繁多,输入信息可能是数字量、模拟量或开关量,而且传输速度、电平、功率与CPU等电路采用的TTL电平有很大差异。所以, 需要通过接口电路的信号转换,才能与主机系统相连。

25、40 CPU和输入输出设备之间传送的信息有哪几类 解:CPU和输入输出设备之间传送的信息主要有3类: (l)数据:在微型计算机中,数据通常为8位、16位或32位。 (2)状态信息:在输入时,有输入设备的信息是否准备好;在输出时有输出设备是否有空,假设输出设备正在输出信息,则以忙指示等。 (3)控制信息:例如,控制输入输出设备启动或停顿等。 41设一个接口的输入端口地址为0100H, 状态端口地址为0104H, 状态端口中第5位为1表示输入缓冲区中有一个字节准备好, 可以输入。设计具体程序以实现查询式输入。 解:POLl: IN AL, 0104H ; 输入状态端口数据 ANDAL,20H ;

26、测试第5位为1? JZ POLl ; 第5位为1转 IN AL, 0100H ; 读入输入端口的数据32 8086CPU最多可以有多少个中断类型按照产生中断的方法分为哪两大类 解:8086CPU最多可以有256个中断类型。按照产生中断的方法,可以分为部中断软件中断和外部硬件中断中断两大类。43 在编写中断处理子程序时,为什么要在子程序中保护许多存放器 解:因为主程序调用子程序之前,往往会在一些存放器中保存有运算的中间结果,如果在子程序中也需要使用这些存放器时,主程序保存的中间结果就被子程序的数据覆盖了。所以,要在子程序执行前把这些存放器的容保存起来存入堆栈,称保护现场。在子程序执行完毕时,再从

27、堆找中将数据恢复至存放器中称恢复现场。 44在*一应用系统中,计数器/定时器8253地址为340H343H,定时器0用作分频器(N为分频系数),定时器2用作外部事件计数器,如何编制初始化程序? 辅导:8253的引脚A1和A0用于选择3个计数器端口或控制端口,如下:A1 A0=00 选中计数器0:写初值,读计数值(8位,16位)A1 A0=01 选中计数器1A1 A0=10 选中计数器2A1 A0=11 选中控制R:写工作方式控制字8253工作方式控制字格式:D7D6D5D4D3D2D1D0SC1SC0RL1RL0 M2M1M0BCD00=T0控制字01=T1控制字10=T2控制字11=不用00

28、=锁存计数值供CPU读01=读写低8位10=读写高8位11=先写低8位N1,后写高8位N2000=方式0溢出中断001=方式1单稳*10=方式2速率,重装*11=方式3方波100=方式4选通,软触发101=方式5选通,硬触发0=二进制数1=十进制数解: 根据8253引脚A1、A0的功能可知:T0的地址为340H,T1的地址为341H,T2的地址为342H,控制口的地址为343H。定时器0用作分频器,工作方式2,初始化程序为: MOV AL, 34H ;0011 0100B, D76=00=T0控制字,;D54=11=先写低8位N1,后写高8位N2;D321=010=方式2速率,重装,D0=0=

29、二进制数 OUT 343H, AL ;写入控制口 MOV AL, N1 ; 先写低8位N1, OUT 340H, AL ; 写入T0 MOV AL, N2 ; 后写高8位N2 OUT 340H, AL 定时器2用作外部事件计数器,工作在方式0,其初始程序: MOV AL, 0B0H ;1011 0000B, D76=10=T2控制字,;D54=11=先写低8位N1,后写高8位N2;D321=000=方式0溢出中断,D0=0=二进制数 OUT 343H,AL MOV AL, N1 OUT 342H,AL MOV AL, N2 OUT 342H,AL 45已有一频率发生器,其输出频率为1MHZ,要求通过9.3题的电路计数器/定时器8253,令其产生每秒一次的信号,应如何实现?编写出初始化程序。 解: 1MHZ的信号要变为每秒一次1Hz,则需经过106分频。一个通道的计数为16位最大为65536。故需要两个通道级连,则每个通道计数为1000。用通道0和通道1级连,都工作在方式2,初始化程序为: MOV AL, 34H ; T0控制字 OUT 343H, AL MOV AL, 0E8H ;3E8H=10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论