微机原理概念复习
-
微型计算机的基本工作过程??
(1)首先应把第一条指令所在存储单元的地址赋予程序计数器PC,然后机器就进入取指阶段。
(2)取指令:在取指阶段,CPU从内存中读出的内容必为指令,于是,数据缓冲寄存器的内容将被送至指令寄存器暂存。
(3)指令译码:由指令译码器对指令寄存器中指令的操作码字段进行译码,并发出执行该指令所需要的各种微操作控制信号。
(4)执行指令:根据指令译码,向各个部件发出相应控制信号,完成指令规定的各种操作。
(5)保存结果:如果需要保存计算结果,则把结果保存到指定的存储器单元中。
当一条指令执行完毕后,转入下一条指令的取指阶段。这样周而复始地循环,直到遇到暂停指令时结束。 -
== 冯诺依曼体系结构的基本设计思想?? ==
(1)以二进制形式表示指令和数据。
(2)程序和数据事先放在存储器中,计算机在工作的时候能够高速的从存储器中取出指令加以执行。
(3)由运算器,控制器,存储器,输入设备和输出设备等五大部件组成计算机硬件系统。 -
三总线结构??
所谓总线,是指计算机中各功能部件传送信息的公共通道,是微型计算机的重要组成部分。根据所传送信息的内存与作用不同,总线可分为以下三类:
(1)地址总线(AB):在对于存储器或I/O端口进行访问时,传送由CPU提供的要访问存储单元或I/O端口的地址信息,以便选中要访问的存储单元或I/O端口。AB是单向总线。
(2)数据总线(DB):用来CPU与其他部分传送数据,DB是双向总线。
(3)控制总线(CB):各种控制或状态信息通过控制总线有CPU送往有关部件,或者从有关部件送往CPU。CB中每根线的传送方向是一定的。 -
进位和溢出??
(1)进位:是指运算结果的最高位向更高位的进位,用来判断无符号数运算结果是否超过了计算机所能表示的最大无符号数的范围。【CF位:进位标志位】
(2)溢出:是指带符号数的补码运算溢出,用来判断带符号数补码运算是否超过了补码所能表示的范围。
溢出的判断方法:1)通过参加运算的两个数的符号及运算结果的符号进行判断;
2)单符号位法:该方法通过符号位和数值部分最高位的进位状态来判断结果是否溢出。【OF位:溢出标志位;OF=CF异或DF,其中CF为符号位是否有进位的标志,DF为数值为最高位是否有进位的标志】
3)双符号位法:又称变形补码法,它是通过运算结果的两个符号位来判断结果是否溢出。【计算机运算溢出检测机制,采用双符号位,00表示正号,11表示负号。如果进位将会导致符号位不一致,从而检测出溢出。结果的符号位为01时,称为上溢;为10时,称为下溢。】 -
引入补码的目的??
为了将减法运算变为加法运算,通过使用同一个运算器实现加法和减法运算,从而化简了计算机运算器的结构。 -
机器周期,指令周期,总线周期,时钟周期??
(1)时钟周期:时钟周期也称为振荡周期,是计算机中最基本的、最小的时间单位。
(2)指令周期:指令周期是取出一条指令并执行这条指令的时间。
(3)CPU周期也称机器周期:通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。
(4)总线周期:通常把CPU通过总线对微处理器外部(存贮器或 I/O接口)进行一次访问所需时间称为一个总线周期(由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接口的访问,是通过总线实现的。一个总线周期一般包含4个时钟周期,这4个时钟周期分别称4个状态即T1状态、T2状态、T3状态和 T4状态。)。 -
开辟堆栈的目的主要是??
(1)存放指令操作数(变量)。
(2)保护断点和现场(为堆栈的主要功能)。【所谓 保护断点,是指主程序在调用子程序或者执行中断服务程序时,为了使执行完子程序或中断服务程序后能顺利返回主程序,必须把断点处的有关信息压入堆栈,CS,IP,标志寄存器(PUDHF压入栈中)保护断点的操作由系统自动完成,不需要程序员干预。所谓 保护现场,是指将在子程序或者中断服务程序中用到的寄存器的内容压入堆栈(PUSH,POP)。保护现场需要程序员编程实现。】 -
8086从功能上分成了EU和BIU两部分,这样设计的优点是什么???
传统计算机在执行程序时,CPU总是相继的完成取指令和执行指令的动作,即,指令的提取和执行是串行进行的。而8086在功能上分为了EU和BIU两个部分,其中总线接口单元BIU的功能是负责完成CPU与存储器或I/O设备之间的数据传送,执行单元EU负责执行指令,他们之间既相互独立又相互配合,使得8086可以在执行指令的同时进行取指令的操作,即实现了取指令和执行指令的并行工作,大大提高了CPU和总线的利用率,从而提高了指令的处理速度。 -
8086引脚??
8086/8088采用了40引脚双列直插式封装。地址/数据(状态)引脚20个,电源和地线引脚3个,控制引脚17个,其中引脚24-31(8个控制引脚)在最大方式(MN/MX接低电平)和最小方式(高电平)下具有不同的功能。 -
8086/8088的算术指令可以处理四种类型的数??
无符号的二进制数,带符号的二进制数,压缩型BCD码,非圧缩型BCD码。除了压缩型BCD码只能进行加减运算外,其余三种都可以进行加减乘除运算。 -
编语言语句的基本类型??
指令语句、伪指令语句和宏指令语句。 -
汇编语言的上机过程??(.EXE为例)
(1)用编辑程序(EDIT)建立ASM源程序文件。
(2)用汇编程序(MASM或ASM)把ASM文件汇编成OBJ文件。
(3)用连接程序(LINK)把OBJ文件转换成EXE文件。
(4)在DOS命令行直接键入文件名执行该文件。 -
伪指令??
1)数据定义伪指令??
数据定义伪指令的用途是定义变量并给变量赋初值,或者只定义变量(分配存储单元),而不赋初值。
(1)DB:字节
(2)DW:字(在内存中存放,低字节在前,高字节在后)
(3)DD:双字(在内存中存放,低字节在前,高字节在后)
超过两个字符的字符串只能用DB伪指令定义。问号“?”可以作为数据定义伪指令的操作数,此时仅仅给变量保留相应的存储单元,但是不赋予变量某个确定的初值。当同样的操作重复多次时,可用重复操作符“DUP”表示。
2)段定义伪指令??
段定义伪指令的用途是在汇编语言源程序中定义逻辑段。常用的段定义伪指令有SEGMENT/ENDS和ASSUME。
(1)SEGMENT/ENDS,其中SEGMENT伪指令用来定义一个逻辑段,给逻辑段赋予一个段名,其位于一个逻辑段的开始部分,而ENDS伪指令表示一个逻辑段的结束。两者成对出现,且前面的段名必须一致,两个语句之间的部分就是逻辑段的内容。格式如下:
段名 SEGMENT [定位类型] [组合类型] [‘类别’]
……
段名 ENDS
(2)ASSUME,该伪指令告诉汇编程序,将某一个段寄存器设置为存放某一个逻辑段的段地址,即明确指出源程序中逻辑段与物理段之间的关系。
举例: ASSUME CS:CODE,DS:DATA
(3)ORG,该伪指令用来指出其后的程序段或数据块存放的起止地址的偏移量。
格式: ORG 表达式
3)过程定义伪指令??
过程也就是子程序,过程定义伪指令也就是子程序定义伪指令。(过程名是子程序入口的符号地址)格式如下:
过程名 PROC [NEAR/FAR]
……
RET
……
过程名 ENDP
子过程的调用格式为: CALL 过程名
4)模块定义与连接伪指令??
(1)END:该伪指令表示源程序到此结束,指示汇编程序停止汇编,对于END后面的语句不予理会。END后面的标号表示程序执行的开始地址。
格式: END [标号] -
功能调用的一般步骤??
-
(1)子程序的入口参数送相应的寄存器(有些子程序调用不需要入口参数,此步可以省略)
(2)子程序的编号送入AH
(3)发出中断请求:INT 21H(系统功能调用指令)
这里介绍一下1,2,9,10系统调用:
1:键入并显示一个字符
2:显示器显示一个字符(DL中置输出字符的ASCII码)
9:显示器显示一个字符串(DS:DX置字符串首地址,字符串以“$”结尾)
10:键入并显示字符串(DX中置字符串首地址)
举例:9号功能的调用?
MOV DX, 待显示字符串首字符的偏移地址
MOV AH, 9
INT 21H -
8255A的工作方式??
工作方式 | 适用端口 |
---|---|
方式0(基本型输入/输出方式) | A,B,C |
方式1(选通型输入/输出方式) | A,B |
方式2(选通型双向输入/输出方式) | A |
其控制字构建方法参考如下:
- 8086分段访问内存的思想是什么??
8086有20位地址线,最大可以访问2^20B,即1M内存空间,但是CPU中可以用来存放地址的寄存器都是16位的,最大寻址64K。为了对1M内存进行管理,8086采用了段结构的存储器管理办法。8086将整个存储器分为许多逻辑段,每个逻辑段的容量小于等于64KB,允许它们在整个存储空间中浮动,个个逻辑段之间可以紧密连接,也可以相互重叠。每次形成地址时,根据不同的指令,系统会经过BIU单元的地址加法器将其逻辑地址转化为它的物理地址。 - I/O设备与CPU交换数据的方式??
(1)程序传送方式:无条件传送方式,查询传送方式;
(2)中断传送方式;
(3)DMA(直接存储区存取)方式
这里与操作系统的一些概念不要混淆,在数据传送的时候,没有通道传送的方式 - I/O端口编址方式有几种,各有什么优缺点??
1)独立编址(专用的I/O端口编址)----存储器和I/O端口在两个独立的地址空间中
(1)优点:I/O端口的地址码较短,译码电路简单,存储器同I/O端口的操作指令不同,程序比较清晰;存储器和I/O端口的控制结构相互独立,可以分别设计
(2)缺点:需要有专用的I/O指令,程序设计的灵活性较差
2)统一编址(存储器映像编址)----存储器和I/O端口共用统一的地址空间,当一个地址空间分配给I/O端口以后,存储器就不能再占有这一部分的地址空间
(1)优点:不需要专用的I/O指令,任何对存储器数据进行操作的指令都可用于I/O端口的数据操作,程序设计比较灵活;由于I/O端口的地址空间是内存空间的一部分,这样,I/O端口的地址空间可大可小,从而使外设的数量几乎不受限制
(2)缺点:I/O端口占用了内存空间的一部分,影响了系统的内存容量;访问I/O端口也要同访问内存一样,由于内存地址较长,导致执行时间增加 。 - 什么是逻辑地址?物理地址?计算物理地址。
物理地址:我们把CPU对存储器进行访问时实际寻址所使用的20位地址称为物理地址,物理地址是由CPU内部总线接口单元中的地址加法器产生的。
逻辑地址:是程序使用的地址,其表达形式为“段地址:段内偏移地址”. 。
物理地址由两部分组成:段基址(段起始地址高16位)和偏移地址。前者由段寄存器给出,后者是指存储单元所在的位置离段起始地址的偏移距离。方法有二:
当CPU寻址某个存储单元时,先将段寄存器的内容左移4位,然后加上指令中提供的16位偏移地址而形成20位物理地址。
采用计算公式:物理地址=段基址*10H+段内偏移地址。 - 8086的寻址方式有什么??
所谓寻址方式,通俗的讲就是指令中给出的操作数(包括数据操作数和地址操作数)的方法:8086指令系统的寻址方式根据操作数的种类分为两大类,即数据寻址方式和地址寻址方式。如下所示:
1、数据寻址方式:
(1)立即数寻址方式
(2)寄存器寻址方式:直接寻址方式;寄存器间接寻址方式;寄存器相对寻址方式;基址变址寻址方式;基址变址相对寻址方式。
(3)存储器寻址方式
(4)I/O端口寻址方式
2、地址寻址方式
(1)段内直接寻址方式
(2)段内间接寻址方式
(3)段间直接寻址方式
(4)段间间接寻址方式
微机原理易错点
1、汇编语言中的数值常数的第一位必须是数字,否则汇编时将被看成标识符,如常数B7H,要写成0B7H。字符串常数是由单引号括起来的一串字符,单引号内的字符在汇编时都以ASCII的代码形式存放在存储单元中。
2、PUSH和POP指令的易错点:CS代码段寄存器可以使用PUSH指令,但是不可以使用POP指令。即 PUSH CS合法,POP CS非法。
3、片选信号取决于存储器芯片以外的 高位 地址。
4、芯片扩展的时候,计算所需芯片的数量,以及根据容量计算用于片内和片间寻址的地址线根数。
假设:现在想用4K×4的存储芯片扩展为8K×8的存储器:
(1)问:该存储器的地址线多少根?数据线多少根?
解:
由4K=2^12 B,知地址线为12根。
由4K×4,知数据线为4根。
(2)问:完成上述扩展需要多少片4K×4的芯片?
解:
此时,我们需要用扩展后的芯片容量/扩展前的芯片容量。即:
(8K×8)/(4K×4)=2×2=4
也就是说我们需要4片芯片。如果此时题目问的再详细点就是两组芯片,每组芯片有2个独立的芯片。组内采用位扩展的方式,组间采用字扩展的方式进行连接。
(3)问地址线中有多少根用来片间寻址?又有多少根用来片内寻址?
解:由4K=2^12 B,知片内寻址用地址线12根。
由8K=2^13 B,知扩展后共有13根地址线,则,用来片间寻址的地址线为13-12=1。
5、中断相关问题:
- 中断向量:中断服务程序的入口地址。
- 中断向量表:将所有的中断向量放在一起,形成中断向量表。
- 根据中断类型号计算入口地址:8086中有256个中断源,每个类型对应一个中断向量,一个终端向量由四个字节组成,2个高地址字节:存放中断服务程序的代码段的段值,2个低地址字节:存放中断服务程序的偏移地址,也就是说一个中断向量占用4个字节。中断向量表存放在内存段地址的0号单元。所以根据中断类型号推断中断服务程序的入口地址方法为,中断类型号*4.
- 6、M/IO(非)引脚:当值为0时,是I/O模式。对I/O端口进行操作;当值为1时,是存储器模式,对存储器进行操作。