记录一下做题可能遇到的题型

1.十进制转2进制:整数部分除以2/8/16,得到的商接着除,得到余数放旁边;最后除到商0只有余数那就从下往上读;小数部分:乘2!!!拿走!!个位的数字直到出现1.0拿走1,从上往下读

2.其他进制变成十进制:权法

3.补码的计算:利用补码把所有减法变成加法不代表不能减法补码;前提把涉及到的数据全换成补码:两个正数正常减加;一正一负是加法溢出则舍去溢出;是减法则正常减但是舍去借位;最后一步要校验因为可能溢出。

4.把十进制表示成组合BCD码:即4位BCD表示一位数字,且这还涉及到BCD码算法的修正问题:
分离BCD指的是8位二进制表示一个十进制。修正需要的原因是:BCD用4位表示的话是逢16进1,而十进制是逢十进已。因此,相加没进位(高低位的码,高位有高位加6,低位有低位加)且小于等于9就不需要修正,其他加法情况要加6修正,如果修正后使得高位大于9了;减法是两个码有借位才减6修正。

注意是可能出错,具体修正与否看上面。

5.BCD码修正出题是会出现无法使用补码导致无法在最高位借到位,这个时候在最高位前面写(-1)就好最后表示的时候也加个负号,修正照常。

6.微处理器内部由哪几部分构成:ALU,工作寄存器,控制器(PC(保存下一条),IR(保持当前执行),ID(译码),PSW,SP,控制逻辑部件),I/O控制逻辑

7.微处理器总线有哪几类:数据:信息;地址:地址码;控制:控制信号

8.8086内部有哪些寄存器:共14个:8个通用(ABCDX,SI,DI,SP,BP),4个段(CDESS),2个控制寄存器(IP,PSW,没有SP,IR,ID);PSW有9个标志位,6个反应ALU前一次操作状态,3个用于控制CPU操作:DF字符串操作SIDI方向,IF:中断允许:TF:单步执行debug

9.有符号数的范围

10.6大标志位有哪些,分别有什么影响:CF最高位进借(易忘借)位,OF有符号溢出(次高位);PF:奇偶(只看低8位);AF:半D3进借位;ZF:零标志;SF:符号标志正负

11.逻辑地址和物理地址定义与联系:逻辑地址是计算机识别的,物理地址由段加偏;物理地址可以表示成逻辑地址的形式

12.段地址,偏移地址,物理地址的关系:段乘16或乘10H或左移4位二进制+偏移

13.有哪些寄存器可以用来指示存储器地址:SI,DI,SP,BP,BX,IP(易忘)

14.名称(标识符):标号或变量名(冒号的是标号,空格的是变量名),不能以数字开头

15.常数:字符串和数值;表达式:操作符和操作数组成,操作数可以是常数,标识符,子表达式;

16.操作符有5种:算术,逻辑,关系,属性,其他;MOV等指令叫做操作助记符

17.关系操作符结果成立的话数据全为1,反之全为0

18.变量的用法:名(可无) DB/DW/DD 12H,? ,4 DUP(1H,?)?只分配空间,字符串是DB,ASCII值;特殊用法:变量1 DW/DD(DD低字存偏移高字存段) 变量2,用变量存变量地址

19.属性:标号有3个,变量有5个,操作属性,SEG段,OFFSET偏移,TYPE类型,LENGTH,SIZE;想要强转的类型 PTR 表达式,特殊用法,指定间接寻址的存储单元类型,WORD PTR 【SI】

20.画内存图是单元内容写成16进制,地址不要转化成物理直接,段:偏

21.寻址方式:

(1)数据传输限制:立即数只能给存储单元和通用寄存器(没有段寄存器)不能反向;存储单元和通用寄存器和除CS外的段寄存器可双向;CS只能单向的接收存储单元和通用寄存器;剩下的段寄存器可以和通用寄存器双向

(2)目的,源操作数,这个顺序别乱

