第一篇:微机原理指令小结
8086CPU指令小结
所有指令:
(1)立即数不能作为目的操作数。
(2)不能在2个存储单元之间直接进行操作(串操作除外)。
(3)MOV指令和堆栈指令是惟一能对段寄存器进行操作的指令。(4)源和目的操作数的数据类型必须匹配,都是8位,或都是16位。(5)CS、IP不能直接作为操作数。(6)指令中至少要有一项明确说明传送的是字节还是字,如果没有,可通过PTR进行设置。
一、传送指令
(1)6种指令:通用传送指令、堆栈操作指令、交换操作指令、I/O操作指令、目的地址传送指令和标志传送指令。
(2)对标志位的影响:除标志传送(SAHF、POPF)外,均不影响标志位。(3)操作数表示方法:立即数——data,存储器单元地址——mem,寄存器——reg,段寄存器——segreg。
1.通用传送指令:完成数据传送
(1)指令格式:MOV OPRD1,OPRD2 ;[目的操作数OPRD1]← [源操作数OPRD2](2)源OPRD2: data、mem、reg、segreg。(3)目的OPRD1: mem、reg、segreg。
(4)通用传送指令MOV和堆栈指令是唯一允许以段寄存器(代码段寄存器CS和指令指针IP除外,即CS、IP不能作为直接操作数)作为操作数的指令,不允许通过MOV指令直接以立即数方式给段寄存器赋值,不允许直接在两个段寄存器之间直接进行传送。
(5)8位/16位操作。
2.堆栈操作指令:将数据压入/弹出堆栈(1)指令格式:
入栈:PUSH OPRD;先修改堆栈指针SP-2,然后将数据压入堆栈。
;SP =SP-1,[SP]=操作数高8位; SP =SP-1,[SP]= 操作数低8位。出栈:POP OPRD; 先将数据弹出堆栈,然后修改堆栈指针SP+2。
;(操作数低8位)←[SP],SP =SP+1;(操作数高8位)←[SP],SP =SP+1。(2)操作数:mem、reg、segreg。操作数不能是立即数data。(3)仅能进行字运算(16位操作)。
(4)堆栈存取原则为后进先出,只有一个入/出口SS:SP,SP始终指向栈顶,SP是自动修改的,SP在初始化中需要设置。
(5)PUSH、POP指令必须成对使用。
3.交换操作指令:XCHG——数据交换;XLAT——完成一个字节的换码转换(1)指令格式:
交换操作指令: XCHG OPRD1,OPRD2;[OPRD1]←→ [OPRD2] 累加器换码指令(表转换指令、查表指令):XLAT;(AL)←((DS)×16+(BX)+(AL))(2)XCHG:段寄存器和立即数不能作为一个操作数,8位/16位操作。
(3)XLAT:表首地址在BX中,AL的内容作为某一项到表首的偏移量(256字节的 1 表的下标),转换后的结果存放在AL中。
4.I/O操作指令:累加器(AX/AL)与I/O端口之间的数据传送(1)指令格式:
输入指令:IN AL/ AX,PORT;(AL/ AX)← [PORT]
IN AL/ AX,DX
;(AL/ AX)← [DX]
输出指令:OUT PORT,AL/ AX ;[PORT]←(AL/ AX)
OUT DX,AL/ AX
;[DX]←(AL/ AX)
(2)当端口地址≤ 255时,使用PORT(8位端口直接地址);当端口地址≥255时,必须用DX(16位端口直接地址)作桥梁。DX作端口寻址最多可寻找64K个端口。
(3)PORT为直接寻址,8位/16位操作。5.目的地址传送指令
(1)取有效地址指令:LEA OPRD1,OPRD2
或: LEA reg,[add] ;(reg)← add,add为有效地址
把存储器的有效地址EA(源操作数的地址偏移量)送入一个寄存器reg;常用于将一个16位的通用寄存器作为地址指针。传送的是有效地址EA。(2)将双地址指针装入DS和另一个寄存器指令LDS指令:
LDS OPRD1,OPRD2
或: LDS
reg,[add] ;(reg)←(add+1)(add),(DS)←(add+3)(add +2)(3)将双地址指针装入ES和另一个寄存器指令LES指令:
LES OPRD1,OPRD2
或: LES
reg,[add] ;(reg)←(add+1)(add),(ES)←(add+3)(add +2)
① 从源操作数指定的存储单元中取出4字节的地址指针(包括2字节的段地址和2字节的偏移量)传送到DS/ES和reg。指定将段地址送入DS/ES,偏移量部分送入一个16位的指针寄存器或变址寄存器。
② 源操作数mem,目的操作数必须是一个16位的通用寄存器。③ 传送的是存储单元的内容,而不是存储器的有效地址EA。6.标志传送指令
(1)读标志指令:LAHF;(AH)←(FR)0~7
功能:将标志寄存器中的SF、ZF、AF、PF和CF(即低8位)传送至AH寄存器的指定位,空位没有定义。
(2)存标志指令:SAHF;(FR)0~7 ←(AH)
功能:将寄存器AH的指定位,送至标志寄存器的SF、ZF、AF、PF和CF位(即低8位)。根据AH的内容,影响上述标志位,对OF、DF、IF和TF无影响。
(3)标志入栈指令:PUSHF;将FR入栈。(SP)←(SP)-2,((SP)+1,(SP))←(FR)功能:将标志寄存器FR压入堆栈顶部,同时修改堆栈指针,不影响标志位。(4)标志弹出栈指令:POPF;将栈顶的内容弹出到FR中。
;(FR)←((SP)+1,(SP)),(SP)←(SP)+ 2
功能:堆栈顶部的一个字,传送到标志寄存器FR,同时修改堆栈指针,影响标志位。
二、算术运算指令
(1)9种指令:加法指令、减法指令、增量//减量指令、求补指令、比较指令、乘法指令、除法指令、字节字/转换为字扩展指令和十进制调整指令。
(2)对标志位的影响:
① 加、减、比较指令(CMP)、取补指令(NEG)指令均影响6个标志位CF、OF、PF、SF、ZF和AF。
② 乘法指令影响CF和OF标志;除法指令所有标志位都不确定,无意义。
③ 增量//减量指令影响除进位标志CF以外的5个标志位AF、OF、PF、SF和ZF。④ 字节字/转换为字扩展指令不影响标志位。
⑤ 加法的ASCII调整指令AAA,十进制调整指令 DAA影响除溢出标志OF以外5个标志: CF、PF、SF、ZF和AF;OF没有意义。
⑥ 减法的ASCII调整指令 AAS、十进制调整指令 DAS影响 2个标志:CF和AF;其余标志没有意义。
⑦ 乘法的ASCII调整指令AAM、除法的ASCII调整指令AAD 根据AL寄存器的结果影响SF、ZF和PF。
1.加法指令(Addition):完成加法操作。(1)格式:ADD/ ADC
OPRD1,OPRD2 ;(OPRD1)←(OPRD1)+(OPRD2)(2)源: data、mem、reg;目的:reg,mem。(3)ADC指令主要用于多字节运算中。(4)8位/16位操作。
2.减法指令(Subtraction):完成减法操作。(1)格式:SUB/ SBB OPRD1,OPRD2;(OPRD1)←(OPRD1)-(OPRD2)(2)规定同加法指令。
3.增量(加1)/减量(减1)指令INC/ DEC:完成+1/-1操作。(1)格式:INC/ DEC OPRD;(OPRD)←(OPRD)±1
(2)功能:主要用于在循环程序中修改地址指针和循环次数等。(3)操作数:reg、mem。
4.求补指令NEG:完成补码操作。(1)格式:NEG OPRD(2)操作数:reg、:mem。
5.比较指令CMP:完成减法操作,结果不回送,反映在标志位上。(1)格式:CMP OPRD1,OPRD2;(OPRD1)-(OPRD2)
(2)功能:主要用于比较两个数之间的关系。在比较指令之后,根据标志即可判断两者之间的关系。减法操作,结果不回送目的操作数。
(3)两数关系的判断标志 ① A=B 用 ZF=1 判断;
② 两个无符号数的大小用CF判断。CF=1,AB。
③ 两个符号数的大小用SF⊕OF判断。SF⊕OF=1,AB。
JG/JNLE(大于,SF⊕OF=0且 ZF=0)JL/JNGE(小于,SF⊕OF=1且 ZF=0)6.乘法指令MUL/ IMUL:完成无符号乘法/带符号(整数)乘法操作。(1)格式:MUL/ IMUL OPRD ;8位:(AX)←(AL)╳(OPRD)
;16位:(DX)(AX)←(AX)╳(OPRD)
(2)源操作数:reg、mem,由指令给出。(3)目的操作数:默认在AL/AX中。
(4)带符号数乘法指令IMUL当结果的高半部分不是结果的低半部分的符号扩展时,标志位CF和OF将置位。
(6)可完成字节与字节乘法、字与字乘法操作。7.除法指令DIV/ IDIV:完成无符号除法/带符号(整数)除法操作。
(1)格式:DIV/ IDIV OPRD; 8位:(AL)←(AX)/(OPRD)……(AH)(余数)
;16位:(AX)←(DX)(AX)/(OPRD)……(DX)(余数)(2)源/目的操作数规定同乘法指令。
(3)对于符号数,当被除数不够位数时,需要对高8/16位进行扩展符号扩展。
8.字节字/转换为字扩展指令CBW/CWD:将AL/AX寄存器的最高位扩展到AH/DX。(1)格式:CBW/CWD(2)功能:将AL/AX寄存器的最高位扩展到AH/DX,AL.7(AX.15)=0,则AH(DX)=0;AL.7(AX.15)= 1,则AH=0FFH(DX=0FFFFH)。
9.十进制调整指令
(1)压缩BCD码:每个字节表示两位BCD数;
非压缩BCD码:用一个字节表示一位BCD数,在这字节的高四位用0填充。
(2)每条十进制调整指令在使用时都与相应的算术运算指令配合,并自动对相应的算术运算指令结果进行相应的十进制调整。
(3)格式:
① DAA:压缩的BCD码加法调整
② DAS:压缩的BCD码减法调整 ③ AAA:非压缩的BCD码加法调整 ④ AAS:非压缩的BCD码减法调整 ⑤ AAM:乘法后的BCD码调整
⑥ AAD:除法前的BCD码调整
三、逻辑运算和移位指令
1.逻辑运算指令
(1)5种指令:逻辑与、或、非、异或和测试指令。(2)指令格式
① 逻辑与指令AND OPRD1,OPRD2;(OPRD1)←(OPRD1)∧(OPRD2)
② 逻辑或指令OR OPRD1,OPRD2;
(OPRD1)←(OPRD1)∨(OPRD2)
③ 逻辑非指令 NOT OPRD;
(OPRD)←(/OPRD)④ 逻辑异或指令XOR OPRD1,OPRD2;(OPRD1)←(OPRD1)⊕(OPRD2)⑤ 测试指令TEST OPRD1,OPRD2 ;
(OPRD1)∧(OPRD2),结果不回送。(3)操作数范围
源操作数为reg、mem、data;目的操作数为reg、mem(NOT指令只有一个操作数)。单操作数指令NOT的操作数不能为立即数。双操作数逻辑指令中,必须有一个操作数为寄存器寻址方式,且目的操作数不能为立即数。
(4)功能:实现相应的逻辑功能。
① 与指令可实现屏蔽(复位)数据的某些位(使一个字或字节中的某些位清0,而其余位不变),提取某些位或拆字。
② 或指令可实现置位数据的某些位(使一个字或字节中的某些位置1,而其余位不变),拼字。
③ 非指令常用于使某个数取反,或取反后+1而得补码。
④ 异或指令可实现某个寄存器清0,或使目的操作数的某些位取反(使一个字或字节中的某些位取反,而其余位不变)。
⑤ 测试指令通常用于测试。目的操作数的某些位是1还是0,用ZF标志判断。
4(5)对标志位的影响
① 逻辑与、或、异或和测试指令影响ZF,PF,SF标志;CF=0,OF=0;AF无意义。② 逻辑非指令不影响标志位。2.移位指令
(1)4组8种指令:算术移位SA,逻辑移位SH,循环移位RO,带进位位的循环移位RC。右移R,左移L。
(2)指令格式:操作码 OPRD,M M =1时,只移1位; M>1时,可将指令格式中的CNT改为CL寄存器,并在移位指令前将移位次数预先送入CL寄存器中。
(3)功能:将OPRD的内容移位M次。算术移位适用于带符号数的×2,÷2。逻辑移位适用于无符号数的×2,÷2。
(4)操作数范围: reg、mem。
(5)对标志位的影响:
① 算术/逻辑移位指令影响CF、SF、ZF、PF标志,在移1位时,影响OF标志。不影响AF标志。
② 循环移位指令只影响CF、OF标志,不影响其他标志位。
CF MSB LSB 0 SHL/SAL算术/逻辑左移 CF 0 CF MSB LSB SHR逻辑右移 MSB LSB SAR算术右移
CF MSB LSB ROL循环左移 CF MSB LSB ROR循环右移 CF MSB LSB RCL通过进位的循环左移 CF MSB LSB RCR通过进位的循环右移
四、串操作类指令
(1)5种指令:串传送MOVS,串比较CMPS,串搜索SCAS,存串STOS,取串LODS。(2)指令格式:操作码
DST,SRC MOVSB(字节)/MOVSW(字)
① 串传送MOVS DST,SRC;[(ES:DST)]←[(DS:SRC)]
MOVSB;
[(ES:DI)]←[(DS:SI)],SI=SI±1,DI=DI±1
MOVSW;
[(ES:DI)]←[(DS:SI)],[(ES:DI+1)]←[(DS:SI+1)],SI=SI±2,DI=DI±2
② 串比较CMPS DST,SRC;
[(ES:DI)]-[(DS:SI)];SI=SI±1,DI=DI±1
③ 串搜索SCAS DST;
AL← [(ES:DI)]];DI=DI±1 ④ 存串STOS DST;
[(ES:DI)] ← AL;DI=DI±1 ⑤ 取串LODS SRC;
AL ←[(DS:SI)];SI=SI±1 字操作与字节操作类似,AL——AX。(3)功能
根据方向标志DF及所传送数据的类型(字节/字)对SI及DI进行修改,在指令重复前缀REP的控制下实现。
① 串传送:把数据段中由SI间接寻址的一个字节/字传送到附加段中由DI间接寻址的一个字节/字单元中。
② 串比较:把数据段中由SI间接寻址的一个字节/字与附加段中由DI间接寻址的一个字节/字进行比较操作,使比较的结果影响标志位。可在两个数据串中寻找第一个不相等的字节/字,或者第一个相等的字节/字。
③ 串搜索:用指令指定的关键字节/字(分别存放在AL/AX中),与附加段中由DI间接寻址的字节串中的一个字节进行比较操作,使比较的结果影响标志位。可在指定的数据串中搜索第一个与关键字节匹配(或者不匹配)的字节。
④ 存串:把指令中指定的字节(或字)串(存放在AL/AX中)传送到附加段中由DI间接寻址的字节内存单元中。可连续将AL(或AX)的内容存入到附加段中的一段内存区域中去,该指令不影标志位。
⑤ 取串:从串中取指令实现从指定的字节(或字)串中读出信息的操作。(4)规定
① 串操作类指令是唯一的一组源和目的操作数均在存储单元的指令。源串在数据段,目的串在附加段。各指令所使用的默认寄存器是:源串地址DS:SI;目的串地址ES:DI;字串长度CX;存取或搜索的默认值
AL
② 串操作时,地址的修改由方向标志确定。
CLD;DF=0,SI/DI地址作自动增量(自动+1)修改; STD;DF=1,SI/DI地址作自动减量(自动-1)修改。
③ 任何一个串操作指令均可在指令前面加上一个重复操作作为前缀,于是就重复执行,直至CX、ZF满足要求为止。
④ 重复指令前缀
REP;①若(CX)=0,则退出; ② CX=CX-1;③执行后续指令;④重复①----③
REPE/REPZ;①若(CX)=0或ZF=0,则退出;②CX=CX-1;③执行后续指令;④重复①----③ REPNE/REPNZ;①若(CX)=0或ZF=1,则退出;②CX=CX-1;③执行后续指令;④重复①----③
五、控制转移类指令——改变指令执行顺序的指令
(1)6种指令:无条件转移指令、子程序调用和返回指令、条件转移指令、循环控制指令、中断指令、处理器控制命令。
(2)概念
①直接转移:转移的目的地址(标号)直接出现在指令码中。
②间接转移:转移的目的地址间接存储于某一个寄存器或某一个内存变量中。
③段内转移/调用:转移的目的地址和本条指令在同一代码段中,转移时只改变IP,不改变CS。程序转向的有效地址EA等于当前IP的内容加上8/16位位移量。可分为:
段内近转移NEAR ——16位位移量,适用于无条件转移指令和条件转移指令,转移范围为-32768----+32768。
段内短转移SHORT ——8位位移量,适用于条件转移指令,转移范围为-128----+127。
④段间转移/调用(远转移FAR):转移的目的地址和本条指令不在同一代码段中,转移时同时改变CS和IP内容,即程序转移到另一个代码段。
1.无条件转移指令
JMP [转移方式]OPRD;转移到OPRD所指向的存储器单元处执行程序(1)段内直接短转移指令JMP SHORT OPRD;(IP)←(IP)+ OPRD
(2)段内直接近转移指令JMP
NEAR PTR
OPRD;(IP)←(IP)+ OPRD(3)段内间接转移指令JMP WORD PTR
OPRD;(IP)← [EA](4)段间直接(远)转移指令JMP FAR PTR OPRD;(IP)←OPRD的段内偏移地址,(CS)←OPRD所在的段地址。OPRD为直接寻址方式。
(5)段间间接转移指令JMP DWORD PTR OPRD;(IP)← [EA],(CS)← [EA+2] 2.条件转移指令
指令助记符
目的地址
(1)标志条件转移指令助记符:J/JN+标志(C, P, S, S, O);
(2)比较条件转移指令助记符:J/JN+比较符(A高于, B低于, E等于, G大于, L小于)(3)无符号数比较:测试标志位为CF、ZF,分高于A、等于E、低于B等3种情况:ZF=1,等于;CF=0,大于。
(4)符号数比较:测试标志位为ZF、OF和SF,分大于G、等于E、小于L等3种情况:ZF=1,等于;SF⊕OF =0,大于。
3.子程序调用和返回指令(1)子程序(过程)调用指令
CALL 子程序名 DST ①段内调用: CALL NEAR PTR OPRD ;(SP)←(SP)-2,((SP)-2)((SP)-1)←(IP),(IP)←子程序DST的地址(即:IP+16位位移)
②段间调用:CALL FAR PTR OPRD ;(SP)←(SP)-2,((SP)-2)((SP)-1)=(CS),(SP)←(SP)-2,((SP)-2)((SP)-1)=(IP),(IP)=[EA],(CS)=[EA+2](2)子程序返回指令
RET;段内返回(IP)←((SP)+1,SP),(SP)←
(SP)+ 2
;段间返回(IP)←((SP)+1,SP),(SP)←
(SP)+ 2
(CS)←((SP)+1,SP),(SP)←
(SP)+ 2 4.循环控制指令
对CX或标志位ZF进行测试,确定是否循环。(1)LOOP OPRD(短标号);(CX)←(CX)-1,若CX≠ 0,则循环,否则顺序执行。
(2)LOOPNZ/LOOPNE OPRD;(CX)←(CX)-1,若CX≠0和ZF=0,则循环,否则顺序执行。(3)LOOPZ/LOOPE OPRD;(CX)←(CX)-1,若CX≠0 和ZF=1,则循环,否则顺序执行。(4)JCXZ OPRD;(CX)←(CX)-1,若CX=0,则循环,否则顺序执行。5.中断指令(1)INT n;(SP)←(SP)-2,((SP)-2)((SP)-1)←(FR),FR入栈
;(SP)←(SP)-2,((SP)-2)((SP)-1)←(CS),CS入栈 ;(SP)←(SP)-2,((SP)-2)((SP)-1)←(IP),IP入栈 ;(IP)←(n×4),(CS)←(n×4+2),n——中断类型号
(2)INTO;同INT 4,算术运算溢出中断指令
(3)中断返回指令IRET;(IP)←((SP)+1 ,(SP)),(SP)←(SP)+2,IP出栈
;(CS)←((SP)+1 ,(SP)),(SP)←(SP)+2,CS出栈
;(FR)←((SP)+1 ,(SP)),(SP)←(SP)+2,FR出栈
6.处理器控制命令(1)标志操作指令
清标志位为CL,置标志位为ST。只对CF、DF和IF三个标志操作 CLC——清进位标志,CLD——清方向标志,CLI——关中断标志; STC——置进位标志,STD——置方向标志,STI——开中断标志; CMC——进位标志取反。(2)处理器外部同步命令
对标志位的影响:不影响标志位。
①暂停指令:HLT;处理器处于什么也不做的暂停状态,可由中断请求、复位等唤醒继续执行。②等待指令:WAIT;处理器处于等待状态,CPU每隔4个时钟周期测试一次TEST引脚线(23脚),直至TEST引脚线为有效低电平时,CPU才脱离等待状态。③交权指令:ESC;CPU将控制权交给其他协处理器,使协处理器从系统指令流中取得指令。
④总线封锁指令:LOCK;可放在任一条指令前作为前缀,使CPU在执行下一条指令期间发出总线封锁信号(LOCK),将总线封锁,其它的主设备不能控制总线。
⑤空操作指令:NOP;不完成任何操作,只耗费3个时钟周期,用于程序的延时和调试。
第二篇:微机原理与接口技术小结
微机原理与接口技术基础
1.为什么在流水CPU中,将一条指令从取指到执行结束的任务分割为一系列子任务,并使各子任务在流水线的各个过程段并发地执行,从而使流水CPU具有更强大的数据吞吐能力?
这里可以使用时空图法证明结论的正确性。
假设指令周期包含四个子过程:取指令(IF)、指令译码(ID)、取操作数(EX)、进行运算(WB),每个子过程称为过程段(Si),这样,一个流水线由一系列串连的过程段组成。在统一时钟信号控制下,数据从一个过程段流向相邻的过程段。
2.译码器是如何译码的?寻址空间是如何确定的?译码器与寻址空间是怎么联系的?
译码器实际上是由许多与门、或门、非门和它们的组合构成的。它有若干个输入端和若干个输出端(也可能只有一个输出端)。对某一个输出端来说,它的电平高低必然与输入的某一种状态相对应。
例如,具有4个输入端的与非门就是一个简单的译码器,只有四个输入端为1111时,它的输出端才为0。如果将地址总线的A9、A8、A7、A6与它的四个输入连接起来,并把它的输出连到存储器芯片或某个需要寻址的外设接口的片选端(假定低电平有效),那么,只有当A9、A8、A7、A6为1111时,存储器芯片或外设才会被选中。
译码器的寻址空间取决于地址总线的哪几根线接到译码器的输入端,例如上例,地址总线的A9、A8、A7、A6与译码器的输入连接,那么其寻址空间应该是11 1100 0000~11 1111 1111,即3C0H~3F0H。
注意,没有参与译码的低位地址线必然要参与存储器芯片或外设接口的内部译码。也就是说,内部译码地址范围是0--2n11 0000。
可以说,译码器的译码输出决定了寻址空间的起始地址,内部译码决定了寻址空间的大小。由于上一条指令的四个子过程全部执行完毕后才能开始下一条指令,因此每隔4个单位时间才有一个输出结果,即一条指令执行结束。表示非流水CPU的时空图。由于上一条指令与下一条指令的四个过程在时间上可以重叠执行,因此,当流水线满载时,每一个单位时间就可以输出一个结果,即执行一条指令。
比较后发现:流水CPU在八个单位时间中执行了5条指令,而非流水CPU仅执行了2条指令,因此流水CPU具有更强大的数据吞吐能力。
3.书本上讲的是若是计算结果中1的个数为偶数时,则PF=1;但我又在另外的辅导书上看到的说如果计算结果的低8位中1的个数为偶数,PF=1.请问老师是否是低八位?
答:对,PF只与结果的低8位有关。
4.80386 CPU包含哪些寄存器?各有什么主要用途?
80386共有7类34个寄存器。它们分别是通用寄存器、指令指针和标志寄存器、段寄存器、系统地址寄存器、控制寄存器、调试和测试寄存器。
(1)通用寄存器(8个)
EAX,EBX,ECX,EDX,ESI,EDI,EBP和ESP。每个32位寄存器的低16位可单独使用,同时AX、BX、CX、DX寄存器的高、低8位也可分别当作8位寄存器使用。它们与8088/8086中相应的16位通用寄存器作用相同。
(2)指令指针和标志寄存器。
指令指针EIP是一个32位寄存器,存放下一条要执行的指令的偏移地址。
标志寄存器EFLAGS也是一个32位寄存器,存放指令的执行状态和一些控制位。
(3)段寄存器(6个)
CS,DS,SS,ES,FS和GS。在实方式下,它们存放内存段的段地址。在保护方式下,它们被称为段选择符。其中存放的是某一个段的选择符。当选择符装入段寄存器时,80386中的硬件章自动用段寄存器中的值作为索引从段描述符表中取出一个8个字节的描述符,装入到与该段寄存器相应的64位描述符寄存器中。
(4)控制寄存器(4个)
CR0、CRl、CR2和CR3。它们的作用是保存全局性的机器状态。
(5)系统地址寄存器(4个)
GDTR、IDTR、LDTR和TR。它们用来存储操作系统需要的保护信息和地址转换表信息、定义目前正在执行任务的环境、地址空间和中断向量空间。
(6)调试寄存器(8个)
DR0~DR7。它们为调试提供硬件支持。
(7)测试寄存器(8个)
TR0~TR7,其中TR0~TR5由Intel公司保留,用户只能访问TR6、TR7。它们用于控制对TLB中的RAM和CAM相连存储器的测试。TR6是测试控制寄存器,TR7是测试状态寄存器,保存测试结果的状态
5.什么是外部中断源?什么是中断向量码?什么是读选通信号?
答:外部中断源就是在CPU外部能够产生中断请求的设备/器件;通俗地说,中断向量码就是中断的编号,其值为0-FFH;选通信号就是打开逻辑门的控制信号,或用来锁存信息(类似D触发器的CP或CLK)的控制信号。读选通信号就是用来打开总线缓冲器,以便把的数据送到总线上的控制信号。
6.CPU处于单步执行指令的工作方式(课本49页),请问什么是单步执行指令工作方式? 答:在这种方式下,CPU每执行一条指令,就产生一次特殊的中断,以便可以停下来检查执行的结果。主要用于各类程序的调试。
7.片选信号(CS)到底是起使数据有效或无效的作用还是起选择芯片的作用啊?若是前者,干吗叫片选?
片选信号就是选择芯片的信号。前者不叫片选信号,应该叫允许信号。
8.书本上讲的是若是计算结果中1的个数为偶数时,则PF=1;但我又在另外的辅导书上看到的说如果计算结果的低8位中1的个数为偶数,PF=1.请问老师是否是低八位?
微型计算机基础
1.为什么在流水CPU中,将一条指令从取指到执行结束的任务分割为一系列子任务,并使各子任务在流水线的各个过程段并发地执行,从而使流水CPU具有更强大的数据吞吐能力?
这里可以使用时空图法证明结论的正确性。
假设指令周期包含四个子过程:取指令(IF)、指令译码(ID)、取操作数(EX)、进行运算(WB),每个子过程称为过程段(Si),这样,一个流水线由一系列串连的过程段组成。在统一时钟信号控制下,数据从一个过程段流向相邻的过程段。
2.译码器是如何译码的?寻址空间是如何确定的?译码器与寻址空间是怎么联系的?
译码器实际上是由许多与门、或门、非门和它们的组合构成的。它有若干个输入端和若干个输出端(也可能只有一个输出端)。对某一个输出端来说,它的电平高低必然与输入的某一种状态相对应。
例如,具有4个输入端的与非门就是一个简单的译码器,只有四个输入端为1111时,它的输出端才为0。如果将地址总线的A9、A8、A7、A6与它的四个输入连接起来,并把它的输出连到存储器芯片或某个需要寻址的外设接口的片选端(假定低电平有效),那么,只有当A9、A8、A7、A6为1111时,存储器芯片或外设才会被选中。
译码器的寻址空间取决于地址总线的哪几根线接到译码器的输入端,例如上例,地址总线的A9、A8、A7、A6与译码器的输入连接,那么其寻址空间应该是11 1100 0000~11 1111 1111,即3C0H~3F0H。
注意,没有参与译码的低位地址线必然要参与存储器芯片或外设接口的内部译码。也就是说,内部译码地址范围是0--2n11 0000。
可以说,译码器的译码输出决定了寻址空间的起始地址,内部译码决定了寻址空间的大小。由于上一条指令的四个子过程全部执行完毕后才能开始下一条指令,因此每隔4个单位时间才有一个输出结果,即一条指令执行结束。表示非流水CPU的时空图。由于上一条指令与下一条指令的四个过程在时间上可以重叠执行,因此,当流水线满载时,每一个单位时间就可以输出一个结果,即执行一条指令。
比较后发现:流水CPU在八个单位时间中执行了5条指令,而非流水CPU仅执行了2条指令,因此流水CPU具有更强大的数据吞吐能力。
3.书本上讲的是若是计算结果中1的个数为偶数时,则PF=1;但我又在另外的辅导书上看到的说如果计算结果的低8位中1的个数为偶数,PF=1.请问老师是否是低八位?
答:对,PF只与结果的低8位有关。
4.80386 CPU包含哪些寄存器?各有什么主要用途?
80386共有7类34个寄存器。它们分别是通用寄存器、指令指针和标志寄存器、段寄存器、系统地址寄存器、控制寄存器、调试和测试寄存器。
(1)通用寄存器(8个)
EAX,EBX,ECX,EDX,ESI,EDI,EBP和ESP。每个32位寄存器的低16位可单独使用,同时AX、BX、CX、DX寄存器的高、低8位也可分别当作8位寄存器使用。它们与8088/8086中相应的16位通用寄存器作用相同。
(2)指令指针和标志寄存器。
指令指针EIP是一个32位寄存器,存放下一条要执行的指令的偏移地址。
标志寄存器EFLAGS也是一个32位寄存器,存放指令的执行状态和一些控制位。
(3)段寄存器(6个)
CS,DS,SS,ES,FS和GS。在实方式下,它们存放内存段的段地址。在保护方式下,它们被称为段选择符。其中存放的是某一个段的选择符。当选择符装入段寄存器时,80386中的硬件章自动用段寄存器中的值作为索引从段描述符表中取出一个8个字节的描述符,装入到与该段寄存器相应的64位描述符寄存器中。
(4)控制寄存器(4个)
CR0、CRl、CR2和CR3。它们的作用是保存全局性的机器状态。
(5)系统地址寄存器(4个)
GDTR、IDTR、LDTR和TR。它们用来存储操作系统需要的保护信息和地址转换表信息、定义目前正在执行任务的环境、地址空间和中断向量空间。
(6)调试寄存器(8个)
DR0~DR7。它们为调试提供硬件支持。
(7)测试寄存器(8个)
TR0~TR7,其中TR0~TR5由Intel公司保留,用户只能访问TR6、TR7。它们用于控制对TLB中的RAM和CAM相连存储器的测试。TR6是测试控制寄存器,TR7是测试状态寄存器,保存测试结果的状态
5.什么是外部中断源?什么是中断向量码?什么是读选通信号?
答:外部中断源就是在CPU外部能够产生中断请求的设备/器件;通俗地说,中断向量码就是中断的编号,其值为0-FFH;选通信号就是打开逻辑门的控制信号,或用来锁存信息(类似D触发器的CP或CLK)的控制信号。读选通信号就是用来打开总线缓冲器,以便把的数据送到总线上的控制信号。
6.CPU处于单步执行指令的工作方式(课本49页),请问什么是单步执行指令工作方式? 答:在这种方式下,CPU每执行一条指令,就产生一次特殊的中断,以便可以停下来检查执行的结果。主要用于各类程序的调试。
7.片选信号(CS)到底是起使数据有效或无效的作用还是起选择芯片的作用啊?若是前者,干吗叫片选?
片选信号就是选择芯片的信号。前者不叫片选信号,应该叫允许信号。
8.书本上讲的是若是计算结果中1的个数为偶数时,则PF=1;但我又在另外的辅导书上看到的说如果计算结果的低8位中1的个数为偶数,PF=1.请问老师是否是低八位?对,PF只与结果的低8位有关
第三篇:微机原理课程设计
电子信息科学与技术《微机原理》课程设计
一、本次课程设计的目的和意义
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二、设计时间、基本要求
(一)、设计时间:二周(二)、基本要求:
a.每题2人;b.设计出完整的接口电路;c.编写出全部程序;d.在实验系统上调试通过。
三、设计选题与要求
选题一:多路模拟数据采集系统设计
要求:设计一个2路以上的模拟数据采集系统。
1、用按键选择那一路;
2、用LED显示转换结果(十进制数);
3、将每一路采集的100个数据存放到各自的存储区中。
选题二:温度测控系统的设计
要求:利用ADC0809设计一个温度测控系统,在LED数码显示器上显示温度值,并对温度进行测试和控制,当检测温度到达温度上限60℃时开风扇(即开启电动机,或以一个灯的亮灭表示),低于下限30℃时关闭风扇,LED上的显示内容为:XX ℃(采用十进制显示)。
选题三:函数发生器的设计(一)要求:利用DAC0832设计一个函数发生器,并利用按键选择输出波形,能分别产生三角波、阶梯波(每阶梯1V)、正向锯齿波、负向锯齿波和方波。并利用按键(自行定义)进行输出波形选择,同时将当前输出波形代号显示在LED上(左边位):0为方波、1为正向锯齿波、2为负向锯齿波、3 为三角波、4为阶梯波。
选题四:函数发生器的设计(二)要求:设计一个三角波发生器,可利用键盘改变其输出波形的幅值。例如,可利用1-5这5个数字键改变其输出波形的幅值,当按下1-5数字键时使D/A输出幅值从1V增加到5V。
选题五:电子音乐播放器
要求:设计要求:利用8253作为音阶频率发生器,应先对“2008年奥运会主题歌”进行编码后存入音符表,并建立好音阶表(只建立一个8度即可),音符长度不能少于60个,连续播放3遍后停止。
选题六:键盘电子乐器
要求:利用并行接口8155作为键盘接口,设计一个具有2个八度音阶的键盘乐器,音阶键不少于16个,采用扫描方式管理键盘,音域范围自行定义。
选题七:电子时钟设计
要求:利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该
键时时钟从当前设定值(可在显示缓冲区中予置)开始走时。
选题八:压力测控系统的设计(一)要求:对压力传感器的信号进行检测并在LED数码显示器上显示压力值,当压力低于30pa时,黄灯闪烁,闪烁周期为1秒。当压力高于150pa时,红灯闪烁。LED的显示内容为P=XXX。X为测试值。
选题九:可变输出频率方波发生器设计
要求:设计一个输出方波频率可利用按键改变的方波信号发生器(可以使用D/A也可以直接使用8253产生方波),利用键盘选择方波发生器的输出频率并驱动喇叭。输出频率=键号*100HZ
选题十:直流电机速度控制器设计
要求:利用D/A转换器和按键设计一个直流电动机转速控制器。按键定义如下:0 停止,1-1/10转速,2-2/10转速„„ 9 最高速(D/A输出满量程),键号每加1,D/A输出增加0.5V
选题十一:可任意启动/停止的电子秒表设计
要求:6位LED数码显示,计时单位为1/100秒。利用功能键进行启/停控制。其功能为:上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零后重新开始计时„„
选题十二:温度测试系统设计
要求:利用温度传感器和ADC0809设计一个温度测试系统,将测试结果(十进制)在LED上显示出来,并定义一个保持按键,当按下该键时,将当前测试值保持不变(按键不动作时为正常测量显示)。温度显示格式为:XXX ℃。(可以每隔0.3秒测量一次)
选题十三:压力测试系统设计(二)要求:利用压力传感器和ADC0809设计一个压力测试系统,并将测试结果(十进制)在LED上显示出来,并定义一个测试最大值按键,当按下该键时,可进行最大值测量(按键不动作时为正常测量显示),即:只有当当前测量值大于上次测量值时才刷新显示,显示格式为:P=XXX。可以每隔0.3秒测量一次。
选题十四:简易计算器系统设计
要求:设计一个可以进行2位数四则运算的计算器。
1、用按键输入数和运算符号;
2、用LED显示运算过程和结果(十进制数);
3、可以表示出当前的运算类型;
4、具有清零和复位功能;
5、具有连续运算功能。
选题十五:交通灯控制系统
要求:按照时间控制原则,利用并行接口和定时器,设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。可利用8255、8253等接口电路。
选题十六:计件系统设计
要求:利用8253计数,对外界脉冲技术,并将计数值在数码管上显示,可通过键盘控制重新计数。
四、设计任务及要求
1、接口设计:根据所选题目和所用的接口电路芯片设计出完整的接口电路,并在实验系统上完成电路的连接和调试通过。
2、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。
3、课程设计报告:(1)设计题目;
(2)系统的主要功能、作用以及主要技术性能指标;
(3)总体设计方案、工作和组成原理(框图)或设计说明、采用的技术路线等;
(4)系统设计:接口电路设计,程序设计(程序框图和程序清单及注释)其他有关的理论分析和计算;
(5)设计总结:对整个设计工作过程进行归纳和综合,对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识、收获和提高。
第四篇:微机原理课程设计
汇编程序设计题
题目一 密码设置模拟
该程序可以进行密码的设置(第一次)和修改(已设置密码)。要求输入的密码不显示。题目二 计算器
编辑程序可以实现键盘输入数据与运算符,进行“加减乘除”运算。(提示:先输入数据与运算符,保存,再按照运算符选择对应的子程序;输入的数据是用字符表示的,需要转换;要有良好的界面(提示信息))
题目三工作周期判断程序
输入年、月、日,能够判断当日的星期数,并进行输出。(以校历为依照,可设某日为起点,根据相差的天数与7的关系进行判断)。
题目四 PC扬声器发声
利用8253驱动PC机内扬声器发声,PC结构参考相关文献资料。题目五 乐曲播放
利用PC机内8253实现乐曲播放。题目六 按键选择乐曲播放
利用按键选择播放不同乐曲。(★)(自制交互界面实现按键选择★★)题目七 实现闪烁文字效果 编程提示:
提示信息于屏幕中央显示出来,用光标定位子程序将光标定位于80*25显示方式的第8行第10列,然后输出一条提示信息,接着调用屏幕上卷子程序上卷一行,接着再定位光标,然后显示下一条提示信息,直到所有信息显示完毕,对于闪烁的信息,同样是定位光标,然后用BIOS功能调用13H来显示闪烁信息,当BL的高位为1时,字符闪烁。mov ah,00h mov al,03h ;设置显示方式为80*25,16色文本 int 10h 题目八
数字秒表
设计可以显示1~60秒的无存储功能的秒表,最小单位为毫秒。题目九
倒计时牌
设计日期倒计时牌界面,可输入设定日期,显示当前日期的统计天数,如奥运计时牌。题目十
数字时钟
编程实现时钟功能,按秒刷新,要求定位在屏幕右上角。
硬件设计题
总体要求:根据题意自行设计电路,编写相关汇编程序。题目一
交通灯控制系统
1.利用8253定时,8259中断及8255设计电路,实现十字路口交通灯模拟控制。2.实现能自动控制和手动应急控制。
3.实现能随时可以调整自动模式的绿灯和红灯时间。题目二 实现特定功能的键盘及LED显示
了解键盘及LED显示接口原理,设计实验电路图完成以下功能: 1.按1键显示年; 2.按2键显示月日; 3.按3键显示GOOD ;
4.按4键数码管由左到右字符“0”循环显示。5.自行设计特效显示功能。题目三
LED七段数码管数字钟
设计并完成LED七段数码管数字钟电路,数字钟显示格式为:HH:MM:SS。要求:具有通过键盘能够调整时、分、秒的功能。题目四
闪烁灯
利用8253和LED灯相结合实现闪烁灯效果。题目五
电子钟
利用8253定时器设计一个电子钟,并定义一个启动键。当按下该键时电子时钟从当前设定值开始走时。
附录:实验箱功能模块电路图
第五篇:2008微机原理课程设计
《微机原理及接口》课程设计任务书
适用专业:05电子信息工程 通信工程
一、本次课程设计的目的和意义
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二、设计时间和设计题目
(一)、设计时间:一周(二)、设计题目:可从以下题目中任选一题,原则上每班每题不超过5人。每题的设计要求:a、设计出完整的接口电路。B、编写出全部程序。
1、交通灯控制系统:按照时间控制原则,利用并行接口和定时器,采用时间中断方式设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。可利用8255、8253、8259等接口电路。
2、温度测控系统的设计:利用ADC0809采用中断式设计一个温度测控系统,在LED数码显示器上显示温度值,并对温度进行测试和控制,当检测温度到达温度上限60℃时开风扇(即开启电动机),低于下限30℃时关闭风扇,LED上的显示内容为:XX ℃(采用十进制显示)。
3、函数发生器1的设计:利用D/A设计一个函数发生器,并利用按键选择输出波形,能分别产生三角波、阶梯波(每阶梯1V)、正向锯齿波、负向锯齿波和方波。并利用按键(自行定义)进行输出波形选择,同时将当前输出波形代号显示在LED上(左边位):0为方波、1为正向锯齿波、2为负向锯齿波、3 为三角波、4为阶梯波。
4、函数发生器2的设计:设计一个三角波发生器,可利用键盘改变其输出波形的幅值。例如,可利用1---5这5个数字键改变其输出波形的幅值,当按下1---5数字键时使D/A输出幅值从1V增加到5V。
5、电子音乐播放器:设计要求:利用8253作为音阶频率发生器,应先对一段音乐进行编码后存入音符表,并建立好音阶表(只建立一个8度即可,音阶表见附录),音符长度不能少于60个,连续播放3遍后停止。
6、键盘电子乐器:利用并行接口8255作为键盘接口,设计一个具有2个八度音阶的键盘乐器,音阶键不少于16个,采用扫描方式管理键盘,音域范围自行定义。
7、电子时钟设计:利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键时电子时钟从当前设定值开始走时。
8、压力测控系统的设计:对压力传感器的信号进行检测并在LED数码显示器上显示压力值,当压力低于30pa时,黄灯闪烁,闪烁周期为1秒。当压力高于150pa时,红灯闪烁。LED的显示内容为P=XXX为测试值。
9、可变输出频率方波发生器设计:设计一个输出方波频率可利用按键改变的方波信号发生器(可以使用D/A也可以直接使用8253产生方波),利用键盘选择方波发生器的输出频率并驱动喇叭。输出频率=键号*100HZ。
10、直流电机速度控制器设计:利用按键控制直流电动机的转速。按键定义如下:0 停止,1 1/10转速,2 2/10转速…… 9 最高速(D/A输出满量程),键号每加1,D/A输出增加0.5V。
11、可任意启动/停止的电子秒表设计:6位LED数码显示,计时单位为1/100秒。利用功能键进行启/停控制。其功能为:上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零后重新开始计时……。12简易计算器系统设计:设计一个可以进行2位数四则运算的计算器,要求:1,用按键输入数和运算符号;2,用LED显示运算过程和结果(十进制数);3,可以表示出当前的运算类型;4,具有清零和复位功能;5,具有连续运算功能。
13点阵LED显示系统设计:设计一个点阵式LED显示系统。要求:1,每次显示一个文字和图形;2,每隔一固定时间更变需要显示的文字或图形;3,可以现实循环显示几个文字或图形;4,可以根据按键来控制显示的文字的替换时间的长短;5,具有复位功能。
三、设计任务及要求:
1、接口电路设计:根据所选题目和所用的接口电路芯片设计出完整的接口电路,并进行电路连接和调试。
2、程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。
3、设计文件:a、设计图纸(接口电路原理图);b、使用或操作说明;c、设计报告:字数约3000~4000字,内容包括:(1)设计题目;(2)系统的主要功能作用及主要技术性能和指标;(3)总体设计方案及组成原理(框图)或设计说明及技术路线;(4)系统设计:接口电路设计,程序设计(程序框图和程序清单及注释)其他有关的理论分析和计算;(5)设计总结:对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识、收获和提高。
4、设计要求:
不允许抄袭和复印,否则取消设计成绩。
四、设计时间和成绩分配:
(一)设计时间:一周(二)设计成绩分配:
1、接口电路设计占30%(包括电路图设计、电路连接和调试通过)。
2、设计文件占30%
3、答辩占40%