微机知识总结
发布日期:2021-11-15 17:20:09 浏览次数:2 分类:技术文章

本文共 9231 字,大约阅读时间需要 30 分钟。

尽量尽量把点都涉及到

部分参考博客

第一章


进制和进制转换不说了,数电有详细描述


1.冯诺依曼架构和哈佛架构(了解)

冯诺依曼架构特点:数据和指令都存在内存当中,可以充分的利用有限的内存空间,程序执行方便,但是对指令没有读写限定,容易出现bug主要结构:输入设备,控制器,运算器,存储器,输出设备

在这里插入图片描述

哈佛架构特点:指令和数据分开存放,使之不会相互干扰,进而当程序出BUG的时候,最多只会修改变量的值,而不会修改程序的执行顺序(逻辑关系),所以大量应用于嵌入式结构 (对处理速度要求不高?)

在这里插入图片描述


2.微型计算机系统组成

微 型 计 算 机 系 统 { 软 件 系 统 { 系 统 软 件 应 用 软 件 硬 件 系 统 { 主 机 { C P U ( 微 处 理 器 ) { 寄 存 器 组 控 制 器 运 算 器 存 储 器 总 线 I O 接 口 外 部 设 备 微型计算机系统 \begin{cases} 软件系统\begin{cases}系统软件\\应用软件\end{cases}\\ 硬件系统\begin{cases}主机\begin{cases}CPU(微处理器)\begin{cases}寄存器组\\控制器\\运算器\end{cases}\\存储器\\总线\\IO接口\end{cases}\\外部设备\end{cases} \end{cases} {
CPU()线IO

硬件系统组成

1.微处理器	(1)运算器:核心部件是算术逻辑单元(ALU),加法器为主,辅之以移位寄存器完成逻辑运算	(2)控制器:由指令寄存器,指令译码器和操作控制电路组成	(3)寄存器组:CPU的若干个存储单元               2.存储器	又叫内存或主存,存放数据和程序3.输入输出设备	输入输出系统的硬件组成部分         4.总线结构组成	数据总线DB(Data Bus)	地址总线AB(Adress Bus)	控制总线CB(Control Bus) 	注:数据和控制总线都是双向的,地址总线是单向的

软件系统组成

1.系统软件	操作系统(OS)和系统实时程序2.应用软件	为用户解决实际问题的程序

第二章


1.微处理器性能指标

1.工作频率 CPU的时钟频率,主频越高,运算速度越快2.字长 CPU能同时处理的数据位数,如4位,8位,16位,32位,64位处理器

2.微处理器组成

1.运算器由 算术逻辑单元(ALU) ,通用或专用寄存器及内部总线三部分组成核心功能是实现数据的 算术运算 和 逻辑运算结构有:单总线结构运算器,双总线结构运算器,三总线结构运算器2.控制器由 程序计数器(存放下一条要执行指令在存储器中的地址),指令寄存器(存放从存储器中取出待执行的指令), 指令译码器(指令译码),时序控制部件(产生计算机工作中所需要的各种时序信号),微操作控制部件(产生于各条指令相对应的微操作)组成作用是控制程序的执行(1)指令控制(2)时序控制(3)操作控制

3.8086/8088指令流水线

执行单元(EU)和总线接口单元(BIU)EU负责分析指令(指令译码)和执行指令,BIU负责取指令,取操作数和写结果优点:EU和BIU的并行工作,减少CPU为取指令而等待的时间,提高了CPU的执行效率和运行速度,既降低了对存储器存取速度的要求重点是并行!!

4.分段管理技术

CPU内部结构是16位的,为了提高系统执行速度,便于存储器管理,采用了段地址+偏移地址的寻址方法(寻址能力提高了4位)

5.物理地址和逻辑地址

物理地址是指CPU存取存储器所用的地址,逻辑地址是段和偏移形式的地址,即汇编语言程序中使用的存储器地址已知物理地址,其逻辑地址不是唯一的,一个物理地址可以对应于不同的逻辑地址

6.8086的结构(重点)

从功能上8086分为两部分,总线接口部分(BIU) 和 执行部件(EU)a.  总线接口部件    a)  4个16位的段地址寄存器        i.  CS 代码段地址寄存器(Code)        ii. DS 数据段地址寄存器(Data)        iii.    ES 附加段地址寄存器(Extra)        iv. SS 堆栈段地址寄存器(Stack)    b)  16位的指令指针寄存器 IP    c)  20位的地址加法器 段地址x16+偏移地址    d)  6字节的指令队列缓冲器b.  执行部件    a)  4个通用寄存器 AX、BX、CX、DX    	i. 累加器(Accumulator) AX    	ii. 基址寄存器(Base) BX    	iii. 计数寄存器(Count) CX    	iv. 数据寄存器(Data) DX    b)  4个专用寄存器        i.  基数指针寄存器(Base) BP        ii. 堆栈指针寄存器(Stack) SP        iii.    源变址寄存器(Source) SI        iv. 目的变址寄存器 DI    c)  标志寄存器 FLAGS    d)  算数逻辑部件ALU (算术运算和逻辑运算)