(3)8种寻址:立即数(因为他是单向的显然不能做目的操作数);寄存器寻址(操作数存在寄存器);操作数存在存储单元有5种寻址方式:直接寻址(给出偏移地址,可以直接给含有变量名的表达式而不需要OFFSET,或者【1200H】);寄存器间接寻址【BX,SI,DI】,IP不能操作,SP(单独)和BP是基址;寄存器相对寻址:即基址加变址的方法:变量/数字【BX,BP,SI,DI(内的数据)+数字】;基址变址寻址:【BX,BP】【SI,DI】;基址变质且相对:变量[BX,BP+数字]【SI,DI+数字】;隐含寻址:POP,MOVSB等

22.判错:CS不能做目的,存储不能到存储,段不能到段;两个操作数至少得有一个指明类型;只指明一个另外一个自动适应,但是如果指明两个这两个必须匹配;不能两个都是无类型:立即数,不含变量名的下面5种直接寻址如【1200h】,寄存器间接寻址如【SI】,寄存器相对寻址,基址变址,基址变址且相对。一看寻址方向限制,二看类型是否匹配;三看时候类型不明确,四看是否语法出错比如间接寻址只能那3个寄存器,五看特殊:如XCHG不能是段,LEA只能直接寻址,带F结尾的不带任何操作数,LDS,LES源操作数只能5种存储器寻址,MOVS隐含寻址,MUL源操作数必须有类型且只能是字节或字,目的操作数是隐含寻址。

23.其他指令:LEA 寄存器,MEM(只能是直接寻址)取偏移地址;取地址指针指令(会把段地址存到DS或者ES):LDS,LES语法不同于LEA,源操作数可以是5种存储器寻址之一;操作PSW标志位:LAHF低八位读到AH,SAHF写到低八位,单独就这个不带操作数;XCHG交换数据,限制参考上面讲的范围;XLAT不带操作数,自动把AL的内容更新成原本的内容加BX的内容所构成的地址指向的内容,用于搬运数据;

24.堆栈:LIFO,必须是字操作;PUSH SRC;PUSHF(PSW);POP DST;POPF;SP指向开辟完毕的堆栈空间最后单元的下一个地址(栈底),所以栈底不在开辟的空间里,因为SP是变址再压入栈,先弹出再变址,一次变2(一个字)

25.变量名直接寻址只能变量名加数字不能变量名加变量名,另外加数字是改变的地址不是改变的地址内容,其他加偏移地址的也是改变地址

26.虽然从图上看CS可以被写数据但是语法上不允许CS为目的操作数,POP CS是不允许的

27.取属性的话视作立即数寻址因此是无类型的,是字还是字节依另外一个而定。

28.MOV 变量,变量是错的,但是MOVS 变量,变量是对的,这是隐含寻址。

29.上面介绍的是数据的寻址,像JMP这种的寻址不属于上面任何一种,单独有个体系:转移地址的寻址方式:段间/段内+直接/间接寻址;间接的意思是偏移地址保存在寄存器或存储单元,如JMP BX

30.其余指令了解:ADD,ADC,SUB,SBB,NEG,CMP,INC,DEC,MUL,IMUL,DIV,IDIV,CBW(扩展AL的符号为到AX),CBW(扩展AX的符号位到DX),AAA,DAA,AAS,DAS,AAM,AAD;除除法外都是先运算后调整,另外乘法和除法只有分离BCD调整;

移位:SHR,SAR,SHL,SAL,ROR,ROL,RCR,RCL,源操作数是移动的位数只能是1或者CL,目的操作数只能是字或字节;记忆方法SH逻辑,SA算术,RO循环,RC带进位循环;不循环的话就补0,且移出的都会到CF里。算术左移会丢掉符号位故和逻辑左移一样,算术右移则会保持符号位自动填充不补0;不带进位循环是同时数据循环且移入CF。

31.有条件:JC,JNC;(E,S(负数),O(OF),P(偶数),A(above),B(below),G(greater),L(LOW)),AB无符号,GL有符号;记忆有N,N排第二;有E,E排最后;最多同时加N和E,且根据逻辑判断剩下那些能不能组合,单独判断相等是可以把E改为Z其他判断相等都用E,其他都是在原有基础上加NE特殊的是JPO;

32.有条件转移一定是短转移,-128-+127,另外转移是满足跳

33.LOOP(可带后缀Z,E用于内部循环体有CMP) 标号先减CX再跳,因此CX不能为0;为防止CX为0有指令JCXZ 标号;

