江西理工大学微机原理.pdf
.1/13 1、统计出某数组中相邻两数之间符号变化的次数 DATA SEGMENT ARRAY DB 20 DUP NUM DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA STARTUP:LEA SI,ARRAY;MOV AL,SI MOV BL,0 MOV CX,19 AGAIN:INC SI XOR AL,SI J NS NEXT INC BL NEXT:MOV AL,SI LOOP AGAIN MOV NUM,BL MOV AH,4CH INT 21H CODE ENDS END STARTUP 2、乘法指令实现 32 位二进制数与 16 位二进制数相乘 MODEL SMALL .8086 .DATA N1 DW 1234H N2 DW 5678H N3 DW 4444H M1 DW 0 M2 DW 0 M3 DW 0 CODE .STARTUP MOV AX,N2 MUL N3 MOV M3,AX MOV M2,DX MOV AX,N3 MUL N1 ADD M2,AX ADC M1,DX .EXIT END .2/13 3、设有 3 个自变量的变量名与其内容如下 VAR1 3C46H,VAR2 F678H,VAR3 0059H 设计一个数据段定义这三个变量与其地址表 变量 DDRTABL DATA SEGMENT VAR1 DW 3C46H VAR2 DW F678H VAR3 DW 0059H ADDRTABL DD VAR1 DD VAR2 DD VAR3 DATA ENDS 4、设有一个符号数组共 M 个求其中最大的数,如需要求绝对值最大应如何修改 如为无符号数程序如何修改.DATA SEGMENT M EQU 10 DAT DW M DUP MAX DW?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA STARUP:MOV AX,DAT MOV MAX,AX CLD LEA SI,DAT MOV CX,M L1:LODSW CMP AX,MAX JNG LAB MOV MAX,AX LAB:LOOP L1 MOV AH,4CH INT 21H CODE ENDS END STARTUP 绝对值修改需要在 LODSW 插入 AND AX,AX JNS LAB1 NEG AX LAB1:CMP AX,MAX 程序初始化时 MAX 应送入 0 无符号数程序修改.3/13 判别条件 CMP AX,MAX JNG LAB 修改为 CMP AX,MAX E LAB 5、编制一个程序将 20 个字节的数组分为正数和负数组并计算两个数组中数据的个数 DATA SEGMENT DAT DB 20 DUP PDAT DB 20 DUP PDAT DB?PLEN DB?NDAT DB 20 DUP NLEN DB?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA STARTUP:XOR BX,BX LEA SI,DAT XOR DI,DI CLD MOV CX,20 LOOP0:LODSB CMP AL,0 JGE LOOP1 MOV NDATBX,AL INC BX JMP LAB LOOP1:MOV PDATDI,AL INC DI LAB:DEC CX JNZ LOOP0 MOV PLEN,DI MOV NLEN,BX MOV AH,4CH INT 21H CODE ENDS END STARTUP 6、把从 A 开始的 8 个字节单元内容依次和从 B 开始的 8 个相应的字节单元内容互换.DATA SEGMENT A DB ABCDEFGH B DB 12345678 DATA ENDS CODE SEGMENT.4/13 ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI ,A LEA DI,B MOV CX,8 LP:MOV AL,SI XCHG AL,DI MOV SI,AL INC SI INC DI LOOP LP MOV AH ,4CH INT 21H CODE ENDS END START 7、计算 BUF 开始的数组中的 100 个元素中非零元素的个数并将其存入 COUNT 单元,补全指令 BUF DB 100 DUP COUNT DB 0 .STARTUP:MOV AX,DATA MOV DS,AX LEA SI,_ MOV CX,_ CON:MOV AL,SI CMP AL,_ .JZ NEXT INC _ NEXT:INC SI LOOP _ HLT 答案BUF 100 0 COUNT CON 8、程序执行后寄存器的值 MOV AX,01H MOV BX,02H PUSH BX PUSH AX POP BX 执行后 BX=1_ POP AX 执行后 AX=_ MOV AX ,3F5FH 执行后 AL=_ MOV CX,4 ROR AL,CL 执行后 AL=_ AND AL,0FH 执行后 AL=_ .5/13 答案01H 02H 5FH 0F5H 05H 8、大题若 8086 系统中采用单片 8259A 作为外部可屏蔽中断的优先级管理正常全嵌 套方式边缘触发非缓冲连接非自动终端结束端口地址为 20H 和 21H其中某 中断源的中断类型码为 4AH其中断服务子程序名为 SUBROUTINE且已知其地址为 2000.3A40H 请问本题中的中断源应与 8259A 的哪个 IR 输入端相连其中断矢量地址是多少矢量 区对应的 4 个单元内容是什么 答与 IR2 相连地址为 0000.0128H矢量对应的 4 个单元内容依次为 40H,3AH,00H,20H 2请为 8259A 设置正确的初始化命令并编写程序:ICW1=00010011单片边缘触发必须设置 ICW4ICW2=48H终端类型码基值为 48H无 ICW3单片 8259A 系统无需设置 ICW3ICW4=00000001正常全嵌套方式 非缓冲连接非自动中断结束8086 CPU初始化程序如下 MOV AL,13H OUT 20H,AL MOV AL,48H OUT 21H,AL MOV AL,01H OUT 21H,AL 3请编写程序片段设置该中断源的中断 矢量 MOV AX,0 MOV ES,AX MOV DI,4AH*4 MOV AX,OFFSET SUBROUTINE CLD STOSW MOV AX,SEG SUBROUTINE STOSW 9、分支程序设计实验 1显示 AL 中两位十六进制数程序 CODE SEGMENT ASSUME CS:CODE START:MOV AL,3EH MOV BL,AL MOV DL,AL MOV CL,4 SHR DL,CL CMP DL,9 E NEXT1 ADD DL,7 NEXT1:ADD DL,30H MOV AH,2 INT 21H .6/13 MOV DL,BL AND DL,0FH CMP DL,9 E NEXT2 ADD DL,7 NEXT2:ADD DL,30H MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 2显示键入字符 CODE SEGMENT ASSUME CS:CODE START:MOV AH,1 INT 21H CMP AL,0DH JZ DONE CMP al,0 next CMP AL,9 JA CHRUP MOV DL,AL MOV AH,2 INT 21H JMP START CHRUP:CMP AL,41H NEXT CMP AL,5AH JA CHRDN DISPC:MOV DL,C MOV AH,2 INT 21H NEXT:JMP START CHRDN:CMP AL,61H NEXT CMP AL,7AH JA NEXT JMP DISPC DONE:MOV AH,4CH INT 21H CODE ENDS END START .7/13 10、实验四偶校验程序 DSEG SEGMENT STRN DB ABCDEfghijkLMNOPQuvw,$N DB?DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START:MOV AX,DSEG MOV DS,AX LEA SI,STRN MOV DL,0 AGAIN:MOV AL,SI CMP AL,$JE DONE TEST AL,0FFH JPE NEXT OR AL,80H MOV SI,AL INC DL NEXT:INC SI JMP AGAIN DONE:MOV N,DL MOV AH,4CH INT 21H CSEG ENDS END START 2加法程序 CODE SEGMENT ASSUME CS:CODE,DS:CODE START:MOV AX,CS MOV DS,AX LEA SI,DAT1 LEA DI,DAT2 LEA BX,DAT3 MOV CX,10 XOR AL,AL AGAIN:MOV AL,SI ADC AL,DI MOV BX,AL INC SI INC DI INC BX LOOP AGAIN .8/13 MOV AH,4CH INT 21H DAT1 DB 70H,80H,90H,0A0H,0A1H,0A2H,0A3H DB 74H,65H,56H DAT2 DB 45H,67H,89H,1AH,2BH,3CH DB 4DH,5EH,6FH,04H DAT3 DB 10 DUP CODE ENDS END START 11、填空题 1、输入输出指令间接寻址必须通过 DX 寄存 器 2、20 根地址线最大内存容量是 220 3、标志寄存器有 9 位标志位其中 3 位控制 标志位6 位状态标志位 4、BIU 和 EU 两个单元并行工作在 CPU 中 5、SP 和 BP 是指针寄存器SP 指示堆栈段 段顶的偏移地址 6、零标志位 ZF=1 时结果全为 0 7、对于 5 片 8259A 形成的级联共有 36 级中 断 8、debug 跟踪执行命令是 t 命令 9、中断矢量表存放在存储器最低位 10、存储器是分段的每段最大长度是 64KB 11、段内偏移地址从 0000 到 FFFFH 12、8259A A0 与地址总线 A1 相连 13、取指令时段地址由 CS 寄存器提供偏 移地址由 IP 寄存器提供 14、16 位有符号二进制补码 X 围为-3276832767 15、8086 可访问偶数存储体的选择信号是 A0 16、中断矢量表可以容纳 256 个中断向量 每个中断向量有 4 个字节 17、DOS 功能调用功能号在 AH 寄存器里面 18、条件转移指令多路分支输入 5 路分支 需要 3 条件转移指令 12、设有两个等字长字节型字符串试编 写一程序比较他们是否完全相同如相同 则讲字符 Y 送入 AL 中否则将字符 N 送入 AL 中 DATA SEGMENT STRING1 DB ASdAS STRING2 DB ASASd .9/13 DATA ENS CODE SEGMENT ASSUME CS:CODE,DS:DATA STARTUP:MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,STRING1 LEA DI,STRING2 MOV CX,5 REPZ CMPSB STRING1,STRING2 JNZ LABNE MOV AL,Y MP EXIT LABNE:MOV AL,N EXIT:MOV AH,4CH INT 21H CODE ENDS END STARTUP 13 可屏蔽中断响应和处理过程 1中断允许标志 IF 置 1没有异常没有 非屏蔽中断 NMI=0,没有总线请求CPU 响应 可屏蔽中断请求 2外部设号号后将它乘以 4即可从中断服务程 序向量表中取出中断服务程 序的入口地址包括段地址和段内偏移地址.据此 CPU 便可转入中断服务程序.如 8259A 工作在 AEOI模式则在第二个脉冲信号结束时 将使被响应的中断源在 ISR 中的对应位清 0否则直至中断服务程序结束发出 EOI 命令才使 ISR 中的对应位清0.1.2 如何理解计算机系统的层次结构 解1第一级实际机器 M1 机器语言程序直接在 M1 上执行2 第二级虚拟机器 M2汇编语言机器将 汇编语言程序先翻译成机器语言程序再在 M1 上执行3第三级虚拟机器 M3将高级语言程序先翻译成汇编语 言程序再在 M2、M1或直接到 M1上执 行4第零级微程序机器 M0微指令系 统由硬件直接执行微指令.5实际上 实际机器 M1 和虚拟机器 M2 之间还有一级虚 拟机它是由操作系统软件构成该级虚拟 机用机器语言解释操作系统.6虚拟机器 M3 还可以向上延伸构成应用语言虚拟系.10/13 统.1.5 冯诺依曼计算机的特点是什么 解冯诺依曼计算机的特点是 1计算机由运算器、控制器、存储器、输入设备、输出设备五大部件组成 2指令和数据以同等地位存放 于存储器内并可以按地址访问 3指令和数据均用二进制表示 4指令由操作码、地址码两大 部分组成操作码用来表示操作的性质地 址码用来表示操作数在存储器中的位置 5指令在存储器中顺序存放 通常自动顺序取出执行 6机器以运算器为中心典型 的冯诺依曼机.1.6 画出计算机硬件组成框图说明各部件 的作用与计算机硬件的主要技术指标.解现代的计算机组成框图如图 1.1 所示 输入设备 控制器 运算器 输出设备 存储器 控制线 反馈线 数据线 计算结果计算步骤和 原始数据 图 1.1 以存储器为中心的计算机结 构框图 各部件的作用 运算器用来完成算术运算和逻辑 运算并将运算的中间结果暂存在运算器内 存储器用来存放数据和程序 控制器用来控制、指挥程序和数 据的输入运行以与处理运算结果.输入设备用来将人们熟悉的信息 形式转换为机器能识别的信息形式常见有 键盘、鼠标等.输出设备可以将机器运算结果转 换为人们熟悉的信息形式如打印机输出 显示器输出.硬件的主要技术指标.11/13 机器字长指 CPU 一次能处理 数据的位数通常与 CPU 的寄存器位数有关.存储容量包括主存容量和辅存 容量存放二进制代码的总数存储单元个 数存储字长.运算速度主频、Gibson 法、MIPS 每秒执行百万条指令、CPI 执行一条指 令所需时钟周期数、FLOPS 每秒浮点运算次 数.3.4 为什么要设置总线判优控制常见的集 中式总线控制有几种各有何特点哪种方 式响应时间最快哪种方式对电路故障最敏 感 解总线判优控制或称仲裁逻辑 解决多个部件同时申请总线时的使用权分配 问题分为集中式和分布式两种前者将控 制逻辑集中在一处如在 CPU 中后者将 控制逻辑分散在与总线连接的各个部件或设 备上.常见的集中式总线控制有三种链 式查询、计数器定时查询、独立请求 特点链式查询方式连线简单易 于扩充对电路故障最敏感计数器定时查 询方式优先级设置较灵活对故障不敏感 连线与控制过程较复杂独立请求方式速度 最快但硬件器件用量大连线多成本较 高.3.8 为什么说半同步通信同时保留了同步通 信和异步通信的特点 解半同步通信既能像同步通信那 样由统一时钟控制又能像异步通信那样允 许传输时间不一致因此工作效率介于两者 之间.4.3 存储器的层次结构主要体现在什么地 方为什么要分这些层次计算机如何管理 这些层次 答存储器的层次结构主要体现在 Cache-主存和主存-辅存这两个存储层次上.Cache-主存层次在存储系统中主要 对 CPU 访存起加速作用即从整体运行的效 果分析CPU 访存速度加快接近于 Cache 的速度而寻址空间和位价却接近于主存.主存-辅存层次在存储系统中主要 起扩容作用即从程序员的角度看他所使.12/13 用的存储器其容量和位价接近于辅存而速 度接近于主存.综合上述两个存储层次的作用从 整个存储系统来看就达到了速度快、容量 大、位价低的优化效果.主存与 CACHE 之间的信息调度功 能全部由硬件自动完成.而主存与辅存层次 的调度目前广泛采用虚拟存储技术实现即 将主存与辅存的一部分通过软硬结合的技术 组成虚拟存储器程序员可使用这个比主存 实际空间物理地址空间大得多的虚拟地 址空间逻辑地址空间编程当程序运行 时再由软、硬件自动配合完成虚拟地址空 间与主存实际物理空间的转换.因此这两 个层次上的调度或转换操作对于程序员来说 都是透明的即程序员不知道.4.9 什么叫刷新为什么要刷新说明刷新 有几种方法.解刷新对 DRAM 定期进行的全 部重写过程.刷新原因因电容泄漏而引起的 DRAM 所存信息的衰减需要与时补充因此 安排了定期刷新操作.常用的刷新方法有三种集中式、分散式、异步式.集中式在最大刷新间隔时间内 集中安排一段时间进行刷新存在 CPU 访存 死时间.分散式在每个读/写周期之后插入 一个刷新周期无 CPU 访存死时间.异步式是集中式和分散式的折衷.4.25 什么是程序访问的局部性存储系统 中哪一级采用了程序访问的局部性原理 解所谓程序访问的局部性即在一 小段时间内最近被访问过的程序和数据很 可能再次被访问在空间上这些被访问的 程序和数据往往集中在一小片存储区在访 问顺序上指令顺序执行比转移执行的可能 性大.存储系统的 Cache主存级和主存 辅存级都用到程序访问的局部性原理.对 Cache主存级而言把 CPU 最近期执行的 程序放在容量较小速度较高的 Cache 中.对 主存辅存级而言把程序中访问频度高、.13/13 比较活跃的部分放在主存中这样既提高了 访存速度又扩大了存储器容量.4.33 简要说明提高访存速度可采取的措施.解提高访存速度可采取的措施 采用高速器件选取存取周期短的芯片 可提高存储器的速度 采用 CacheCPU 将最近期要用的信息先 调入 Cache而 Cache 的速度比主存快得多 这样 CPU 每次只需从 Cache 中取出或存入信 息从而缩短了访存时间提高了访存速度.调整主存结构如采用单体多字结构在 一个存取周期内读出多个存储字可增加存 储器的带宽或采用多体结构存储器.5.35 试从 5 方面比较程序中断方式和 DMA 方式的区别.解DMA 方式和程序中断方式的区别为1 从数据传送看程序中断方式靠程序传送 DMA 方式靠硬件传送2从 CPU 响应时间看 程序中断方式在一条指令执行结束时响应 而 DMA 方式在存取周期结束时 CPU 才能响应 即将总线控制权让给 DMA 传送3程序中 断方式有处理异常事件的能力DMA 方式没有 这种能力4程序中断方式需要中断现行 程序故需保护现场DMA 方式不必中断现行 程序无需保护现场5DMA 的优先级比程 序中断高.7.21 比较 RISC 和 CISC.答RISC 相对于 CISC 的优点 1充分利用 VLSI 芯片的面积 2提高计算机的速度 3便于设计可降低成本提高可靠性 4有效支持高级语言程序.RISC 缺点CISC 大多能实现软件兼容即高 档机包含了低档机的全