微机原理心得体会

2022-07-18

在四季轮回中,在忙碌的生活中,我们自身也在成长,面对身边的各种事物,必然会有一些心得体会。将这些心得体会记录下来,是我们思想成长的证明,也是我们提升自我的重要方式。怎样写出适合自身的心得体会那,以下是小编收集整理的《微机原理心得体会》的相关内容,希望能给你带来帮助!

第一篇:微机原理心得体会

微机原理与接口技术及其课程设计心得体会

本学期的微机原理和接口技术及其课程设计都已经结束。在这个过程中,我们有所付出,也有所回报,让我感受颇多。

对于《微机原理与接口技术》这门课程而言,初学时,感觉摸不着头绪。面对着众多的术语、概念及原理性的问题不知道该如何下手。在了解课程的特点后,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。“麻雀虽小,五脏俱全”,可以通过学习一个模型机的组成和指令执行的过程,了解和熟悉计算机的结构、特点和工作过程。《微机原理与接口技术》课程有许多新名词、新专业术语。透彻理解这些名词、术语的意思,为今后深入学习打下基础。一个新的名词从首次接触到理解和应用,需要一个反复的过程。而在众多概念中,真正关键的并不是很多。比如“中断”概念,既是重点又是难点,如果不懂中断技术,就不能算是搞懂了微机原理。在学习中凡是遇到这种情况,绝对不轻易放过,要力求真正弄懂,搞懂一个重点,将使一大串概念迎刃而解。学习过程中,我发现许多概念很相近,为了更好地掌握,将一些容易混淆的概念集中在一起进行分析,比较它们之间的异同点。比如:微机原理中,引入了计算机由五大部分组成这一概念;从中央处理器引出微处理器的定义;在引出微型计算机定义时,强调输入/输出接口的重要性;在引出微型计算机系统的定义时,强调计算机软件与计算机硬件的相辅相成的关系。微处理器是微型计算机的重要组成部分,它与微型计算机、微型计算机系统是完全不同的概念。

微处理器、微型计算机和微型计算机系统在微机中,最基础的语言是汇编语言。汇编语言是一个最基础最古老的计算机语言。语言总是越基础越重要,在重大的编程项目中应用最广泛。就我的个人理解,汇编是对寄存的地址以及数据单元进行最直接的修改。而在某些时候,这种方法是最有效,最可靠的。比如,在当今的战争中,首先就是运用这方面的知识来修改地方的系统程序。让地方的卫星偏离轨道,从而不能发现目标。其威力可见一斑。 然而,事物总有两面性,有优点自然缺点也不少。其中,最重要的一点就是,汇编语言很复杂,对某个数据进行修改时,本来很简单的一个操作会用比较烦琐的语言来解决,而这些语言本身在执行和操作的过程中,占有大量的时间和成本。在一些讲求效率的场合,并不可取。汇编语言对学习其他计算机起到一个比较、对照、参考的促进作用。学习事物总是从最简单基础的开始。那么学习高级语言也当然应当从汇编开始。学习汇编语言实际上是培养了学习计算机语言的能力和素养。个人认为,学习汇编语言对学习其他语言很有促进作用。汇编语言在本学期微机学习中有核心地位。本学期微机原理课程内容繁多,还学习了可

编程的计数/定时的8253,可编程的外围接口芯片8255A等。学的都是芯片逻辑器件,而在名字前都标有“可编程”,其核心作用不可低估。我认为,在学习中要考虑到“学以致用”,因此,在接下来我们又安排了微机原理与接口技术的课程设计。

经过本次微机课题的设计与研究,我们深入的学习了除课本以外的很多微机附件的内容,掌握了很多实验室操作技能。我们在实际设计中遇到很多问题,但结合所学知识以及参考资料的帮助,不断地尝试,设计了一种能够解决实际问题的系统。同时也加深了我们对于现实生活中,实际的嵌入式操作系统的原理的理解。

在实际设计过程中,我们遇到了诸多设计的问题。例仿真系统中某些芯片没有,这一问题主要是因为我们所设计的功能诸多,刚开始对于这一设计在硬件方面设计不是非常的合理,后来通过使用所用仿真软件的绘画功能,新增加了一个芯片便解决了所有的按键和现实问题。