34.子程序调用:CALL 标号或寄存器/存储器单元,先CS后IP;RETF先IP后CS,RET/RETF n最后把SP加n,这里有坑因为堆栈必须按字所以n必须是偶数。

子程序:标号:。。。RET; 过程名 PROC NEAR等类型(换行) ...RET(换行) 过程名 ENDP;

35.INT n(PSW,CS,IP入栈,IF,TF清除,取出中断向量转去子程序执行)IRET搭配;中断向量表最低1024个地址单元(字节),一个占4个地址单元;

36.REP(带Z、E,NZ,NE) MOVSB重复操作;MOVSB,CMPSB,SCASB(与CMP类似只是比较的对象变了,AX后AL),LODSB,STOSB五个格式一致

37.IN 只能AX或AL,可【12H】直接寻址(限定8位)或DX类型是间接寻址但是不打括号。OUT的源和目的要求反过来

38.宏:名 MACRO N,E,CC(这些是形参可在宏内部使用)(换行).(JN&CC)..ENDM1;宏内出现标号变量要在宏体前面声明 LOCAL L1,L2;

39.虽然一个类型明确指令明确,但是ADD等运算不要超过,AL则不要超255

40.test 与操作结果送去PSW判断,如测速TEST BX,06H;JZ  。。。

41.ASCII,'0'是30H(48);‘A‘是41H(65),’a‘是61H(97),小写字母变成大写要减32;

(1)直接基于这些判断是否是字母再判断是否是小写字母再加减32;

(2)或者利用32正好是16的倍数因此大小写的二进制的转化只会改变D5位,大写这一位是0小写这一位是1;小写变大写与上5FH,大写变小写或上20H;只需一条指令无需任何变动

42.移位时先看清楚是不是16位寄存器!!!!!,给你8位就按8位移是不是傻。对于DX的DL移动不改变DH。

43.CALL不一定把CS和IP都压了,段内寻址只压IP,如果CALL 寄存器因为寄存器是16位所以只压了IP

44.把一个数据重复n次移入别的寄存器,方法是先清零移入一位到最高位后SAR这样就会重复最高位

45.除法的四舍五入:,利用二进制除法商天然就是取整,利用最后这个等式把商拿出来就好,结果小于255商在AL,大于在AX;

46:可混合:

找字符串首先要把定义好的变量偏移地址赋值给SI,DI然后压栈等保护

47.微处理器的外部结构表现为:数量有限的输入输出引脚,构成了微处理器级总线

48.微处理器级总线经过电路形成:系统级总线

49.总线的定义:在计算机系统中模块之间传输数据,地址,控制信息的公共通道;标准化总线的优点:简化软硬件设计简化系统结构,易于系统扩展,便于系统更新,便于调试

50.功能层次可以把总线分为:片内总线,元件级总线,系统总线,通信总线

51.RESET信号的有效形式:高电平有效至少持续4个时钟周期,复位信号上升沿与下降沿同步系统复位后的启动地址:0FFFF0H,(CS)=0FFFFH,(IP)=0000H

52.为什么要有地址锁存器:20条地址,16条数据采用分时复用,减少引脚;20条引脚会在总线周期的T1状态输出地址,为了使地址信息在总线周期的其他T状态有效需要锁存T1输出的信息

53.三态门的三个状态:高低电平,高阻态

54.基本(指最小方式)读总线周期:T1状态开始输出地址锁存允许信号ALE,利用他的下降沿锁存地址和BHE非(用于判断读写操作使用的数据线),T2状态:RD非输出低电平有效信号,DEN非输出数据允许信号低电平表示CPU准备好接收,DT/R非输出数据收发信号低电平说明是收;另外T1还会给出地址信息,T4完成数据读取

55.最小方式系统总线形成电路:会画的同时记住所有端口:锁存地址74LS373,BHE非输入然后原封不动输出(且这个不算地址总线算成控制总线),ALE接G,OE非默认接地,输入A19-A16,AD15-AD0,输出A19-A0(称地址总线);数据总线(D15-D0):输入接AD15-A0,DT/R反接DIR决定收发方向,DEN反接OE反决定CPU是否空闲;控制总线:NMI,INTR,READY,HOLD,TEST反,RESET是入,其他是出。

56.控制总线提供:3个:所有存储器/IO的时序和控制信号,来自存储器/IO的响应信号

