微机原理与接口技术课后习题答案清华大学
微机原理与接口技术课后部分习题参考答案 第一章 2. 第 3项任务,根据状态标志位的状态决定转移方向。 3. 程序存储是将要执行的程序的全部指令存储到存储器中,程序控制指程序开始执行后,通过指令流控 制数据或计算机,完成设定的任务。 4. 分 BIU 总线接口部件和 EI 执行部件两大部件,其中总线接口部件 BIU 负责取指令和数据,执行部件 EI 负责执行指令及运算。在执行一条指令的同时可以取下一条指令,重叠运行,速度快。 5. 有 6个状态标志,分别为进位标志 CF、溢出标志 OF、零标志 ZF、奇偶标志 PF、负标志 SF、辅助进 位标志 AF。3 个控制标志分别为中断允许标志 IF、单步标志 TF、方向标志 DF。 标志位的内容可以通过标志位操作指令来操作,例如 CLC 指令清除进位位,即使 CF=0,STC 指令使 CF=1,CLI 指令使 IF=0,禁止中断,STI 指令使 IF=1,允许中断。还可以通过 LAHF 指令取来标识寄存 器的内容修改后用 SAHF 指令送回去。也可以用 PUSHF/POPF 指令来修改标志寄存器的内容。 6. 实模式下分段靠 4个段寄存器实现。段寄存器中的值就是段地址,当偏移地址为 0时的段地址+偏移地 址就是该段的起始地址。 物理地址是由段地址左移 4位后与偏移地址相加形成的 20位地址。 7. 说法不一定正确。对顺序执行指令的计算机是对的。对重叠或流水线的计算机就不对了。 例如对 8086CPU,由于采用了取指令与执行指令的一次重叠,尽管执行一条指令的总时间并没有变化, 但连续执行 n 条指令时,总的时间会大大缩短,可以简单的比喻成总时间为原时间的二分之一,快了一倍。 8. 引入流水线后,执行一条指令的总时间并没有变化。 9. 高速缓存的目的是提高存储器的速度,进而提高了 CPU 的速度。虚拟存储器的目的是为了给程序员或 程序一个大的存储或运行空间。 10。8086采用总线接口部件 BIU 与执行部件 EU 分开提高了速度,286将 8086的 BIU 进一步分成 3个部 件,提高了并行性。386在 286基础上进一步增加成 6个逻辑部件,实现多条指令重叠,进一步提高了速 度,486采用硬组合逻辑控制器,同时采用内嵌高速缓存,提高速度。Pentium 采用多流水技术,指令 cache 数据 cache 技术提高速度。都采用扩展地址线数量来扩大容量。 第二章 1. (1)1000:0--1000:FFFFH, 即 10000H--1FFFFH.(2)12340--2233FH(3)略(4)略。 2. (1) 逻辑 1000H:2000H,物理 12000H. (2)略(3)略(4)略。 3. DS 可以与 BX,SI,DI 等组合, ES 可以与 BX,SI,DI 等组合,串指令约定与 DI 组合。 CS 只与 IP 组 合, SS 一般只与 SP 组合,也可以与 BP 组合。 4. 便于程序运行空间保护,便于兼容早期的微处理器。 5. 尽管保护模式下的寻址系统有些复杂,但从用户的角度来说,没有什么不同。 6. 描述符包括基地址、界限、访问权限等信息。 7. 页表要映射到 20位的物理地址中。 8. 段被访问时,置 1,用于统计该段被访次数。这两个 A 位服务的对象不一样,不多余。 第三章 129页 1. 无符号分离式 BCD 码。0011表示 3, 后面的 4位可以是 0-9,可以表示 ASCII 码 0-9。 2. 由程序或程序员来定义。数据在计算机中都是用代码来表示的,一个数据(例如 00110101)的意义是 程序员自己掌握的,程序员把它当做一个字符,就是数字 5的 ASCII 码。如果说他是一个无符号数,就 是代表十进制数 53,如果说是组合式 BCD 码,就代表十进制数 35。 3. 段定义,包括数据段,堆栈段,代码段等。数据及变量定义,约定段寄存器与段名的映射,代码段开 始,代码段编程,代码段结束,汇编程序结束等。4. 操作符由控制器译码器解释执行,伪操作符由汇编程序(翻译程序)解释执行。 5. 转移指令后的标号是偏移地址。只有当应用该标号的转移指令位置确定后,在该指令地址正负 128范 围内的标号是短转移,类型是字节,在 16位二进制数之内是段内的字类型,超出 16位二进制数之外的是 段间转移,是双字类型。 6. (1) DB 20, 20 DUP (0) (2 ) DB “The course is easy ”, 0 (3) DB “hello…. !!!!!”, 0dh,0ah,” $” (4) DW 100 DUP (0) 11. 数据定义语句表示,16进制书写。寻址方式包括立即数、直接、间接寻址等多种。逻辑地址。 12. 指令格式包括操作码、操作数(或地址)两部分, 这里的操作数不一定就是要处理的那个数据,也 可以是那个数据的地址或寄存器等,是找到那个数的寻址方式。而参加操作的数据就是指具体的数据。 13. 判断操作数的寻址方式是否正确?说明原因。 • (1)[ AX] ;例如MOV BL, [ AX] ;错,AX不是地址寄存器 • (2)BP ;例如 MOV AX , BP; 正确, 寄存器寻址 • (3)[SI+DI] ;例如 MOV AL , [SI+DI] 错,不能有2个变址寄存器 • (4)[SP] ;例如 MOV AL , [SP], 错,不能用堆栈指针,堆栈指针只能由堆栈指令操作 • (5)CS ;例如 MOV AX ,CS; 正确, 寄存器寻址 • (6)BH ;例如 MOV AL ,BH; 正确, 寄存器寻址 • (7)[BX+BP+32] ;例如 MOV AL , [BX+BP+32]; 错,不能有2个基地址寄存器 • (8)[BL+44] ; 例如 MOV AL , [BL+44]; 错,BL不是完整的地址寄存器 • (9)[CX+90] ;例如 MOV AL , [CX+90]; 错,CX不是地址寄存器 • (10)[DX] ;例如 MOV AL , [DX]; 错,DX不是地址寄存器 • (11)BX+90H ;例如 MOV AX , BX+90H; 错,不能加 • (12)[BX*4] ; 例如 MOV AL , [BX*4] ;错,不能乘 • (13)SI[100H] ;例如MOV AX ,SI[100H]; 正确,相对变址寻址,但写法不好,最好是MOV AX , [SI+100H], MOV AX , 100[SI] • (14)[DX+90H] ;例如 MOV AX , [DX+90H]; 错,DX 不是地址寄存器 14题 • 假定 DS=2000H • ES=2100H • SS=1500H • SI=00A0H • BX=0100H • BP=0010H • 数据变量wVald的偏移地址为0050H • 指出下列指令源操作数的寻址方式? • (1)MOV AX, 0