在程序设计中,我们更加深入了解了8086的使用与本质。为了能设计成功,我们查阅了各种关于其硬件连接和软件设计的资料,同时也发现了理论资料与实践上的区别,通过多次尝试,成功完成了硬件和软件的设计。在这次课题设计过程中,我们合理的分工,适宜的规划进度的进展,不仅仅按时完成了预先设计的内容,而且学到了很多书本上没有的知识。

在这一过程中,我们充分发挥我们的主观能动性,想象创造性,攻克了很多之前都没有想过的难关,真的受益匪浅。这次设计不仅仅耗时耗力,而且还要整天对着电脑进行仿真且不停的调试、修改,这次课程设计对我们理论和实验都有很大的提升,我想这些对于我们今后的学习生活都有很重要的意义,这将是我们在程序设计以及大学学习过程中的宝贵经验和财富。

第二篇:微机原理指令小结

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)对标志位的影响:

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)可完成字节与字节乘法、字与字乘法操作。

3 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

5 ③ 串搜索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 。

6 ④段间转移/调用(远转移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个时钟周期,用于程序的延时和调试。

第三篇:微机原理课程设计

接口技术课程设计

一、 设计内容

设计一个投票统计器,完成投票、计票统计和票数显示等功能。

二、设计原理及方案

在8086最小工作模式下,连接一块8255A芯片。在 8255A的C端口连接8个开关,开关按下表示支持,灯亮,开关不按便是反对,灯不亮,从8255A的C端口输入投票结果,经8086运算统计出结果;在 8255A的A端口连接一块7段LED数码管,将输出结果通过数码管显示出来。 电路图:

1

接口技术课程设计

程序代码: A_PROT B_PROT C_PROT CT_PROT DATA DATA CODE

MOV DX,C_PROT IN AL,DX

2 EQU EQU EQU EQU 200H 202H 204H 206H

;可通过计算获得,连接的是IO1 SEGMENT ENDS SEGMENT MOV AX,DATA MOV DX,AX MOV AL,10001001B MOV DX,CT_PROT OUT DX,AL

;控制字写入

;A端口输出,C端口输入 TAB1 DB 7FH,07H,7DH,6DH,66H,4FH,5BH,06H,3FH ASSUME CS:CODE,DS:DATA

START: MOV DX,C_PROT MOV AL,0 OUT DX,AL

;C端口清零

AGAIN: TJ: XOR AH,AH

MOV CX,8 LOOP1: SAL AL,1

ADC AH,0

LOOP LOOP1

MOV AL,AH

PUSH BX

LEA BX,TAB1

XLAT

MOV DX,A_PROT

OUT DX,AL

PUSH CX

MOV CX,2801 WAIT1: LOOP WAIT1

POP CX

JMP AGAIN

MOV AH,4CH INT 21H CODE ENDS END START

接口技术课程设计

;统计1个数

;进位加CF,以统计出C端口中1的个数

;延时10ms

接口技术课程设计

三、运行结果

程序结果图:

4

接口技术课程设计

四、设计总结与体会

为期一周的微机原理课程实践终于结束了,回过头来,感慨万千。过了一个多月,书本上的好些知识已然忘却,刚开始拿到课题时,看到一大堆传说中的神器,霎时凌乱了,选来选去,从仅剩的课题中挑了“投票统计器”,上网搜索了一下,大体上把设计的方向搞清了,接下来,便是开始设计了。

画模拟图对于我们来说,还是比较困难的,特别是8086那一块儿,大家参考网上的资料,反复讨论,着实花了不少时间。接下来的画图连线就比较简单了,为了节省时间,在做模拟图的同时,其他两个人便开始编写程序了。将设计流程图简略写下来,对照流程图,分块儿编写程序,显得很有条理,简单轻松些。

就这样,三次课之后,设计的图和程序都好了,只剩下调试程序,查看模拟结果了。这是检错和纠错的过程,轻松但也不轻松,因为那么多东西,如果看不仔细了,你就找不到错误,也就没法儿解决问题了,费事费力还一无所获,这是最伤脑筋的事情。还好,运气不错,只是程序出现了小小的问题,改好之后,得到了很满意的结果。

最后的验收,是对书本与实践知识的融汇总结,本以为毫无问题的我们,没想到被程序中的一个问题给秒杀了,大家四处找资料,和别的组的同学讨论,反复演算了半天,终于会了。当然,就算是会了,我们也只是懂得了微机原理中的一点皮毛而已,学的扎实很重要,因为这样才能把理论知识运用到实践中去,不断地提高自己。

五、参考文献 1.周明德.微型计算机系统原理及应用.北京:清华大学出版社

2.张弥左,王兆月,邢立军等.微型计算机接口技术.北京:机械工业出版社 3.戴梅萼,史嘉权.微型计算机技术及应用.北京:清华大学出版社 4.沈美明,温冬婵.IBM-PC汇编语言程序设计.北京:清华大学出版社

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定时器设计一个电子钟,并定义一个启动键。当按下该键时电子时钟从当前设定值开始走时。

附录:实验箱功能模块电路图

第五篇:微机原理实验总结

不知不觉,微机原理与接口技术实验课程已经结束了。回想起来受益匪浅,主要是加深了对计算机的一些硬件情况和运行原理的理解和汇编语言的编写汇编语言,对于学习机电工程的自动控制和计算机都是很重要的,因为它是和机器语言最接近的了,如果用它来编程序的话,会比用其它高级语言要快得多。本学期我们在老师的带领下,进行了微机原理实验六到十这五组实验。它们分别是: 实验六

8255 PA口控制PB口

实验目的

掌握单片机系统中扩展外围芯片的方法,了解 8255 芯片的结构及编程方法。 实验内容

用 8255 PA 口作开关量输入口,PB 口作输出口。

实验步骤

1、用8 芯线将8 255 PA口接至开关Kl~K8,PB口接至发光二极管L1~L8;

2、运行程序 HW06.ASM,拨动开关K1~K8,观察L1~L8发光二极管是否对应点亮。

实验七

8255控制交通灯

实验目的

进一步了解8 255 芯片的结构及编程方法,学习模拟交通控制的实现方法。

实验内容

用8255 做输出口,控制六个发光二极管燃灭,模拟交通灯管理。

实验步骤

1、用双头线将 8 255 PA0~PA2 口接至发光二极管L3~L1,PA3~PA5口接至发光二极管L7~L5;

2、执行 程序HW07.ASM,初始态为四个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后东西路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,之后重复以上过程。 实验八

简单I /O口扩展

实验目的

学习单片机系统中扩展简单I/O 口的方法; 学习数据输入输出程序的编制方法。 实验内容

利用74LS244 作为输入口,读取开关状态,并将此状态,通过74LS273再驱动发光二极管显示出来。

五、实验步骤

1、用8 芯线将Y0~Y7接至开关K1~K8,Q0~Q7 接至发光二极管L1~L8, 用双头线将 CS1 接至8 000 孔,CS2 接至9 000 孔,用8 芯线将J X0 接至JX7(D0~D7数据线);

2、执行程序 HW08.ASM,按动开关K1~K8,观察发光二极管L1~L8是否对应点亮。

实验九

A/D 0809转换实验

实验目的

)掌握A/D 转换与单片机接口的方法;

)了解A/D 芯片0809转换性能及编程方法;

)通过实验了解单片机如何进行数据采集。 实验内容