57.读写信号的作用:数据总线上的方向,流入流出存储/IO的方向,控制存储器读写操作的方向

58.RESET信号保持4个周期的高电平后发生什么:CS,IP,程序执行地址

59.读一个字节需要:16条数据线中8条,在一个总线周期完成;读一个字需要:16条,对其一个总线周期,没有则2

60.检查READY信号:在T3状态,高电平有效说明设备准备完成,若未完成则CPU自动插入Tw等待周期,每个周期开始时检查READY;功能是:保证与慢速设备的数据传输

61.最大系统与最小系统的区别:最大系统有多个处理器所以多一个8288总线控制器(地址总线和数据总线形成有一些改动),DEN反(8288上的是DEN所以输出时要加个非门),ALE,DT/R反由8288提供;8288需要时钟,8288受S012(全带反)控制,多个控制器所以没了HOLD,HLDA变成输入总线请求/输出总线授权(2个一优先级,可外带2个CPU)RQ反/GT0反;另外8288还把中断应答INTA反接手,M/IO反拆成4个MRDC反,MWTC反,IORC反,IOWC反;有一个指令状态队列输出是CPU出来的,QS1,QS0

62.MOV·【DI】,AL输出M/IO高电平,WR反低电平

63.执行MOV,OUT,IN的总线时序图:

(0)信号变换起始点按T1何时到来而变换

(1)画出CLK,以边沿中点画虚线定T1等

(2)ALE平时为低,T1周期内一个脉冲(会提早结束)

(3)M/IO反:整个总线周期有效,其他周期未定(高低电平都画出来需要写文字就交叉且实线不需要就虚线)

(4)RD反或者WR反:平时拉高,T2生效拉低,T4结束前拉高

(5)DT/R反:开始前虚线未定,T1开始到T4有效

(6)DEN反:总线开始前虚线未定,T1高电平表示CPU要锁存地址不空闲,T2-T4中等输入输出完高电平

(7)AD15-AD0:之前未定,T1输出地址,读操作T3开始读T4结束,写是T2开始到T4结束

(8)A19-A16和BHE反写在一起:T1输出地址和BHE反,后面输出状态S3-S6.

(9)插入等待周期的时序:在T3后

(10)奇数地址读写一个字的情况要画两个总线周期其他不变

64.读总线和写总线的相同之处:基本相同,不同的是写总线在T2状态就开始传输数据了

65.存储器分类以及用途:按工作方式分为RAM和ROM;RAM:随机存储器,允许向任意地址单元读写数据,由于信息是电信号写入的,断电丢失信息。计算机工作时的程序和数据存在RAM中,修改后应移到外部存储器;ROM:只读存储器,只能读取不能随意写入,内容是在出厂时厂家用特殊方法写入的或者利用特殊的写入器,掉电扔有效,由于存计算机启动相应的程序和数据。

66.存储器指标:存储容量,读写速度,非易失性,可靠性等

67.存储器速度怎么估算:是保守估计,手册获得最小读出和写入周期,CPU读写周期比这个大是合理的,估算”大“这个时若以4个T周期为一个总线周期来看,要留出裕量,因此手册读出的最小周期<4T-T(裕量)-tda(地址总线延时)-tD(其他各种因素的延时)

68.存储器的拓展:目标32KB默认是32kB(指的是地址线称字节)*8(数据线称位),型号后缀的数字是乘积后的结果

(1)位扩展:地址线,使能共用,有些图会需要多一个地址线去片选(或者搭配译码电路片选)这表达的意思是这两片在片选上是同等地位的,并不会增加他的寻址范围(字节容量)

(2)字节扩展:使能和地址,数据线均共用,通用是需要多地址线去译码片选,地址变换与位一致,总结为每多一位地址参与片选寻址范围就乘2

(3)字节与位扩展组合,共用级联,关键是译码片选怎么做首先把同一组的片选全连到一起,再把不同组的片选输入前译码

(1)1K*1:需要8片拓展成8位,也就是需要8片;地址线是10条,32kB地址线是15条也就是需要32组,因此总的需要32*8=256片;需要片选信号条数:只关注地址(字节容量)就好,因此需要5条

(2)1K*4:2*32组=64片,5条地址片选(3)4k*8:8片:3条地址(4)16k*4:2*2=4片:1条

