微机原理、汇编语言与接口技术
- 格式:doc
- 大小:723.00 KB
- 文档页数:81
《16/32 位微机原理、汇编语言及接口技术教程》部分习题参考解答第 1 章微型计算机系统概述〔习题 1.2 〕什么是通用微处理器、单片机(微控制器)、DSP芯片、嵌入式系统?〔解答〕通用微处理器:适合较广的应用领域的微处理器,例如装在PC 机、笔记本电脑、工作站、服务器上的微处理器。
单片机:是指通常用于控制领域的微处理器芯片,其部除CPU外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。
DSP芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,部集成有高速乘法器,能够进行快速乘法和加法运算。
嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统,其典型的特点是把计算机直接嵌入到应用系统之中。
〔习题 1.5 〕说明微型计算机系统的硬件组成及各部分作用。
〔解答〕CPU CPU也称处理器,是微机的核心。
它采用大规模集成电路芯片,芯片集成了控制器、运算器和若干高速存储单元(即寄存器)。
处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。
存储器:存储器是存放程序和数据的部件。
外部设备:外部设备是指可与微机进行交互的输入(Input )设备和输出(Output )设备,也称I/O 设备。
I/O 设备通过I/O 接口与主机连接。
总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。
习题 1.6 〕什么是总线?微机总线通常有哪 3 组信号?各组信号的作用是什么?解答〕总线:传递信息的共用通道,物理上是一组公用导线。
3 组信号线:数据总线、地址总线和控制总线。
I/O 端口的地址信息。
1)地址总线:传输将要访问的主存单元或2)数据总线:传输读写操作的数据信息。
3)控制总线:协调系统中各部件的操作。
〔习题 1.7 〕简答如下概念:(1)计算机字长(2)取指-译码-执行周期(3)ROM-BIOS(4)中断(5)ISA 总线〔解答〕(1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。
微机原理与接口技术汇编语言程序教案第一章:汇编语言概述1.1 汇编语言的概念让学生了解汇编语言的定义、特点和作用。
让学生掌握汇编语言的基本组成元素,如指令、寄存器、操作数等。
1.2 汇编语言的表示方法让学生了解汇编语言的指令格式和操作数表示方法。
让学生掌握汇编语言的助记符及其含义。
1.3 汇编语言与机器代码的关系让学生了解汇编语言与机器代码的转换过程。
让学生掌握汇编语言指令与机器代码之间的对应关系。
第二章:汇编语言的语法规则2.1 指令语句的语法结构让学生了解指令语句的构成,包括操作码、寄存器、操作数等。
让学生掌握不同类型指令的语法规则,如数据传输指令、算术运算指令等。
2.2 伪指令和宏指令让学生了解伪指令和宏指令的概念及其作用。
让学生掌握伪指令和宏指令的语法规则和使用方法。
2.3 汇编语言的程序结构让学生了解汇编语言程序的组成部分,如数据段、代码段、堆栈段等。
让学生掌握汇编语言程序的格式和编写规范。
第三章:汇编语言的编程技巧3.1 寄存器的使用让学生了解寄存器的作用和分类,如AX、BX、CX、DX等。
让学生掌握寄存器在汇编语言编程中的应用技巧。
3.2 数据传输指令让学生了解数据传输指令的用法,如MOV、PUSH、POP等。
让学生掌握数据传输指令在汇编语言编程中的应用技巧。
3.3 算术运算指令让学生了解算术运算指令的用法,如ADD、SUB、MUL、DIV等。
让学生掌握算术运算指令在汇编语言编程中的应用技巧。
第四章:汇编语言程序设计实例4.1 实例一:计算两个数的和让学生了解程序设计的基本步骤,如编写算法、选择寄存器等。
让学生掌握汇编语言编程的基本技巧,如数据传输、算术运算等。
4.2 实例二:排序算法(冒泡排序)让学生了解排序算法的原理和实现方法。
让学生掌握汇编语言编程中循环结构和条件判断的使用技巧。
4.3 实例三:字符串操作让学生了解字符串的基本操作,如字符串长度计算、字符串复制等。
让学生掌握汇编语言编程中字符串操作的相关指令和技巧。
微机原理与接口技术汇编语言程序教案第一章:汇编语言基础1.1 汇编语言简介汇编语言的定义与发展历程汇编语言与机器语言的关系汇编语言的优势与局限性1.2 汇编语言的组成指令、操作码和操作数寄存器、标志寄存器及指令集1.3 汇编语言的语法规则指令格式与操作数寻址方式指令间的符号命名规则数据声明与宏定义第二章:汇编语言编程步骤与实例2.1 汇编语言编程步骤分析需求、确定算法选择合适的寄存器和寻址方式编写汇编代码调试与优化2.2 汇编语言编程实例编写一个简单的加法程序实现一个字符串的逆序输出第三章:微机原理概述3.1 微机的硬件系统结构中央处理器(CPU)存储器输入输出设备3.2 微机的工作过程指令的获取、解码与执行数据的传输与处理3.3 微机的性能指标频率、缓存与内存容量处理速度与功耗第四章:接口技术基础4.1 接口的概念与分类硬件接口与软件接口并行接口与串行接口4.2 接口的技术参数数据宽度、传输速率与协议接口的电气特性与物理形态4.3 接口的设计与实现接口电路的设计方法接口芯片的选择与应用第五章:汇编语言与接口技术的结合5.1 汇编语言与接口编程汇编语言控制接口的方法接口指令与中断处理5.2 实例:汇编语言实现串口通信串口通信的基本原理编写汇编代码实现串口收发数据5.3 实例:汇编语言控制打印机打印机接口的原理与驱动方法编写汇编代码实现打印机控制第六章:汇编语言与中断系统6.1 中断系统概述中断的概念与分类中断处理程序的执行过程6.2 中断向量与中断服务程序中断向量的定义与寻址中断服务程序的编写与调用6.3 汇编语言中断指令与中断编程INT指令的使用方法非屏蔽中断与可屏蔽中断中断编程实例第七章:汇编语言与DMA传输7.1 DMA传输原理DMA的概念与作用DMA与CPU的协同工作方式7.2 DMA控制器与DMA编程DMA控制器的功能与接口DMA编程步骤与指令集7.3 汇编语言实现DMA传输编写DMA服务程序DMA传输过程的监控与调试第八章:汇编语言与A/D转换8.1 A/D转换原理A/D转换器的工作原理与性能指标A/D转换的过程与数据类型8.2 A/D转换器的接口与驱动A/D转换器的接口电路设计A/D转换器的驱动程序编写8.3 汇编语言实现A/D转换编写A/D转换服务程序A/D转换在实际应用中的实现第九章:汇编语言与I/O控制9.1 I/O控制概念与方法I/O控制的概念与分类I/O控制的编程方法与接口9.2 汇编语言I/O指令与编程I/O指令的使用方法与限制端口地址与I/O编程实例9.3 汇编语言实现I/O控制编写I/O服务程序I/O控制应用实例第十章:汇编语言程序设计实践10.1 汇编语言程序设计流程需求分析与算法设计寄存器分配与指令选择代码编写与调试10.2 汇编语言与操作系统应用汇编语言编写系统调用程序汇编语言实现进程管理与同步10.3 汇编语言与设备驱动程序开发设备驱动程序的概念与作用汇编语言编写设备驱动程序的方法与步骤10.4 综合实例:汇编语言实现一个小型的操作系统设计目标与功能需求主要模块与实现方法系统测试与优化第十一章:汇编语言与故障诊断计算机系统故障的类型与等级故障诊断的重要性与挑战11.2 汇编语言在故障诊断中的应用汇编语言诊断程序的特点与优势故障诊断程序的编写方法与步骤11.3 常见故障诊断实例处理器故障的诊断与处理存储器故障的诊断与处理输入输出设备故障的诊断与处理第十二章:汇编语言与性能分析12.1 性能分析的基本概念计算机系统性能的评价指标性能分析的方法与工具12.2 汇编语言程序的性能优化指令选择与优化数据访问与缓存利用程序结构的优化12.3 性能分析实例汇编语言程序性能分析的方法性能瓶颈的识别与改进策略第十三章:汇编语言与安全编程计算机系统安全的重要性常见安全威胁与防护措施13.2 汇编语言程序的安全性汇编语言程序的脆弱性安全编程的最佳实践13.3 安全编程实例汇编语言程序的漏洞分析安全漏洞的修复与防护措施第十四章:汇编语言与嵌入式系统14.1 嵌入式系统的基本概念嵌入式系统的定义与特点嵌入式系统的应用领域14.2 汇编语言在嵌入式系统中的应用嵌入式系统编程的特殊性汇编语言与硬件的紧密耦合14.3 嵌入式系统实例汇编语言编写嵌入式系统程序的方法嵌入式系统程序的调试与优化第十五章:汇编语言与现代计算机体系结构15.1 现代计算机体系结构的发展流水线技术、超标量和超流水线多核处理器与并行计算15.2 汇编语言与现代计算机体系结构的适配汇编语言在多核处理器上的编程汇编语言与向量处理器的接口15.3 现代计算机体系结构下的汇编语言编程汇编语言程序在现代计算机上的优化面向现代计算机体系结构的汇编语言编程实例重点和难点解析本文主要介绍了汇编语言程序设计、微机原理与接口技术的相关知识。
第1章进制及码元1.进制转换129= 81H= 10000001B=201Q298= 12AH= 100101010B=452Q1000= 3E8H= 1111101000B= 1750Q5DH= 1011101 B= 135 Q= 93 D3E8H= 1111101000 B= 1750Q= 1000 D;357Q=11101111 B= 0EF H= 239 D3.数据表示范围:一字节的无符号数表示范围为0~255,有符号数(补码)表示范围为-l28—+127。
一个字的无符号数表示范围为0~65535,有符号数(补码)表示范围为—32768~+32767。
N位二进制数的无符号数表示范围为0~(2N-1),有符号数(补码)表示范围为-2N-1~(2N-1-1).4.35H代表的ASCII字符为'5',代表十六进制数时等价的十进制值为53 ,代表压缩8421BCD码等价的十进制值为35 ,代表非压缩8421BCD码等价的十进制值为5。
5.FFH代表无符号数时等价的十进制值为255 ,代表补码有符号数时等价的十进制值为一1 ,代表反码有符号数时等价的十进制值为一0 ,代表原码有符号数时等价的十进制值为一l27。
6.--20的8位二进制补码为ECH ,原码为94H ,反码为EBH 。
158的16位二进制补码为009EH,原码为009EH ,反码为009EH 。
第2章微机硬件基础1.计算机系统硬件的五大功能部件及其主要功能?答:硬件系统按功能模块分为运算器、控制器、存储器、输入设备、输出设备。
运算器主要完成算术运算、逻辑运算及移位运算,其中主要包括算术逻辑运算单元Arithmetic Logic Unit,ALU)和暂存数据(原始、中间、结果)的寄存器(Register,R)。
控制器实现对计算机部件的协调调度完成指令的分析执行,其中主要有程序计数器Program Counter,PC)或叫指令指针(Instruction Pointer,IP)、指令寄存器(Instruction register,IR)、指令译码器(Instruction Decoder,ID)、微操作命令发生器、时序发生器等。
第1章绪论习题与参考答案(部分)1.把下列二进制数转换成十进制数、十六进制数及BCD码形式。
(1)10110010B =(2)01011101.101B =解:(1) 10110010B = 178D = B2H = (0001 0111 1000)BCD (2) 01011101.101B = 93.625D = 5D.AH= (1001 0011.0110 0010 0101)BCD2.把下列十进制数转换成二进制数。
(1)100D =(2)1000D =(3)67.21D =解:(1)100D = 01100100B(2) 1000D = 1111101000B(3) 67.21D = 1000011.0011B3.把下列十六进制数转换成十进制数、二进制数。
(1)2B5H =(2)4CD.A5H =解:(1)2B5H = 693D = 0010 1011 0101B(2)4CD.A5H = 1229.6445D = 0100 1100 1101.1010 0101 B4.计算下列各式。
(1)A7H+B8H =(2)E4H-A6H =解:(1) A7H+B8H = 15FH(2) E4H-A6H = 3EH5.写出下列十进制数的原码、反码和补码。
(1) +89(2) -37解:(1) [+89 ] 原码、反码和补码为: 01011001B(2) [-37] 原码 = 10100101 B[-37] 反码 = 11011010 B[-37] 补码 = 11011011 B6.求下列用二进制补码表示的十进制数(1)(01001101)补 =(2)(10110101)补 =解:(1)(01001101)补 = 77D(2)(10110101)补 = -75D7.请用8位二进制数写出下列字符带奇校验的ASCII码。
(1)C: 1000011 (2)O: 1001111(3)M: 1001101 (4)P: 1010000解:(1)C:0 1000011 (2)O: 0 1001111(3)M:1 1001101 (4)P: 1 10100008.请用8位二进制数写出下列字符带偶校验的ASCII码。
(1)+:0101011 (2)=: 0111101(3)#:0100011 (4)>: 0111110解:(1)+:0 0101011 (2)=: 1 0111101(3)#:1 0100011 (4)>: 1 01111109.叙述CPU 中PC的作用。
解:PC是CPU中的程序计数器,其作用是提供要执行指令的地址。
第2章微处理器的结构习题与参考答案1.8086/8088 CPU 由哪两大部分组成?请分别叙述它们的功能。
解:8086/8088 CPU均由两个独立的逻辑单元组成,一个称为总线接口单元BIU(Bus Interface Unit),另一个称为执行单元EU(Execution Unit)。
总线接口单元BIU取指令时,从存储器指定地址取出指令送入指令队列排队;执行指令时,根据EU命令对指定存储器单元或I/O 端口存取数据。
执行单元EU任务是执行指令,进行全部算术逻辑运算、完全偏移地址的计算,向总线接口单元BIU提供指令执行结果的数据和偏移地址,并对通用寄存器和标志寄存器进行管理。
2.8086/8088与传统的计算机相比在执行指令方面有什么不同?这样的设计思想有什么优点?解:总线接口部分和执行部分是分开的,每当EU执行一条指令时,造成指令队列空出2个或空出一个指令字节时,BIU马上从内存中取出下面一条或几条指令,以添满他的指令队列。
这样,一般情况下,CPU在执行完一条指令后,便可马上执行下一条指令,不像以往8位CPU那样,执行完一条指令后,需等待下一条指令。
即EU从指令队列中取指令、执行指令和BIU补充指令队列的工作是同时进行的。
这样大大提高了CPU利用率,降低了系统都对存储器速度的要求。
3.状态标志和控制标志有何不同?8086/8088的状态标志和控制标志分别有哪些?解:8086/8088 CPU设立了一个两字节的标志寄存器,共九个标志。
其中标志位O、S、Z、A、P、C是反映前一次涉及ALU操作结果的状态标志,D、I、T是控制CPU操作特征的控制标志。
4.8086/8088 CPU寻址存储器时,什么是物理地址?逻辑地址?它们之间有何关系?解:8086/8088系统中每个存储单元都有一个物理地址,物理地址就是存储单元的实际地址编码。
在CPU与存贮器之间进行任何信息交换时,需利用物理地址来查找所需要的访问的存储单元。
逻辑地址由段地址和偏移地址两部分组成。
逻辑地址的表示格式为:段地址:偏移地址。
知道了逻辑地址,可以求出它对应的物理地址:物理地址=段地址×10H+偏移地址。
5.段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少?指向这一物理地址的CS值和IP值是唯一的吗?解:根据:物理地址=段地址×10H+偏移地址,指令的物理地址为21F00H。
指向这一物理地址的CS值和IP值不唯一。
6.8086 CPU中BHE信号和A0信号是通过怎样的组合解决存储器和外设端口的读/写的?这种组合决定了8086系统中存储器偶地址体及奇地址体之间应该用什么信号区分?怎样区分?解:若存取一个字节的数据,总是用一个总线周期来完成该操作;若存取一个字,则依该字是规则字还是不规则字需用一个或两个总线周期来完成。
对规则字,只用一个总线周期来完成16位数据的传送,而对于非规则字则用相邻两个总线周期来完成该字的存储操作,先取其奇地址字节(即数据的低位字节),然后存取偶地址字节。
在组成存储系统时,总是偶地址单元的数据通过AD0~AD7传送,而奇地址单元的数据通过AD8~AD15传送,即通过总线高字节传送。
BHE信号和A0信号控制存储器读写见下表:第3章80x86指令系统习题与参考答案1、指出下列指令中操作数的寻址方式(8086系统)。
(1) MOV AX,100 (2) MOV AX,[100] (3) MOV DL,[BP+SI] (4) MOV [BX],CX (5) MOV DX,[SI] (6) MOV 1234H[BX],DS (7) MOV [DI+5678H],AL (8) MOV 12[BP][DI],BH(9) POP CX (10)MOV AX,[BX+SI+10] 解:2、指出下列指令中操作数的寻址方式(80386系统)。
(1) MOV [EBX+12H],AX (2)MOV [EBP+EDI*2],EBX(3) MOV [EBX*4],BX (4) MOV EDX,[EAX+ESI*8-12H]解:3、指出以下指令中,哪些指令是非法的,并说明为什么(8086系统)。
(1) PUSH 1234H (2) MOV CS,AX(3) IN AX, 300 (4) MOV AX,[DX+12](5) MOV BX,[BX] (6) MOV DS,1000H(7) XCHG AL,AL (8) MOV AL,100H(9) MOV DX,AL (10)LEA BL,[BX+5] (11)LEA DX,BX (12)MOV [1000H],12H (13)ADD AX,DS (14)SUB [0100H],BYTE PTR [0001](15)SHL BL,2 (16)SHR CL,CL(17)MUL AL,BL (18)INT 400解:(1)非法,8086系统不允许PUSH指令的操作数为立即数;(2)非法,MOV指令中CS不能作为目的操作数;(3)非法,端口号大于0FFH;(4)非法,DX不能出现在中括号[]内;(5)合法;(6)非法,不能把立即数赋给段寄存器;(7)合法;(8)非法,源操作数大于0FFH,不能赋给8位寄存器AL;(9)非法,源操作数是8位寄存器,目的操作数却是16位寄存器,不匹配;(10)非法,LEA指令得到的是16位偏移量,但目的操作数是8位寄存器;(11)非法,LEA指令的源操作数只能是存储器操作数;(12)非法,指令存在歧义,无法确定传送的是字节还是字;(13)非法,段寄存器不能参与算术运算;(14)非法,源和目的寄存器不能同为存储器操作数;(15)非法,在8086系统中,移位次数大于1时需要将移位次数存放到CL中;(16)合法;(17)非法,在8086系统中MUL指令没有双操作数的用法;(18)非法,中断类型号大于0FFH。
4、指出以下指令中,哪些指令是非法的,并说明为什么(80386系统)。
(1) MOV AX,12[EBX][SI*16] (2) RCR EAX,10 (3) PUSH 5678H (4) POP 1000H(5) MOV [EAX+EAX],EAX (6) MOV AL,[ESP+ESP*2](7) MOV BL,[AX+12] (8) IMUL AL,BL,12解:(1)非法,比例因子只能是1、2、4、8,不能是16;(2)合法;(3)合法;(4)非法,POP指令的目的操作数不能是立即数;(5)合法;(6)非法,ESP只能作为基址寄存器,不能作为变址寄存器;(7)非法,在386系统中AX不能作为基址寄存器,也不能作为变址寄存器;(8)合法。
5、假设(AX)=1234H,(BX)=5678H,(SP)=1000H,指出执行下面的程序段后,各相关寄存器及堆栈段中的内容。
PUSH AX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节[SP]=?,栈顶第二字节[SP+1]=?PUSH BX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节[SP]=?,栈顶第二字节[SP+1]=?POP AX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节[SP]=?,栈顶第二字节[SP+1]=?解:(AX)=1234H,(BX)=5678H,(SP)=0FFEH,栈顶字节[SP]=34H,栈顶第二字节[SP+1]=12H(AX)=1234H,(BX)=5678H,(SP)=0FFCH,栈顶字节[SP]=78H,栈顶第二字节[SP+1]=56H(AX)=5678H,(BX)=5678H,(SP)=0FFEH,栈顶字节[SP]=34H,栈顶第二字节[SP+1]=12H6、假设A、B、C、D、X、Y为字节变量,AA、BB、YY为字变量,试利用算术运算指令编写程序段,完成以下各算术运算题。
(1)计算YY←A+B*C,其中A、B、C都是无符号数;(2)计算(AA+BB)/(C-D),商赋给X,余数赋给Y,其中AA、BB、C、D都是带符号数;(3)计算YY←(A-B)*C,其中A、B、C都是未组合BCD码。