7.8086的标志寄存器(清楚作用)

a.  状态标识6个    a)  符号标志 SF [运算结果的最高位为1时SF=1]    b)  零标志 ZF [当运算结果为0时ZF=1]    c)  奇偶标志 PF [当运算结果的低8位中1的个数为偶数时PF=1]    d)  进位标志 CF [当进行加减法运算时,若最高位向前有进借位,则CF=1]    e)  辅助进位标志 AF [在加减法操作中,D3向D4有进借位发生是,AF=1]    f)  溢出标志 OF [当算术运算的结果超过了带符号数的范围,即溢出时OF=1]b.  控制标志3个    a)  方向标志 DF [方向标志位在是形成换操作指令时控制操作的方向,DF=1时按减地址方式进行]    b)  中断允许标志 IF      c)  跟踪标志 TF 有符号有意义:ZF  SF  PF  OF无符号有意义:PF  ZF  CF  AF

8.8086最小工作模式配置(背)

a.有1片8284A,作为时钟发生器,提供时钟信号和同步ready信号和reset信号b.有3片8282或74LS273,用来作为地址锁存器,暂存地址c.有2片8286/8287,作为总线收发器,增加数据总线的驱动能力d.有1片8086,作为微处理器,负责CPU对存储器和IO端口的数据传输以及指令的执行最小模式下的引脚

9.8086最大模式配置(背)

a.  有两个或多个8086,作为微处理器,功能同最小模式b.  有1片8284A,作为时钟发生器,功能同最小模式c.  有3片8282或74Ls273,用来做地址锁存器,功能同最小模式d.  有2片8286/8287,作为总线收发器,功能同最小模式e.  有1片8288,作为总线控制器,控 制总线是否让出f.  有1片8259A,作为中断控制器,控制是否处理中断

8086系统中 BHE# 和 A0 引脚

在这里插入图片描述
1.AD15 ~ AD0 为地址/数据总线,T1 时用作地址总线的低 16 位,其他时间用作数据总线
2.A19 ~ A16 / S6 ~ S3为地址状态总线,T1 时用作地址总线高 4 位,其他时间指示 CPU 状态信息
3.34 号引脚 #BHE/S7 总线高允许 / 状态信号,T1 时作为高允许信号,#BHE 低电平时把读写的 8 位数据与 AD15 ~ AD8 联通,与 A0 结合以决定是高字节工作还是低字节工作。AD0 除了传输数据或地址信息还作为低 8 位数据的选通信号
在这里插入图片描述
奇地址:最低存储单元地址为奇数——即地址最低位 A0 = 1
偶地址:最低存储单元地址为偶数——即地址最低位 A0 = 0
8086 每个周期可以访问 16 位信息,
变量地址为偶地址时,只需一个总线周期。
如果变量为奇地址时,则要两个连续总线周期。
8086 的存储空间时分成两个 512K 的存储体,偶存储体和奇存储体。
低 8 位 D7 ~ D0 数据总线联接偶存储体,
高 8 位 D15 ~ D8 数据总线联接奇存储体。
偶地址存储时:一个 16 位字数据,高 8 位存储在奇存储体,低 8 位存储在偶存储体。
奇地址存储时:相反。
这样在读或写字数据时,
偶地址存储方式:可以在一个总线周期完成读写。
奇地址存储方式:读写时则有一个字节交换过程,也就是要用总线的高 8 位去读写字数据的低 8 位,再用总线的低 8 位读写字数据的高 8 位,需要两个总线周期才能完成一个字数据的读写。