(1)注意问法:如果是问有多少条可以用作片选线则是16-片内不是上面的5,3,1

69.EPROM的编程过程:标准编程和快速编程两种,标准编程:vpp加编程电压,地址线和数据线给好数据,片选,使能,给PGM反50ms负脉冲则可以写入,OE反=1则可对刚写入的检验;快速编程:100us的编程脉冲依次写完所有单元,后进行检验,正确则重写;EROM需要高电压,EEPROM不需要高电压也不需要专门的擦除,并行写入与SRAM类似,约5ms,串行按照时序进行,分为字节写和页写

70.存储器画图(多个):

(1)6264:8k*8,最大寻址为1FFFH,级联为3FFFH:

利用74LS138(38译码)把3输入接好后其他作为使能接入就好,8088读写是MEMR反(接到OE反)和MEMW反作为片选的同时也作为译码电路的使能端,62642个片选一个高电平+5V,

自检:写入55H和AAH

8088,8位数据线没有奇偶地址连接问题,但是8086有

8086:RAM(需要涉及到写):偶片接低8位数据线,奇片高8位,利用74LS155(两个可单独使能的2-4译码集成)输出片选,A0作为偶片的译码使能,奇数地址不译码,A14-A15以外的线加M/IO反是这个译码器的片选,BHE反是奇片的片选但是不接使能接到片选,太jr复杂了;

ROM(不需要写因此不需要分奇偶片但是扔需要M/IO和BHE反反译码)

71.IO口基本功能:地址选择,控制功能,状态指示,速度匹配,转换信息格式,电平匹配,可编程性

72.IO接口和IO端口区别:接口是IO设备和系统总线的连接部件;端口是指IO设备内部可由CPU进行读写操作的寄存器,存放信息不同分为数据端口,控制端口,状态端口

73.IO编址方式以及优缺点:独立变址:IO设备和存储器有独立的地址空间,优点一存储器容量与地址总线决定空间一样,优点二访问IO设备可以用较少的总线,提高利用率;缺点是:复杂了指令和硬件

统一编址:IO和存储器各占一部分地址空间,优缺点与独立编址相反

74.程序查询,中断,DMA:程序查询:简单且可以防止数据丢失但是占用大量cpu时间;中断:较好的实时性但是一定程度上增加成本;DMA:IO设备和存储器直接通信节约了CPU时间但是输入输出操作仍会占用CPU且很难达到较高的速率

75.PC机IO是1KB,任何设备都是要通过IO接口与主机相接,接口逻辑是一侧IO设备,一侧系统总线

76.译码电路设计:用逻辑门设计最方便,与门是不凹,或门凹

以下是IO相关总线

(1)8086最小:M/IO反,RD反,WR反,BHE反,A0

(2)8086最大:IOR反,IOW反,BHE反,A0

(3)8088最小,IO/M反,RD反,WR反

(4)8088最大,IOR反,IOW反

(5)IBM PC/XT:10位地址,8位数据,IOR反,IOW反,AEN(IO操作时为低电平,即dma not en)

产生片选信号一般是低电平有效因此最后的门是或门,高电平敏感。把地址译出想要的接到或门上再接一些IOR反,AEN啥的就好。问说地址在300-30FH范围的意识是低4位不参加译码,除了低4位这些会变的其他数据对了才代表对IO操作。

77.AEN未参加译码会怎么样:AEN不参加译码会出现DMA和IO设备竞争总线的情况

78.什么叫中断,8086有哪几种不同类型的中断:由于某个事件,CPU暂停当前执行程序,转去执行中断程序,执行完毕后返回原程序;类型有外部可屏蔽中断,外部不可屏蔽中断,内部中断

79.什么是中断类型,有什么用:用二进制编码给中断源编号,这个编号就是中断类型号,8086中断类型号是8位二进制码表示,共有256个,可划分为3类;用处为:使CPU识别中断源,从而转去对应的中断服务程序

80.什么是中断嵌套:cpu在处理低级别中断时有高级别中断请求,转而去执行高级别中断,执行完毕后返回低级中断。

使用嵌套有什么好处,:能够提高中断响应的实时性,