利用实验系统上的 0809 做A /D 转换器,实验系统上的电位器提输入,编制程序,将模拟量转换成数字,通过数码管显示出来。 实验步骤

1、用双头线将可调电压区的VOUT接至ADC0809 模数转换区的IN0,可调电压区的VIN 接至电源+5V,ADC0809 模数转换区的CS4 接至系统接口区的8000H 端口,ADC0809模数转换区的WR接至系统接口区的/IOWR端口,ADC0809 模数转换去的 RD 接至系统接口区的/IORD,ADC0809 模数转换区的ADDA、ADDB、ADDC接至G ND,CLK接至单脉冲与时钟区的500K,用8 芯线将数据总线JX0 接至A DC0809模数转换区的JX6;

2、运行程序 HW09.ASM,数码管上显示0809.XX,后二位显示当前采集的电压转换的数字量,调节可调电压,该二位将随着电压变化而相应变化,变化范围为00至FF。

实验十

D/A 0832转换实验

实验目的

(1)了解D/A 转换与单片机的接口方法;

(2)了解D/A 转换芯片 0832 的性能及编程方法;

(3)了解单片机系统中扩展D/A 转换芯片的基本方法。

实验步骤

1、用双头线将DAC0832 数模转换区的CS5 端口接至系统接口区的8000H端口,WR端口接至系统接口区的/IOWR端口,AOUT输出接电压表或小直流电机DJ,用8 芯线将DAC0832 数模转换区的JX2 接至数据总线JX0