10.8086读写时序(要背这不科学,时序不是用来查的吗,如果要考还是背一下吧)

1.工作周期由4个时钟周期组成,时钟周期是CPU最基本的时间计量单位4个时钟周期称为4个状态:T1、T2、T3、T4T1状态时ALE信号有效,作用为地址锁存Tw放在T3和T4之间插入Tw的个数取决于READY信号的持续时间2.读写所用的信号线WR#和RD#:写信号和读信号,低电平有效IO/M#:低电平为存储器操作,高电平为IO口操作ALE:地址锁存信号,高电平不锁存为地址信号,下降沿锁存DEN#:数据允许信号,低电平有效DT/R#:数据传送方向控制信号,低电平接收数据,高电平发送数据A8~A15:8位地址信号AD0~AD7:8位地址/数据复用信号,ALE为高时为地址信号,DEN为低时为数据信号3.读写工作时序要进行读写存储器操作时序:读存储器:RD#拉低,WR#拉高,IO/M#拉低,DEN#拉低,DT/R#拉低写存储器:RD#拉高,WR#拉低,IO/M#拉低,DEN#拉低,DT/R#拉高读写IO时序:读IO:RD#拉低,WR#拉高,IO/M#拉高,DEN#拉低,DT/R#拉低写IO:RD#拉高,WR#拉低,IO/M#拉高,DEN#拉低,DT/R#拉高

第三章


1.寻址方式是什么,有哪些?(要会判断指令的类型)

寻址方式即获得操作数地址的方法有以下8种方法a.  立即数寻址 MOV AX,3102H    a)  立即数只能作为源操作数,不能作为目的操作数b.	直接寻址 MOV AX,[3102H]		段地址默认为数据段c.  寄存器寻址 MOV SI,AXd)  寄存器间接寻址 MOV AX , [BX]e)  寄存器相对寻址 MOV AX , [SI + 100]f)  基址加变址的寻址 MOV AX , [BX + SI]g)  相对的基址加变址寻址 MOV AX , [BP + SI + 100]h)	隐含寻址

数据传送指令

1.通用数据传送指令(1)传送指令MOV dset,src	注意点	1.两个操作数字长必须相同	2.两个操作数不能同时存储器操作数	3.不能用立即数直接给段寄存器赋值	4.两个操作数不能同时为段寄存器(2)堆栈指令push,pop	必须是16位,只能是寄存器或存储器操作数(3)交换指令XCHG	不能为段地址操作数(4)查表指令XLAT	查找元素序号放在AL中2.输入输出指令IN,OUT	IN	直接寻址:I/O端口地址为8位	寄存器间接寻址:端口地址为16位,DX寄存器指定	OUT	将AL或AX的内容输出到端口	DX用来存放端口,AX(AL)用来存放数据3.取址偏移地址指令LEA4.其他传送地址(了解)

算术运算指令

1.加法运算指令(1)普通加法指令ADD(2)带进位位的加法指令ADCADD和ADC的区别就是ADC在运算时要把CF带进去一起做运算(3)加1指令INCINC不影响CF位2.减法运算指令(1)不考虑借位的减法指令SUB(2)考虑借位的减法指令SBB(3)减1指令DEC 常用于修改循环次数(4)求补指令NEG(5)比较指令CMP 会对状态位产生影响,后面一般跟条件转移指令	相等关系 若相等,ZF=1	大小关系		1.对于无符号数,由CF确定,若CF=0,前面一个大于后面一个		2.对于有符号			若符号相同,相减不会溢出(OF=0),判断SF,SF=0,前面一个大于后面一个			若不相同,则可能溢出;				若无溢出(OF=0),SF=0,前面一个大于后面一个			    若有溢出(OF=1),SF=1,前面一个大于后面一个          3.乘法指令MUL4.除法指令DIV5.其他运算指令

逻辑运算和移位指令