对于可屏蔽中断实现中断嵌套的条件是:(1)cpu处于中断允许状态(IF=1)(2)级别高于当前正在执行的(3)8259没有屏蔽(4)没有不可屏蔽中断和总线请求(后2点是针对可屏蔽中断的)

81.什么是中断向量,中断向量为每个中断服务程序提供入口地址,32位,占用4个地址单元,8086低1024字节存放,称0页,

中断向量表:这1024个单元称中断向量表,给中断类型号乘4就是中断向量存放的地方

82.中断向量表的功能存放中断向量,从这个表到服务程序过程:
(1)CPU获得中断类型号n,压入PSW,CS,IP保护现场

(2)PSW的IF,TF清零关闭中断

(3)置入IP,CS

(4)转入服务程序

83.可屏蔽中断的响应过程

(1)IF=1为前提,INTR加入中断请求信号,到CPU进入对应的中断服务程序所进行的一系列操作,称可屏蔽的中断响应过程

(2)等待当前指令执行完毕,进入中断响应周期,获取中断类型号,同82点

84.8258a的IRR,IMR,ISR:
(1)IRR中断请求寄存器,用于锁存中断信号,接收IR7-IR0信号后对应位置1

(2)IMR:用于中断请求屏蔽,对应位置1则被屏蔽

(3)ISR:记录当前正在被服务的中断,包括尚未执行完被更高优先级打断的,若CPU响应了中断对应位会被置1,中断结束前要清零

85.8259a的初始化:

(1)初始化编程就是对命令字ICW进行初始化,必须从ICW1开始按顺序初始化,ICW1端口地址是A0=0,区域为A0=1;初始化ICW1,ICW2后判断是否是级联方式是就初始化ICW3,最后初始化ICW4

86.64级中断:8*9-8=64,故需要9片

87.完全嵌套优先级,怎么设置:

全嵌套工作模式下优先级是固定的,IR0最高依次递减到IR7,如果初始化后没设置别的优先级就按这个,

88.设备按优先级的响应次序:

这是个挺经典的画图:(1)STI是之前和CLD一样的指令用开中断,关中断是CLI

(1)正在执行执行接收到2个请求,高优先级的被响应,ISRi置1,由于进入中断cpu会关中断但是这个是多个中断同时有,所以需要在高优先级里面执行STI开中断

(2)如果这个时候来了第三个中断比前面两个优先级都高,转去执行那个,ISRi置1,但是上一个ISRi未清除,这个最高优先级IRET前把他的ISR位清除,返回上一个未执行完的中断。

(3)这两个中断执行完毕后,在IRET前清除对应的ISR,并且置最低优先级的ISR转去执行

(4)上面的这些都需要STI开中断,不然cpu自动关闭就不响应了

89.8259a怎么管理中断优先权:

利用优先权处理器来识别和管理中断请求信号的优先级,当几个中断请求出现时根据设置的优先级和IMR来判断,将最高优先级的IRR中的1送入ISR,若正在执行中断优先级出现新的中断优先级处理器则判断是否高于当前优先级若是则进入多重中断

90.特殊全嵌套以及使用场合

多片8259a级联工作时,主片必须工作在特殊全嵌套下:假设从片工作在全嵌套下,出现了两个中断请求,该片会向上一级发出请求,主片全嵌套下不会响应,特殊全嵌套才行

91.发送中断结束指令:

向8259a发送中断结束指令对应的ISR会清除,有自动结束(AEOI)和非自动结束(EOI)两种

AEOI:在第二个中断响应周期的INTA饭后沿清除只能工作在单片且不会嵌套的情况

EOI:中断返回前发送EOI指令给8259a,适用嵌套情况,但是比较复杂,如果忘记清除则该位将不再响应

92.结束方式:

中断结束命令:向OCW2的EOI位写1,不写,AEOI的影响如上

93.CLI,STI:
(1)CLI应用场景:段寄存器,重复,LOCK前缀不允许在前缀码和指令码响应中断,执行前CLI,执行后STI

(2)目的地址是段寄存器的MOV和POP(除CS外)不允许响应中断

(3)中断嵌套前要开中断STI

94.级联8259a的工作方式:

(1)设备A请求从片,锁存进IRR,优先级处理器结合IMR判断后向主片输出INT信号,主片同样经过这样向主机发送INT信号

(2)CPU进入两个INTA反周期