2、运行程序HW10.ASM,数码管上显示不断加大或减小的数字量,数字变化范围 00 到FF,用万 用表测试 D/A 输出孔 AOUT 应能测出不断加大或减小的电压值,电压变化范围 0V 到5V。

这次实验课程加深了我们对汇编语言指令的熟悉和理解。不仅巩固了书本所学的知识,还具有一定的灵活性,发挥了操作,加深了我们对硬件的熟悉,锻炼了动手能力,发挥创造才能。

通过这次课程使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

这门课程可以阐明微处理器,汇编语言程序设计,计算机结构和操作系统等基本概念。详尽地论述了有关微处理器及其指令系统的概念和程序设计方法,介绍构成微型计算机的存储器,接口部件,总线等各项技术。.微机的最基础语言--汇编语言是一个最基础最古老的计算机语言,依赖于计算机的低级程序设计语言。汇编语言是我们理解整个计算机系统的最佳起点和最有效途径。汇编是对寄存的地址,以及数据单元进行最直接的修改,而在某些时候,这种方法的确是最有效,也是最可靠的.然而有优点,自然也就有缺点,最重要的一点就是汇编语言很繁琐,对某个数据进行修改时,本来很简单一个操作会用很多条繁琐的语句来解决,而这些语句本身在执行和操作的过程中,占用大量的时间和成本。并有大量的程序和硬件设计类题目,使我们能够深入了解计算机的原理、结构和特点,以及如何运用这些知识来设计一个实用的微型计算机系统。具体来说,就是掌握Intel8086/8088微型计算机系统地组成原理,熟练运用8086宏汇编语言进行程序设计,熟悉各种I/O接口芯片的配套使用技术,并通过一定的课程实验与实践,进一步提高系统设计的能力,使学生能够完成实用的微型计算机系统的软硬件设计。

学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。

这次实验并不是很难,主要的困难来自对程序的理解。我们最后对实验的原理有了清晰的认识。让我们知道了实验台上各个模块的用法;而且它还让我们对自己动手写程序来控制实验台的运作有了一定的基础。虽然实验台只是一个小型的模拟平台,但是通过对它的学习和操作,我们对有关接口的知识将会有一个更广泛的认识,而且它对我们以后的学习也会有帮助的。

实验中个人的力量是不及群体的力量的,我们分工合作,做事的效率高了很多。虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。而且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。 总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力 对课程设计的建议

本次课程设计的几个实验相对都比较简单,而且经过老师的讲解以及实验书上的指导,几乎把我们要用到的程序和实验台电路的接线方法都告诉我们了,所以做起来很容易。

实验过程中,获得了很多收获,获得了很多感悟,当然也遇到了很多困难。但我们都一一克服了他们,成功的完成了实验。并在解决问题,克服困难的过程中,发现了自己平时忽略的,隐藏的问题,以及一些不该出现的粗心大意的小毛病。通过这些,我们认识的更加深刻,了解的更加深入。做到了学以致用,对知识掌握得更加牢固。通过了这一学期对微机原理的学习,真的对它有了一个全新的认识,我会坚持对它的学习,使自己在汇编语言上有一个长足的提高!

上一篇:物流公司经营分析下一篇:万科养老地产模式

本站热搜