1.逻辑运算指令(1)逻辑与指令AND(2)逻辑或指令OR(3)逻辑非指令NOT(4)逻辑异或指令XOR(5)测试指令TEST 和AND逻辑相同,但不将与的结果送到目标操作数,对标志位有影响2.移位指令(1)非循环移位指令	1.算术左移和逻辑左移指令SAL/SHL	2.算术右移和逻辑右移指令SAR/SHR(2)循环移位指令	1.不带CF的循环左移和右移指令ROL/ROR	2.带CF的循环左移和右移指令RCL/RCR

串操作指令

1.重复操作前缀	(1)REP:无条件重复前缀,重复执行指令规定的操作,直到(CX=0)	(2)REPE/REPZ:相等/结果为零时重复,ZF=1,且CX不等于0时重复	(3)REPNE/REPNZ;不相等/结果不为零时重复,ZF-0,且CX不等于0时重复2.串操作指令	(1)串传送指令		串传送指令有三种指令格式		MOBS,MOVSB,MOVSW		MOVSB一次传送一个字节	(2)串比较指令		串比较指令有三种格式		CMPS,CMPSB,CMPSW		CNMSB按字节进行补缴,CMOSW按字进行比较	(3)串扫描指令	(4)串装入指令	(5)串存储指令

程序控制指令

1.无条件转移指令JMP	(1)段内直接转移	(2)段内间接转移 改IP	(3)段间直接转移	(4)段间间接转移2.条件转移指令JCC	
<条件转移指令表>
P1383.循环控制指令 (1)LOOP (2)LOOPZ指令 (3)LOOPNZ指令4.过程调用和返回 (1)段内直接调用CALL (2)段内间接调用 (3)段间直接调用 (4)段间间接调用 (5)返回指令RET5.中断指令 (1)中断指令INT (2)中断返回指令IRET

程序题代码

;1.求两个无符号双字节长数之和,两数分别放在MEM1和MEM2中,和放在SUM中;程序DATA SEGMENT	MEM1 DW 1122H,3344H	MEM2 DW 5566H,7788H	SUM DW  2 ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:	MOV AX,DATA	MOV DS,AX ;取数据段地址	LEA BX,MEM1 ;取MEM1首地址	LEA SI,MEM2 ;取MEM2首地址	LEA DI,SUM ;取SUM首地址	MOV CL,2 ;LOOP两次	CLC ;请CF标志位AGAIN:	MOV AX,[BX];将MEM1数据放到AX中	ADC AX,[SI];加上MEM2	MOV [DI],AX;将结果送到SUM	ADD BX,2;地址+2	ADD SI,2;地址+2	ADD DI,2;地址+2	LOOP AGAIN		HLT ;暂停指令CODE ENDS	END START;2.找最大值(无符号类型);程序DATA SEGMENT	ARRAY DB 2,0,3,4,5,6,7,8,9	MAX DB DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC	MOV AX,DATA	MOV DS,AX;取数据段地址	MOV BX,0	MOV AL,ARRAY[BX];将第一个数存到AL中	MOV CX,9;循环9次	MOV BX,1;指向第二个数NEXT:	CMP AL,ARRAY[BX];比较	JNB XXX;JNB不低于,也可以用JAE	MOV AL,ARRAY[BX];将较大的数放到ALXXX:INC BX;如果较大数不变,则跳转至此	LOOP NEXT	MOV MAX,AL;最大数送到MAXMAIN ENDPCODE ENDS	END MAIN		;3.找最大值(有符号型);程序DATA SEGMENT	ARRAY DB 34H,2,3,4,5,6,7,8,9	MAX DB DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC	MOV AX,DATA	MOV DS,AX	MOV BX,0	MOV AL,ARRAY[BX]	MOV CX,9;循环9次	MOV BX,1NEXT:	CMP AL,ARRAY[BX]	JNL XXX;JNL不小于,也可以用JGE	MOV AL,ARRAY[BX]XXX:INC BX	LOOP NEXT	MOV MAX,ALMAIN ENDPCODE ENDS	END MAIN	;4.两个数组相减到另一个数组中;程序;不考虑相减为0情况DATA SEGMENT	ARRAY1 DB 14H,2,3,4,5,6,7,8,9,2	ARRAY2 DB 12H,4,5,6,7,8,9,0,1,3	ARRAY3 DB 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC	MOV AX,DATA;取数据段地址	MOV DS,AX	MOV BX,0;指向第一个数	MOV CX,10;循环10次NEXT:	MOV AL,ARRAY1[BX];将第一个数放至AL	SUB AL,ARRAY2[BX];用第一个数减去第二个数	JZ XXX	MOV ARRAY3[BX],AL	INC BX	LOOP NEXTXXX:HLTMAIN ENDPCODE ENDS	END MAIN	;考虑相减为0情况DATA SEGMENT	ARRAY1 DB 14H,2,3,4,5,6,7,8,9,2	ARRAY2 DB 12H,2,5,6,7,8,9,0,1,3	ARRAY3 DB 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC	MOV AX,DATA;取数据段地址	MOV DS,AX	MOV BX,0;指向第一个数	MOV CX,10;循环10次NEXT:	MOV AL,ARRAY1[BX];将第一个数放至AL	SUB AL,ARRAY2[BX];用第一个数减去第二个数	MOV ARRAY3[BX],AL;考虑相减为0情况	INC BX	LOOP NEXTMAIN ENDPCODE ENDS	END MAIN