(3)优先权电路设置ISR,第一个INTA周期若级联则主片输出级联地址,不级联以及级联的都在第二个INTA反周期输出中断类型号到数据线上

(4)cpu获得中断类型号,处理得到中断向量,进入对应服务程序后IRET退出前发送EOI指令,返回断点

95.初始化程序

(1)主片端口地址(8位)有两种20H,21H,看A0是什么要求,如写EOI的OCW2是20H地址,写入EOI是写23H

(2)其他初始化代码看看吧,有空再背

96.读代码:

(1)问INT 8后相关寄存器是什么样的,需要明白这个时候指的是未退出中断的,PSW会变堆栈

(2)PUSH后是原先的数据,先PUSHPSW再CS再IP(记得中断向量表的IP要+2)(POP好像并不会擦除)

(3)INT n是双字节指令,他的IP是他存放偏移地址+2

97.设计中断系统考虑什么

(1)设计中断源,确他们的中断请求方式

(2)编写程序,处理好对应的优先级

(3)保护现场设计

(4)中断服务程序设计

(5)恢复现场,返回程序

98.RETF和IRET

可以混用但是会产生问题,因为RETF比IRET少了出栈PSW,中断服务程序会改变PSW,特别是进入中断前是允许中断的,进入中断后则不允许如果不保存退出后就变成不允许了

99.计数器分配地址:

计数器0的地址是00,1是01,2是10,控制字是11;这些地址由cpu的A2A1给出,接到8253的A1A0,问计数器0地址可以有哪些找A2A1是00的就行

100.画出波形:WR反一个负脉冲写控制字(CW),一个负脉冲写常数(如果16位要写2次先低后高),还用到CLK0,GATE0,OUT,CE

方式0:计数到终值中断,写控制字的低电平期间OUT变低,写完常数后(上升沿认为写完)的一个CLK脉冲上升沿采集GATE,下降沿把CR打入CE,打入的这个下降沿不减,后面每来一个下降沿减一,减到0的那个下降沿OUT开始变高,不写新初值OUT一直是高但是会在减,什么时候写初值?计数值高于原先的,因为异步抓不住0

方式1:单脉冲形成:前面和方式0一样,但是写完常数OUT是变高,如果这个时候GATE来个脉冲CLK上升沿捕捉后下降沿才打入CR初值进CE,同时OUT变低,减到0OUT变高,特殊的是下一个gate脉冲来时是OUT变低。

在没减到0会重新打值

方式0的OUT变化节点是写控制字和后续的写常数+GATE捕获中的写常数,GATE捕获后才写入初值所以低电平会是N+1个CLK;方式1则是来一个数写好后来一个脉冲打一次初值所以是N个CLK。

方式2:分频脉冲,写控制字时OUT变高,初值写完后捕获GATE打入CE,不同的是减到1自动OUT变低后保持一个CLK(CE减到0)OUT变高且初值自动打到CE重复,是N-1个CLK的脉冲,GATE若在减的过程变低,不计数等待捕获重新开始打值

方式3:方波产生:和方式2一样,一开始由低变高偶数减2到0自动打(是瞬间打不像方式2会等一个clk)打后变低后续是减到0变高不一样,奇数打入CE时会自动减一变成偶数

感觉有点复杂了,认为软件写要多一个时间,硬件写少一个,而只要写常数和最开始的写控制字会改变OUT(没验证暂时这样记吧)

方式4:写控制字OUT变高,写常数减1正常进行,减到0时瞬间OUT变低持续一个脉冲,再写常数因为是软件所以经过N+1后有负脉冲,如果GATE变化重新计数

方式5:写控制字变高,写数完毕后等GATE正脉冲,捕获后计数

101,编程:

102.8254方式区别:

方式0与方式4:0是先高写控制字(后续是常数)变低后减为0才变高,4是先低写常数后变高减0输出1个CLK的负脉冲

方式1与5:1,5不同于0,4是自动置数的,1是先低写常数到CR,有GATE脉冲才置数变高后开始计数,输出低电平为计数值N的脉冲数;5是其他和1一样,但是来GATE脉冲后不变低,减到0从有一个CLK的负脉冲

