1、微机原理14答案第一章作业习题课2.微处理器,微型计算机,微型计算机系统有什么联系与区别? 微处理器只是一个中央处理器(CPU),由算术逻辑部件(ALU),累加器和通用寄存器组,程序计数器,时序和控制逻辑部件,内部总线等组成。微处理器不能构成独立工作的系统,也不能独立执行程序,必须配上存储器,外部输入、输出接口构成一台微型计算机方能工作。 微型计算机由CPU,存储器,输入/输出接口电路和系统总线组成。它已具有计算功能,能独立执行程序,但若没有输入/输出设备,数据及程序不能输入,运算结果无法显示或输出,仍不能正常工作。 以微型计算机为主体,配上外部输入/输出设备及系统软件就构成了微型计算机系统。
2、没有配置软件的计算机称为裸机,仍然什么工作也不能做,必须配置系统软件和应用软件,这样才可以正常提供使用。3.微处理器有哪些主要部件组成?其功能是什么? 微处理器是中央处理器(CPU)。它是由算术逻辑部件(ALU),累加器和寄存器组,指令指针寄存器IP,段寄存器,时序和控制逻辑部件,内部总线等组成。微处理器主要部件作用: 算术逻辑部件主要完成算术运算及逻辑运算。 通用寄存器组用来存放参加运算的数据、中间结果或地址。 程序计数器指向要执行的下一条指令,顺序执行指令时,每取一个指令字节,程序计数器加1。 控制逻辑部件负责对整机的控制,包括从存储器中取指令,对指令进行译码和分析,确定指令的操作及操作相
3、应的控制信号和时序,送到微型计算机的其他部件,使CPU内部及外部协调工作。 内部总线用来传送CPU内部的数据及控制信号。第二章 作业习题课1.8086CPU由哪两部分组成?它们的主要功能是什么? 8086CPU由总线接口部件BIU和指令执行部件EU组成,BIU和EU的操作是并行的。 总线接口部件BIU的功能:地址形成、取指令、指令排队、读/写操作数和总线控制。所有与外部的操作由其完成。 指令执行部件EU的功能:指令译码,执行指令。2.8086CPU中有哪些寄存器?各有什么用途? 8086CPU的寄存器有通用寄存器组、指针和变址寄存器、段寄存器、指令指针寄存器及标志位寄存器PSW。 4个16位通
4、用寄存器,它们分别是AX,BX,CX,DX,用以存放16位数据或地址。也可分为8个8位寄存器来使用,低8位是AL、BL、CL、DL,高8位是AH、BH、CH、DH,只能存放8位数据,不能存放地址。 指针和变址寄存器存放的内容是某一段内地址偏移量,用来形成操作数地址,主要在堆栈操作和变址运算中使用。 段寄存器给出相应逻辑段的首地址,称为“段基址”。段基址与段内偏移地址结合形成20位物理地址。 指令指针寄存器用来存放将要执行的下一条指令在现行代码中的偏移地址。 16位标志寄存器PSW用来存放运算结果的特征,常用作后续条件转移指令的转移控制条件。4.要完成下述运算或控制,用什么标志位判断?其值是什么
5、?比较两数是否相等? 将两个数相减,当全零标志位ZF=1时,说明两个数相等,当ZF=0时,两数不等。两数运算后结果是正数还是负数? 用符号标志位SF来判断,SF=1,为负数;SF=0,为正数。两数相加后是否溢出? 用溢出标志位来判断,OF=1,产生溢出;OF=0,没有溢出。采用偶校验方式。判定是否要补“1”? 用奇偶校验标志位判断,有偶数个“1”时,PF=1,不需要补“1”;有奇数个“1”时,PF=0,需要补“1”。(5)两数相减后比较大小? ZF=1时,说明两数是相等的; ZF=0时:无符号数时,CF=0,被减数大;CF=1,被减数小。带符号数时,SF=OF=0或SF=OF=1,被减数大;S
6、F=1,OF=0或SF=0,OF1,被减数小。(6)中断信号能否允许?用中断标志位来判断,IF=1,允许CPU响应可屏蔽中断;IF=0,不响应。5.要完成下述运算或控制,用什么标志位判断?其值是什么?比较两数是否相等? 将两数相减,当全零标志位ZF=1时,说明两数相等,当ZF=0时,两数不等。两数运算后结果是正数还是负数? 用符号标志位SF来判断,SF=1,为负数;SF=0,为正数。两数相加后是否溢出? 用溢出标志位来判断,OF=1,产生溢出;OF=0,没有溢出。采用偶校验方式。判定是否要补“1”? 用奇偶校验标志位判断,有偶数个“1”时,PF=1,不需要补“1”;有奇数个“1”时,PF=0,
7、需要补“1”。(5)两数相减后比较大小? ZF=1时,说明两数是相等的; ZF=0时:无符号数时,CF=0,被减数大;CF=1,被减数小。带符号数时,SF=OF=0或SF=OF=1,被减数大;SF=1,OF=0或SF=0,OF1,被减数小。(6)中断信号能否允许? 用中断标志位来判断,IF=1,允许CPU响应可屏蔽中断;IF=0,不响应。6.8086系统中存储器采用什么结构?用什么信号来选中存储体? 8086存储器采用分体式结构:偶地址存储体和奇地址存储体,各为512k。 用A0和BHE来选择存储体。当A0=0时,访问偶地址存储体;当BHE=0时,访问奇地址存储体;当A0=0,BHE=0时,访
8、问两个存储体。9.实模式下,段寄存器装入如下数据,写出每段的起始和结束地址。 a)1000H 10000H1FFFFH b)1234H 12340H2233FH c)2300H 23000H32FFFH d)E000H E0000HEFFFFH e)AB00H AB000HBAFFFH10.在实模式下对下列CS:IP的组合,求出要执行的下一条指令的存储器地址。 a) CS:IP=1000H:2000H 12000H b) CS:IP=2000H:1000H 21000H c) CS:IP=1A00H:B000H 25000H d) CS:IP=3456H:AB09H 3F069H11.实模式下
9、,求下列寄存器组合所寻址的存储单元地址: a) DS=1000H,DI=2000H 12000H b) SS=2300H,BP=3200H 26200H c) DS=A000H,BX=1000H A1000H d) SS=2900H,SP=3A00H 2CA00H 12. 若当前SS3500H,SP0800H,说明堆栈段在存储器中的物理地址,若此时入栈10个字节,SP内容是什么?若再出栈6个字节,SP为什么值? 堆栈段的物理地址范围:35000H44FFFH 当前栈顶的物理地址为:35000H+0800H=35800H 入栈10个字节以后:SP=0800H-000AH=07F6H 出栈6个字节
10、以后:SP=07F6H+0006H=07FCH 13. 某程序数据段中存放了两个字,1EE5H和2A8CH,已知DS7850H,数据存放的偏移地址为3121H及285AH。试画图说明它们在存储器中的存放情况。若要读取这个两个字,需要对存储器进行几次操作? 它们的物理地址分别是:78500H+3121H=7B621H,78500H+285AH=7AD5AH。 1EE5H的偏移地址是3121H,是奇地址,需要进行两次操作;2A8CH的偏移地址是285AH,是偶地址,需要一次操作。15. 说明8086系统中“最小模式”和“最大模式”两种工作方式的主要区别是什么? 最小模式为单机系统,系统中所需要的控
11、制信号由CPU提供,实现和存储器及I/O接口电路的连接。 最大模式可以构成多处理器/协处理器系统,即一个系统中存在两个以上微处理器,每个处理器执行自己的程序。系统中所需要的控制信号由总线控制器8288提供,8086CPU提供信号控制8288,以实现全局资源分配及总线控制权传递。在两种模式中,CPU的2431引脚意义不同。 最小模式中引脚MN/MX接5V,最大模式中该引脚接地。16. 8086系统中为什么要用地址锁存器?8282地址锁存器与CPU如何连接? CPU与存储器(或者I/O端口)进行数据交换时,CPU首先要送出地址信号,然后再发出控制信号及传送数据。由于8086引脚的限制,地址和数据分
12、时复用一组总线,所以要加入地址锁存器,先锁存地址,使在读/写总线周期内地址稳定。 8282是三态缓冲的8位数据交换锁存器,由选通信号STB与CPU的地址锁存允许信号ALE相连,当STB端选通信号出现,8位输入数据锁存到8个D触发器中。17.哪个标志位控制CPU的INTR引脚? 中断允许标志位IF控制INTR引脚的中断输入。18.什么叫总线周期?在CPU读/写总线周期中,数据在哪个机器状态出现在数据总线上? 总线周期:BIU完成一次访问存储器或I/O端口操作所需要的时间。 读总线周期,在T3或TW状态数据出现在数据总线上;写总线周期,在T2状态数据出现在数据总线上。20.8086CPU重新启动后
13、,从何处开始执行指令? 从内存的FFFF0H开始执行指令。21.8086CPU最小模式系统配置包括哪几部分? 包括时钟发生器、地址锁存器、数据收发器、存储器及I/O接口。 补充题1:已知段地址和偏移地址分别为2015H和0028H,此存储单元的物理地址是什么? 存储单元的物理地址:20150H+0028H=20178H 补充题2: 若CSA000H,求当前代码在存储器中的物理地址范围是什么?若数据段位于52000H到61FFFH的64K范围内,问DS=? 物理地址范围:A0000HAFFFFH,DS=5200H。微机原理与接口技术第三章作业习题课2. DS=1000H, BX=0200H, S
14、I=0002H (10200H10205H)依次存有10H,2AH,3CH,46H,59H,6BH(1)MOV AX, 0200H ; AX=0200(2)MOV AX, 200H 物理地址=1000H10H+0200H=10200H, AX=2A10H(3)MOV AX, BX ; AX=0200H(4)MOV AX , 3BX 物理地址=1000H10H +0200H+3H=10203H, AX=5946H(5)MOV AX , BX+SI 物理地址=1000H10H+0200H +2H=10202H , AX=463CH(6)MOV AX, 2BX+SI 物理地址=1000H10H +2
15、00H+2H+2H=10204H , AX=6B59H3DS=1000H, ES=2000H, SS=3500H, SI=00A0H, DI=0024H, BX=0100H, BP=0200H, VAL=0030H (1)MOV AX, 100H 直接寻址方式,10100H 物理地址DS10H+100H=10000H+0100H=10100H(2)MOV AX, VAL 直接寻址方式,10030H 物理地址DS10H+VAL=10000H+0030H=10030H (3)MOV AX, BX 寄存器间接寻址,10100H 物理地址DS10H+BX=10000H+0100H=10100H (4)
16、MOV AX, ES:BX 寄存器间接寻址,20100H 物理地址ES10H+BX=20000H+0100H=20100H (5)MOV AX, SI 寄存器间接寻址,100A0H物理地址=DS10H+SI=10000H+00A0H=100A0H(6)MOV AX, BX+10H 寄存器相对寻址,10110H物理地址=DS10H+BX+10H=10000H+0100H+10H=10110H(7)MOV AX, BP 寄存器间接寻址,35200H物理地址=SS10H+BP=35000H+0200H=35200H(8)MOV AX, VALBPSI 相对基址变址寻址,352D0H物理地址=SS10
17、H+BP+SI+VAL =35000H+0200H+00A0H+0030H=352D0H(9)MOV AX, VALBXDI 相对基址变址寻址,10154H物理地址=DS10H+BX+DI+VAL =10000H+0100H+0024H+0030H=10154H(10)MOV AX, BPDI 基址变址寻址,35224H物理地址=SS10H+BP+DI =35000H+0200H+0024H=35224H6(1)MOV DL, AX 错,寄存器寻址方式中,目的操作数与源操作数长度必须一致(2)MOV 8650H, AX 错,目的操作数不可以是立即数(3)MOV DS, 0200H 错,MOV指
18、令不允许将立即数传入段寄存器(4)MOV BX, 1200H 错, MOV指令的两个操作数不能同时为存储器(5)MOV IP, 0FFH 错, IP不能作为MOV指令的目的操作数(6)MOV BX+SI+3, IP 错, IP不能作为MOV指令的源操作数(7)MOV AX, BXBP 错,BX与BP不可以同时出现在源操作数当中(8)MOV AL, ES:BP 对(9)MOV DL, SIDI 错,SI与DI是两个变址寄存器,不可以同时出现在源操作数中。(10)MOV AX, OFFSET 0A20H 错,OFFSET后面跟的应该是符号地址,再把符号地址的值作为操作数。(11)MOV AL, O
19、FFSET TABLE 错,TABLE的偏移地址是16位,目的与源长度不一致(12)XCHG AL, 50H 错,交换指令可以在寄存器之间,寄存器和存储器之间进行,不可以是立即数。(13)IN BL, 05H 错, BL不能作为IN指令的目的操作数,只能用AL或AX(14)OUT AL, 0FFEH 错,端口地址0FFEHFFH, 应用DX间接寻址, 同时源操作数和目标操作数的位置颠倒了,应改为OUT DX, AL。10. ARRAY DB NEW DB 7 DUP(?) SUM DW 0 AVERAGE DB 0 (1) MOV CX, 07H MOV BX, 00H NEXT: MOV A
20、L, ARRAYBX ADD AL, 5 DAA MOV NEWBX,AL INC BX LOOP NEXT HLT(2) MOV CX, 06H MOV BX, 01H MOV AH, 00H MOV AL, ARRAY L1: ADD AL, ARRAYBX DAA ADC AH, 00H ;将进位加到AH中 INC BX LOOP L1 MOV SUM, AX(3)MOV DX, SUM ; DX=0H(BCD码) MOV BL, 07H MOV AX, DX ; 取千位、百位数 AND AL, 0F0H MOV CL, 04H ROL AL, CL ; AX=00H AAD ; ALA
21、H10AL, AH00 DIV BL ;十位商在AL中,余数在AH中 MOV AVERAGE+1, AL ;存平均成绩十位 MOV AL, DL ;取个位和数 AND AL, 0FH AAD ; ALAH10AL, AH00 DIV BL ;个位商在AL中,余数在AH中 MOV AVERAGE, AL ;存平均成绩个位 MOV AVERAGE+2, AH ; 存余数11.AX=2508H,BX=0F36H,CX=0004H,DX=1864H(1)AND AH, CL AH=04H,CF=0;(0010 0101B与0000 0100B)(2)OR BL, 30H BL=36H,CF=0;(00
22、11 0110B或0011 0000B) (3)NOT AX AX=DAF7H,CF无影响;(0010 0101 0000 1000B取反后1101 1010 1111 0111B) (4)XOR CX, 0FFF0H CX=FFF4H,CF=0;(0000 0000 0000 0100B和1111 1111 1111 0000B异或后1111 1111 1111 0100B) (5)TEST DH, 0FH TEST操作并不修改结果,CF=0; (6)CMP CX, 00H CMP操作并不修改结果,CF=0;(7)SHR DX, CL DX=0186H,CF=0;(8)SAR AL, 1 A
23、H=04H,CF=0;(9)SHL BH, CL BH=F0H,CF=0;(10)SAL AX, 1 AX=4A10H,CF=0;( 0010 0101 0000 1000B 左移)(11)RCL BX, 1 若程序执行之前CF=0,BX=1E6CH,CF=0; 若程序执行之前CF=1,BX=1E6DH,CF=0。(12)ROR DX, CL DX=4186H,CF=0。 12DATA SEGMENT STRING DB The personal computer & TV DATA ENDS EDATA SEGMENT GET_CHAR DB 26DUP(?) NEW_STR DB The
24、computer EDATA ENDS (1) MOV SI, OFFSET STRING MOV DI, OFFSET GET_CHAR MOV CX, 001AH CLD REP MOVSB(2) MOV SI, OFFSET STRING MOV DI, OFFSET NEW_STR MOV CX, 001AH CLD REPZ CMPSB ;DS:SI-ES:DI JNE CLR_AL MOV AL, 1 JMP SET_BL CLR_AL: MOV AL, 0 SET_BL: MOV BL, 001AH SUB BL, CL HLT(3) MOV DI, OFFSET STRING
25、MOV CX, 001AH MOV AL, & CLDL1: SCASB ;AL-ES:DI JZ FINDNEXT: LOOP L1 HLTFIND: MOV BL, MOV DI-1, BL ; 用空格替换& JMP NEXT(4) MOV SI, OFFSET STRING ;数据段,源串 MOV DI, OFFSET CAPS ;附加段,大写字符 MOV BX, OFFSET CHART ;附加段,其它字符 MOV CX, 001AH CLD L1: LODSB ;ALDS:SI MOV SI-1, 00H ; 取出字符后该单元清零 CMP AL, A JB OTHER CMP AL,
26、 Z JA OTHER STOSB ; 存大写字符 JMP L2 OTHER: XCHG BX, DI ; 存其它字符 STOSB XCHG BX, DI L2: LOOP L1 HLT 13.(1)JMP PROG_N 段内直接近转移,目的地址为1200H:0278H(或12278H) (2)JMP BX 段内寄存器间接转移,目的地址为1200H:0300H(或12300H) (3)JMP BX 物理地址DS10H+BX=2000H10H+0300H=20300H (20300H)=4800HIP 段内存储器间接转移,目的地址为1200H:4800H(或16800H) (4)JMP FAR
27、PROG_F 段间立接转移,目的地址为3400H:0ABCH(或34ABCH) (5)JMP DWORD PTRBX 物理地址DS10H+BX=2000H10H+0300H=20300H (20300H)=4800HIP, (20302H)=00FFHCS 段间存储器间接转移,目的地址为00FFH:4800H(或057F0H)JMP改为CALL后,目的地址与JMP相同。(1)CALL PROG_N 段内直接调用,3字节指令,0103H入栈(2)CALL BX 段内寄存器间接调用,2字节指令,0102H入栈(3)CALL BX 段内存储器间接调用,2字节指令,a0102H入栈(4)CALL FA
28、R PROG_F 段间直接调用,5字节指令,1200H和0105H分别入栈(5)CALL DWORD PTRBX 段间间接调用,2字节指令,1200H和0102H分别入栈15.(1)LOOP NEXT (2)LOOPE NEXT (3)LOOPNE NEXTSTART: MOV AX, 01H MOV BX, 02H MOV DX, 03H MOV CX, 04HNEXT: INC AX ADD BX, AX SHR DX, 1 ( ) 程序运行前 DX=00000011B (1)AX=05H BX=10H CX=00H DX=00H (2)AX=02H BX=04H CX=03H DX=01
29、H (3)AX=03H BX=07H CX=02H DX=00H第四章作业习题课1.下列变量各占多少字节? A1 DW 23H, 5876H A2 DB 3 DUP(?), 0AH, 0DH, $ A3 DD 5 DUP(1234H, 567890H) A4 DB 4 DUP(3 DUP(1, 2, ABC)解:A1变量占4个字节; A2变量占6个字节; A3变量占5840个字节; A4变量占43560个字节;3.有符号定义语句如下: BUF DB 3, 4, 5, 123 ABUF DB 0 L EQU ABUF-BUF求L的值为多少?解:BUF共定义了6个字节,则ABUF的地址为ABUF+6,因此L的值为6。19应考虑数组中可能出现多个0的情况 程序如下: EDATA SEGMENT ;定义数据段 BUFF DB N, XXH, M EQU 0 EDATA ENDS ; STACK SEGMENT STACK;定义堆栈段 DW 50H DUP(?) TOP LABEL WORD STACK ENDS ;CODE SEGMENT ;定义代码段 ASS
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1