接口题代码

;1.6116(2Kx8bit) 地址61000H~61FFFH电路;程序要求:将存储空间写满55H;-----main code------MOV AX,6100HMOV DS,AXMOV AL,55HMOV CX,1000HNEXT:	MOV [BX],AL	INT BX	LOOP NEXT;-----main code------;2.8253计数器 地址D0D0H~D0D3;程序要求:初始化计数器0初值20,方波发生器,计数器1初值2000,频率发生器,计数器2初值1000,频率发生器;-----main code------MOV DX D0D3HMOV AL,00010110B;计数器0,低8位计数,工作方式3,二进制OUT DX,AL;写控制字;写计数器0初值MOV DX,D0D0HMOV AL,20OUT DX,ALMOV DX D0D3HMOV AL,01110100B;计数器1,双字节计数,工作方式2,二进制OUT DX,AL;写控制字;写计数器1初值MOV DX,D0D1HMOV AX,2000OUT DX,ALMOV AL,AHOUT DX,ALMOV DX D0D3HMOV AL,10110100B;计数器1,双字节计数,工作方式2,二进制OUT DX,AL;写控制字;写计数器2初值MOV DX,D0D2HMOV AX,1000OUT DX,ALMOV AL,AHOUT DX,AL;-----main code------;3.8255点灯 地址80~83H;程序要求:读入按键,控制灯;-----main code------MOV AL,10010000B;PA口读,PB口写OUT 83H,AL;写控制字NEXT:	IN AL,80H;读取PA端口	AND AL,111B	CMP AL,100B;后两个按下	JNE NEXT1	MOV AL,011B;点亮第一个	OUT 81H,AL	JMP NEXTNEXT1:	CMP AL,000B;全部按下	JNE NEXT2	MOV AL,110B;点亮最后一个	OUT 81H,AL	JMP NEXTNEXT2:	MOV AL,101B;点亮中间一个	OUT 81H,AL	JMP NEXT;-----main code------;4.8255 打印机 地址FBC0~FBC3H;-----main code------MOV AL,10000001B;PA输出,PC输入MOV DX,FBC3HOUT DX,AL;写控制MOV AL,00001101B;高四位默认0,1101PC6置1OUT DX,AL;写PC控制MOV CX,COUNT;自定义长度MOV SI,OFFSET DATA;获取首地址NEXT:	MOV DX,FBC2H;pc口使能	WAIT1:	IN AL,DX;读取PC口	TEST AL,10B	JNZ WAIT1;等待busy		MOV AL,[SI]	MOV DX,FBC0H	OUT DX,AL;输出数据		MOV DX,FBC2H	MOV AL,0	OUT DX,AL	MOV AL,40H	OUT DX,AL;pc6写一个负脉冲	INC SI;地址+1	LOOP NEXT	HLT	;-----main code------

转载地址:https://blog.csdn.net/qq_41262681/article/details/94320769 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:stm32 systick定时器
下一篇:数字信号处理第一章 离散时间信号与系统

发表评论

最新留言

不错!
[***.144.177.141]2024年03月26日 01时31分10秒