方式2,3:2是先是低,写控制字变高,减到瞬间变低,一个CLK后自动置数变高开始循环,3是减到0但是是偶数,奇数会处理,且减到0的瞬间置数因此画波形图是不会出现00的情况,直接从02跳到N了

103.编程:

8253和8255是一样的分配地址法:

8253控制字:最后一位是BCD默认0,最高2位选计数器,次高2位,表读写规则,出现数字1说明读写高/低位,00不读写锁存进OL;剩下的表工作方式

8255控制字:最高位1表控制0表置位,控制下:次高2位为A组工作模式,D43分别对应A,C高方向,最低3位是B组工作模式和B方向C低方向:1输入0输出;

置位下:只有末4位优先,D0是0清1置,剩余3位选择C中的某一位

(1)首先要知道端口地址,由A1A0给出因只要关注CPU的A2A1位就好(2)要会从译码电路读出除A2A1外的值

(2)端口地址用DX装,要写的数据用AL装,写16位用XCHG AL,AH

(3)GATE失效时会暂停计数,GATE后会重新打入,如果GATE是脉冲作用如方式5,1会重新打入

(3)测量未知频率把这个接到GATE上选方式2,上升沿时开始计数,前提保证不会减到0,GATE下降沿产生中断的情况下会暂停计数;在中断里向控制字寄存器发锁存命令,读对应计数器即可:先用AL读一次低字节,换到高字节再读一次高字节,再交换;计算时与初值相减再加1,如果最开始是满的那字节NEG AX也行;进中断前记得PUSH中断中用到的寄存器。

(4)高电平接+5V,总线话大空心箭头

(5)看是否需要加非门和译码电路

104.8086与8088的区别(1)队列寄存器8086是6字节,8088是4字节(2)8088只有8位数据线(3)M/IO反核IO/M反正好相反(4)8088没有BHE反

105.长度指的是第一个dup的次数如果第一个不是dup是数据那就是1,大小指的是dw还是db这个字节数乘大小

106.画图

107.延时时长问题

108.代码

109.代码

110.8255a工作方式:

方式0是基本的输入输出,端口ABC都可配置,用于非智能设备数据传输;方式1是有联络信号的输入输出,AB可配置,3个端口分为2组,PC4-7作为A组,PC0-3作为B组,用于高速CPU和低速IO设备数据传输;方式2:双向传输只有A可以,PC6,7输出联络,45输入,3中断请求用于双机间的并行传输

111.如何配置8255a:
方式1:PC4输入STBA反信号表示告知8255数据准备好,PC5输出IBFA告诉外设已经收到数据了,输出模式的话PC4,5功能反过来但是均为低电平有效;PC3输出INTRA由PC4和INTEA中断屏蔽相与(因此是1不屏蔽),PC6,7用作普通IO;

产生INTRA的情况应该是外设数据无效,8255接收数据,故STBA,IBFA,INTEA均为1

112.编程

113.画图

114.编程

115.画图编程

1.IO指令间接寻址是用不打括号的DX!!!是可以的

2.方波生成是减2,因此输入5000计数是2500翻转!!!

3.BP默认SS段

4.指令是可变长指令

5.CPU与慢速重点在CPU,不能选DMA;

6.SRAM是用双极型器件,速度快,难集成,常见容量小,DRAM用电容,易集成,容量大电容会漏电需要刷新

7.存变量地址双字时先偏移再段,中断向量同理,断点入栈同理偏移在上因此先入CS再IP

8.栈底不用加1,SP是栈底加一

9.debug是用exe文件

10.使能是DEN反

11.OCW是运行中设置的所以不能在初始化8259a中设置循环优先级,ICW2确定中断类型号

12.8255最高位是设置控制还是置位,次高才是设置A组,A方向,C方向,要设置C的话要把A组B组均设置好

13.PF低八位偶数1置1,SF是负数1

14.AX除字节,商在AL,余数在AH;DX:AX双字除字,商在AX,余数在DX;除法对PSW无影响

15,n根地址线未译码,那就重叠区有2^n次方

16.SEGMENT

17.XCHG不能使用段寄存器

18.A12是13根线不是12根

19.全地址译码不会有重叠不会浪费存储器空间,部分地址和线会浪费,线最严重

20.ADD目的不能取立即数,目的和源不能取段寄存器,不能同时取存储单元

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值