微机原理指令小结
微机原理总结2
![微机原理总结2](https://img.taocdn.com/s3/m/c0984dc726fff705cc170ad5.png)
第三章剩余的一些指令说明:还剩下十进制调整指令、符号拓展指令、逻辑运算和移位指令、循环逻辑移位指令、控制转移指令、循环控制指令、过程调用与返回指令、中断指令、串操作指令,其中,红色着重号标出的是重点需要掌握的,其余的由于用的不是很多,了解一下即可。
十进制调整指令:(这两个指令只对AF,CF寄存器有明显的影响,其余的结果不定)在具体讲解该系列的指令前,得先说一下这个“十进制调整指令”是干吗用的。
首先我们知道计算机使用二进制或是“简化后的二进制——十六进制”来表示数据的,但人们却是习惯用十进制来表示数的,如果计算机能够把数据用十进制的方式显示出来,则人们看待数据就会更加直观,于是用来表示十进制数的各种BCD码就诞生了,这里我们主要用的是8421BCD码,即每四位BCD码用来表示一个十进制的位,例如十进制数28,用8421码来表示就是:0010 1000,即十六进制表示:28H,念作二八H所以这个指令就是把运算后的结果,即用十六进制表示的数转化为人们可以看懂的十进制的样子来表示,下面就开始讲解这一系列的指令:1:AAA指令(英文全称是:Adjust ASCII ADD,由英文全称可知这个调整指令主要是用来调整加法运算结果的)功能:功能的介绍看书本111面,但有一点必须要注意,就是这个指令通常用于ADD指令之后,且操作数隐藏(操作数默认是AL与AH)。
另外:书上对这个指令没有讲解的很详细,我在某个晚上看了半个小时的这个指令,一直到快睡着后才发现,这个指令是这样的:首先务必要弄清楚,在AX中存储的值是简化为十六进制数的未组合的BCD码(英文全称是:Binary Convert dec……十进制的英文我忘了,反正字面的意思就是把二进制转化为十进制)来表示的(关于什么是组合的BCD 码什么又是未组合的BCD码,我会在下面粘贴一段百度里面的知识),例如执行AAA指令前得到AX=010AH,得认为AX表示的是十进制数20(把AX分开来看,AH=01,它是未组合的BCD码,表示的就是1;然后AL=0AH,它也是未组合的BCD码,表示的就是10,两个组合在一起就是十进制数20!这个例子不大好理解,就只能这样记了,例如两个未组合BCD码数是010EH,那同上可得其表示的数我们可以看作是十进制数24,如果举个比较好理解的例子,例如两个未组合BCD码数是0109H,则表示的数是十进制数19,不过这个数就不需要用AAA指令来调整了,因为我们一看就知道它就是十进制数19,所以AAA指令就是把像010AH、010EH这样看起来非常不爽的BCD 码数转化为看起来顺眼的未组合的BCD码数,例如上面中的010AH 与010EH经过AAA指令转化后分别变为:0200H与0204H,这样如果告诉我们这两个数是未组合的BCD码,则我们可以很容易地知道它们分别表示的就是用未组合的BCD码以十六进制数表示的可视为十进制数的20与24:有一点要注意,0200H与十进制数的20不想等,同理0204H与十进制数的24不相等,BCD码主要是方便人看的方便,实际的值是不一样的)最后总结一下,这个AAA指令就是把AX储存的两个满足某些条件的未组合的BCD码数(某些条件就是:AL中的数的低四位的值小于0AH 或是AF=1:也就是辅助标志寄存位)转化为我们更容易识别的未组合的BCD码数,它的具体步骤就是:首先判断是否满足条件,如果满足,则首先让AL中的数加上06H,接着让AL中的高四位清零,然后让AH中的数加1,最后AF=CF=1以下是来自百度的相关补充的知识:什么是未组合的BCD码,什么是组合BCD码计算机中的BCD码,经常使用的有两种格式,即分离BCD码(也就是未组合的BCD码),组合BCD码。
32位微机原理指令汇总
![32位微机原理指令汇总](https://img.taocdn.com/s3/m/ba22542fa5e9856a56126020.png)
注意:::红笔写的为根据课本该写的,可能有错!!!一、数据传输指令作用:它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSH把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHA 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器里字节的顺序XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )XADD 先交换再累加.( 结果在第一个操作数里)XLAT 字节查表转换.BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535.3. 目的地址传送指令.LEA 装入有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送目标指针,把指针内容装入DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES 传送目标指针,把指针内容装入ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送目标指针,把指针内容装入FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送目标指针,把指针内容装入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送目标指针,把指针内容装入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装入AH.SAHF 标志寄存器传送,把AH内容装入标志寄存器. PUSHF 标志入栈.POPF 标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈.二、算术运算指令ADD 加法.ADC 带进位加法.INC 加1.AAA 加法的ASCII码调整.DAA 加法的十进制调整.SUB 减法.SBB 带借位减法.DEC 减1.NEC 求反(以0 减之).CMP 比较.(两操作数作减法,仅修改标志位,不回送结果). AAS 减法的ASCII码调整.DAS 减法的十进制调整.MUL 无符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),AAM 乘法的ASCII码调整.DIV 无符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去) CWD 字转换为双字. (把AX中的字的符号扩展到DX中去) CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去) CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去) 三、逻辑运算指令AND 与运算.OR 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果). SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上八种移位指令,其移位次数可达255次. 移位一次时, 可直接用操作码. 如SHL AX,1. 移位>1次时, 则由寄存器CL给出移位次数. 如MOV CL,04SHL AX,CL四、串指令DS:SI 源串段寄存器:源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )CMPS 串比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS 串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. ) STOS 保存串.是LODS的逆过程.REP 当CX/ECX<>0时重复.REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序(控制)转移指令1>无条件转移指令(长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令(短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )一测试无符号整数运算的结果(标志C和Z).JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于或者进位为0转移.JB/JNAE 小于等于或者进位为1转移.JBE/JNA 小于或等于转移.二测试带符号整数运算的结果(标志S,O和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.三根据单个条件标志位转移的条件转移指令。
微机原理上机个人总结
![微机原理上机个人总结](https://img.taocdn.com/s3/m/3d4a2de829ea81c758f5f61fb7360b4c2f3f2a5d.png)
微机原理上机个人总结
微机原理是一门研究计算机硬件组成和工作原理的课程,通过这门课程的学习和实践,我对计算机的组成结构、指令执行原理和存储器等方面有了更深入的了解。
在上机实践中,我主要学习了计算机的指令系统和指令的编码方式。
通过查阅资料和
实际操作,我了解到指令由操作码和操作数部分构成,操作码决定了指令的功能,操
作数则是指令的操作对象。
而不同的指令集体系结构有不同的指令编码方式,比如
x86指令集采用变长编码方式,ARM指令集则采用定长编码方式。
在实验中,我还学习了存储器的组成和工作原理。
存储器是计算机的重要组成部分,
用于存储程序和数据。
在实验中,我通过配置程序和数据的存储地址,了解了指令和
数据是如何通过存储器进行读写操作的。
同时,我还学习了存储器的层次结构,包括
寄存器、高速缓存、内存和外存等,了解了存储器的访问速度和容量随层次的变化。
此外,在实践中,我还学习了计算机的中断和异常处理。
中断是计算机在运行过程中
被外部事件打断的一种机制,异常则是计算机在执行指令过程中出现错误或特殊情况
时的处理机制。
通过配置中断和异常的处理程序,我了解了中断和异常的处理流程和
机制,以及如何编写中断和异常处理程序。
总的来说,微机原理的上机实践使我对计算机的硬件组成和工作原理有了更深入的了解。
通过对指令系统、存储器和中断等方面的学习和实践,我对计算机的工作流程和
原理有了更清晰的认识。
同时,上机实践也锻炼了我的实际操作能力,提高了我分析
和解决问题的能力。
微机原理期末总结
![微机原理期末总结](https://img.taocdn.com/s3/m/54240806bf1e650e52ea551810a6f524ccbfcb3d.png)
微机原理期末总结微机原理是计算机科学与技术专业中的一门基础课程,它是计算机科学与技术专业学生进一步了解计算机的内部结构、原理和工作过程的基础。
本学期我学习了这门课程,通过学习,我对计算机的原理有了更深入的了解,也对计算机的运行过程和内部结构有了更为清晰的认识。
在本学期的学习中,我们主要学习了如下几个方面的内容:计算机的数制转换、运算器、存储器、控制器以及计算机的输入输出等。
以下是我对这些内容的总结和理解:首先,计算机的数制转换是计算机科学与技术专业学生必须掌握的基础知识。
在学习中,我们学习了二进制、八进制、十进制和十六进制之间的相互转换,掌握了不同进制数的表示方法和运算规则。
数制转换是计算机中数据表示的基础,深入理解数制转换对于我们后续学习计算机内部结构和工作原理非常重要。
其次,我们学习了运算器的原理和结构。
运算器是计算机中的重要组成部分,负责数学运算和逻辑运算。
通过学习,我们了解了运算器的各个部分的功能和工作原理,如算术逻辑单元(ALU)、寄存器等。
同时,我们也学习了运算器的运算规则、运算速度和运算精度等重要概念。
接下来,我们学习了存储器的原理和结构。
存储器是计算机中的重要组成部分,它负责存储程序和数据。
在学习中,我们了解了存储器的各个部分的功能和工作原理,如随机存储器(RAM)、只读存储器(ROM)等。
我们也学习了存储器的存取周期、存储容量和存储层次等重要概念,这对于提高存储器的工作效率和容量非常重要。
然后,我们学习了控制器的原理和结构。
控制器是计算机中的重要组成部分,它负责指挥和控制计算机的各个部件的工作。
在学习中,我们了解了控制器的工作原理,掌握了指令的执行过程和时序规则。
此外,我们还学习了控制器的寄存器、状态位和指令格式等重要概念,这对于理解和设计计算机的指令系统非常重要。
最后,我们学习了计算机的输入输出。
输入输出是计算机与外部世界交互的方式,它涉及到计算机接口的设计与实现。
在学习中,我们了解了输入输出设备的种类和特点,掌握了输入输出接口的工作原理和设计方法。
微机原理指令范文
![微机原理指令范文](https://img.taocdn.com/s3/m/7fe1bf70ef06eff9aef8941ea76e58fafab0453f.png)
微机原理指令范文1.指令的定义和分类指令是计算机执行其中一种特定操作的命令。
在微机原理中,指令可以分为几类:数据传送指令、算术运算指令、逻辑运算指令、移位指令、控制转移指令和输入/输出指令。
2.数据传送指令数据传送指令用于将数据从一个地方传送到另一个地方。
常见的传送指令有:MOV(将数据从一个寄存器复制到另一个寄存器)、LDR(将数据从存储器加载到寄存器)、STR(将数据从寄存器存储到存储器)等。
3.算术运算指令算术运算指令用于执行加、减、乘、除等算术运算。
常见的算术运算指令有:ADD(将两个操作数相加)、SUB(将两个操作数相减)、MUL(将两个操作数相乘)、DIV(将两个操作数相除)等。
4.逻辑运算指令逻辑运算指令用于执行逻辑运算,如与、或、非等。
常见的逻辑运算指令有:AND(将两个操作数进行与运算)、OR(将两个操作数进行或运算)、NOT(将操作数取反)等。
5.移位指令移位指令用于将数据在寄存器中进行左移或右移操作。
常见的移位指令有:LSL(将操作数左移指定的位数)、LSR(将操作数右移指定的位数)等。
6.控制转移指令控制转移指令用于改变程序的执行顺序。
常见的控制转移指令有:JMP(无条件跳转到指定地址)、JZ(当零标志位为真时跳转到指定地址)、JC(当进位标志位为真时跳转到指定地址)等。
7.输入/输出指令输入/输出指令用于与外部设备进行数据交换。
常见的输入/输出指令有:IN(将外部设备的数据读取到寄存器中)、OUT(将寄存器中的数据输出到外部设备中)等。
每个指令都包含操作码和操作数两个部分。
操作码确定指令的操作类型,而操作数则指定了操作的数据。
指令由字节或字(16位)组成,具体的格式和编码方式可以根据不同的微机架构而有所不同。
在微机中,指令是由控制单元根据程序计数器的值读取的。
程序计数器用于存储下一条执行的指令的地址。
控制单元会将指令传递给执行单元进行执行,并根据指令的操作码和操作数执行相应的操作。
微机原理课程总结
![微机原理课程总结](https://img.taocdn.com/s3/m/ab8a737ffe00bed5b9f3f90f76c66137ee064fe7.png)
微机原理课程总结《微机原理课程总结》回想起来这微机原理课程,还真是一场惊心动魄的知识之旅呢。
刚开始接触的时候,真的感觉像是进入了一个完全陌生的世界,满眼都是新奇但又有点让人不知所措。
先说整体感受吧,这门课就像是一个装满各种零件的大盒子,一开始只看到这些零件散落在那,根本不知道怎么组装起来,甚至都不确定每个零件是干嘛用的。
但是随着课程的逐渐深入,就像把那些零件一个个开始归类,找它们之间的联系,慢慢发现原来这些看似独立的知识其实都是有逻辑关系的。
具体收获可不少呢。
从简单的微机硬件结构的认识开始,像CPU、内存、I/O接口这些基本组件。
我记得最开始记忆CPU的功能和组成的时候,那些寄存器啊,数据通路什么的真是让人头疼。
但是通过不断地画图、理解原理图,就像是把一个混乱的迷宫线路慢慢捋顺了。
还有汇编语言,这是个很神奇的东西,就像一套独特的密码系统。
我以为指令只要机械记忆就好,但实际编写程序时才发现,只有理解了微机底层的运行逻辑,才能正确地组合这些指令。
比如写一个简单的两数相加的程序,不仅要知道ADD指令怎么用,还得考虑数据在寄存器中的存储位置呢。
重要发现挺多的。
我发现微机原理中的很多概念都有一种层层嵌套的感觉。
比如说中断机制,原来它不仅仅是CPU去响应一个外部事件这么简单。
这里面还涉及到中断向量表、中断优先级之类的概念。
而且各个部分之间互相影响。
有一次在理解中断嵌套的时候,一开始怎么都想不明白为什么高优先级的中断能打断低优先级中断正在执行的程序,后来仔细分析了整个中断处理的流程才明白,这里面每个环节就像一个精密机械手表里的小齿轮,一个带动一个才能保证整个系统按照规则运行。
这让我深刻明白了学习微机原理不能一知半解,每个细节都有可能对全局产生影响。
等我理解了这些,现在想想,很多以前觉得突兀的知识点都能串联起来了。
说到反思,就是当初学习的时候有点太急于求成了。
总想着快速把知识背下来,而忽略了对实际原理的深入理解。
微机原理指令汇总
![微机原理指令汇总](https://img.taocdn.com/s3/m/6337a0ff77232f60dccca109.png)
我现将指令系统中各种助记符的英文全名写出来,各种助记符的记忆就会变得很简单o(∩_∩)o...在这之前,先说一下寄存器:数据寄存器分为:AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据.BH&BL=BX(base):基址寄存器,常用于地址索引;CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.DH&DL=DX(data):数据寄存器,常用于数据传递。
他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。
这2组8位寄存器可以分别寻址,并单独使用。
另一组是指针寄存器和变址寄存器,包括:SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置;BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。
指令指针IP(Instruction Pointer)标志寄存器FR(Flag Register)OF(overflow flag)DF(direction flag)CF(carrier flag)PF(parity flag)AF(auxiliary flag)ZF(zero flag)SF(sign flag)IF(interrupt flag)TF(trap flag)(Segment Register)段寄存器.为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;堆栈段寄存器;(Stack Segment):SSES(Extra Segment):附加段寄存器。
微机原理指令总结
![微机原理指令总结](https://img.taocdn.com/s3/m/5573782ff111f18583d05ae7.png)
1.内部数据传送指令:(1)以累加器A为目的操作数的指令功能:将源操作数指定的内容送入累加器A。
MOV A , Rn ; A ←(Rn)MOV A , direct ; A ←(direct)MOV A , @Ri ; A ←((Ri))MOV A , # data ; A ← data(2)以Rn为目的操作数的指令功能:将源操作数所指定的内容送入当前工作寄存器R0 ~R7中。
MOV Rn , A ; Rn ← (A)MOV Rn , direct ; Rn ←(direct)MOV Rn , # data ; Rn ← data(3)以直接地址为目的操作数的指令功能:将源操作数所指定的内容送入由直接地址指出的片内RAM单元。
MOV direct , A ; (direct)← (A)MOV direct , Rn ; (direct) ← (Rn)MOV direct , direct ; (direct) ← (direct)MOV direct , @Ri ; (direct) ←((Ri))MOV direct , # data ; (direct) ← data4)以间接地址为目的操作数的指令功能:将源操作数所指定的内容送入R0/R1所指向片内RAM的存储单元中。
MOV @Ri , A ; (Ri) ← (A)MOV @Ri , direct ; (Ri) ← (direct)MOV @Ri , # data ; (Ri) ← data(5)16位数据传送指令唯一的一条16位立即数传送指令。
功能:将16位二进制的立即数送入数据指针DPTR中。
其中高8位送入DPH,低8位送入DPL。
MOV DPTR , # data162.外部数据传送指令MOVX A,@RiMOVX A,@DPTRMOVX @Ri,AMOVX @DPTR,A3.堆栈操作指令压栈指令:将direct中的内容送入堆栈中PUSH direct ;SP←(SP)+1,(SP)←(direct)出栈指令:将堆栈中的内容送回到direct中POP direct ; (direct) ← (SP), SP←(SP)-14.查表指令MOVC A,@A+DPTR;A←((A)+(DPTR))MOVC A,@A+PC ;PC ← (PC)+1, A←((A)+(PC))5.交换指令XCH A,Rn ;(A)←→(Rn)XCH A,direct ;(A)←→(direct)XCH A,@Ri ;(A)←→((Ri))XCHD A,@Ri ;(A0~3)←→((Ri)0~3)SWAP A ;(A0~3)←→(A4~7)6.逻辑操作类指令:逻辑“与”指令ANL逻辑“或”指令ORL逻辑“异或”指令XRL累加器A的清零和取反CLR CPL7.控制转移类指令长转移指令LJMP 标号绝对转移指令AJMP 标号短(相对)转移指令SJMP 标号间接转移指令JMP @A+DPTR8.累加器A的移位指令循环左移RL A ;循环右移RR A ;带进位位循环左移RLC A ;带进位位循环右移RRC A9.条件转移指令累加器判零转移指令JZ 标号JNZ 标号比较不等转移指令CJNE A, #data, 标号CJNE A, direct, 标号CJNE Rn, #data,标号CJNE @Ri, #data,标号减1不为零(循环)转移指令DJNZ Rn,标号DJNZ direct, 标号。
微机原理指令总结
![微机原理指令总结](https://img.taocdn.com/s3/m/5573782ff111f18583d05ae7.png)
1.内部数据传送指令:(1)以累加器A为目的操作数的指令功能:将源操作数指定的内容送入累加器A。
MOV A , Rn ; A ←(Rn)MOV A , direct ; A ←(direct)MOV A , @Ri ; A ←((Ri))MOV A , # data ; A ← data(2)以Rn为目的操作数的指令功能:将源操作数所指定的内容送入当前工作寄存器R0 ~R7中。
MOV Rn , A ; Rn ← (A)MOV Rn , direct ; Rn ←(direct)MOV Rn , # data ; Rn ← data(3)以直接地址为目的操作数的指令功能:将源操作数所指定的内容送入由直接地址指出的片内RAM单元。
MOV direct , A ; (direct)← (A)MOV direct , Rn ; (direct) ← (Rn)MOV direct , direct ; (direct) ← (direct)MOV direct , @Ri ; (direct) ←((Ri))MOV direct , # data ; (direct) ← data4)以间接地址为目的操作数的指令功能:将源操作数所指定的内容送入R0/R1所指向片内RAM的存储单元中。
MOV @Ri , A ; (Ri) ← (A)MOV @Ri , direct ; (Ri) ← (direct)MOV @Ri , # data ; (Ri) ← data(5)16位数据传送指令唯一的一条16位立即数传送指令。
功能:将16位二进制的立即数送入数据指针DPTR中。
其中高8位送入DPH,低8位送入DPL。
MOV DPTR , # data162.外部数据传送指令MOVX A,@RiMOVX A,@DPTRMOVX @Ri,AMOVX @DPTR,A3.堆栈操作指令压栈指令:将direct中的内容送入堆栈中PUSH direct ;SP←(SP)+1,(SP)←(direct)出栈指令:将堆栈中的内容送回到direct中POP direct ; (direct) ← (SP), SP←(SP)-14.查表指令MOVC A,@A+DPTR;A←((A)+(DPTR))MOVC A,@A+PC ;PC ← (PC)+1, A←((A)+(PC))5.交换指令XCH A,Rn ;(A)←→(Rn)XCH A,direct ;(A)←→(direct)XCH A,@Ri ;(A)←→((Ri))XCHD A,@Ri ;(A0~3)←→((Ri)0~3)SWAP A ;(A0~3)←→(A4~7)6.逻辑操作类指令:逻辑“与”指令ANL逻辑“或”指令ORL逻辑“异或”指令XRL累加器A的清零和取反CLR CPL7.控制转移类指令长转移指令LJMP 标号绝对转移指令AJMP 标号短(相对)转移指令SJMP 标号间接转移指令JMP @A+DPTR8.累加器A的移位指令循环左移RL A ;循环右移RR A ;带进位位循环左移RLC A ;带进位位循环右移RRC A9.条件转移指令累加器判零转移指令JZ 标号JNZ 标号比较不等转移指令CJNE A, #data, 标号CJNE A, direct, 标号CJNE Rn, #data,标号CJNE @Ri, #data,标号减1不为零(循环)转移指令DJNZ Rn,标号DJNZ direct, 标号。
微机——微机原理指令汇总情况
![微机——微机原理指令汇总情况](https://img.taocdn.com/s3/m/a3ad54ab988fcc22bcd126fff705cc1755275f80.png)
微机——微机原理指令汇总情况微机原理指令是计算机中执行的最基本的操作。
它们是一条条的机器代码,用于告诉计算机要执行的操作。
微型计算机通过使用特定的指令集,可以执行各种不同的任务。
本文将对微机原理指令进行汇总和分类,以便更好地了解微机原理。
1. 数据传输指令(Data Transfer Instructions):用于将数据从一个位置传送到另一个位置。
- MOV(Move):将一个寄存器或内存的内容复制到另一个位置。
- XCHG(Exchange):交换两个操作数的值。
- PUSH(Push):将数据压入栈中。
- POP(Pop):从栈中弹出数据。
2. 运算指令(Arithmetic Instructions):用于执行一些基本的算术和逻辑运算。
- ADD(Addition):将两个操作数相加。
- SUB(Subtraction):将第一个操作数减去第二个操作数。
- MUL(Multiplication):将两个操作数相乘。
- DIV(Division):将第一个操作数除以第二个操作数。
- INC(Increment):将操作数加一- DEC(Decrement):将操作数减一3. 逻辑指令(Logical Instructions):用于执行一些逻辑运算。
- AND(And):对两个操作数进行逻辑与操作。
-OR(Or):对两个操作数进行逻辑或操作。
- XOR(Exclusive Or):对两个操作数进行异或操作。
- NOT(Not):对操作数进行逻辑非操作。
- SHR(Shift Right):对操作数进行右移操作。
- SHL(Shift Left):对操作数进行左移操作。
4. 跳转指令(Jump Instructions):用于控制程序的跳转。
- JMP(Jump):无条件跳转到指定的地址。
- JZ(Jump if Zero):如果上一个比较指令结果为零,则跳转到指定地址。
- JNZ(Jump if Not Zero):如果上一个比较指令结果不为零,则跳转到指定地址。
微机原理内容总结
![微机原理内容总结](https://img.taocdn.com/s3/m/382c004ea8956bec0975e3e4.png)
8086CPU 内部流水线管理工作原理当指令队列为空时,这种情况一般发生在程序刚开始执行或刚执行了跳转指令。
这时EU 等待BIU提取指令,BIU会从存储器中把要执行的那个程序段指令装入指令队列中2)当指令队列不空时,这时EU和BIU独立工作,EU负责从指令队列前部取出指令代码,并进行译码和执行;BIU负责从存储器中把指令取到指令队列中,直到指令队列满为止。
3)当指令队列已满且EU又无访问请求时,BIU便进入空闲状态。
4)当指令队列出现2个空字节时,BIU又会自动地从存储器中把后面的指令装满指令队列。
5)当EU执行特殊指令时,这有两种情况:一是EU在执行指令过程中必须进行外部访问,这时EU请求BIU去做外部访问,如果BIU 正好处于空闲状态,则立即响应EU的请求,如果BIU正在取指过程中,则BIU在完成当前取指令的操作后再去响应EU的请求;二是EU执行跳转指令,这时,指令队列中已装入的指令字节就不再有用,则指令队列被自动清空。
中断服务子程序含有以下七个部分:1)保护中断时的现场。
2)若允许中断嵌套,则设置开中断。
3)执行中断处理程序。
4)设置关中断,5)给中断命令寄存器送中断结束命令EOI。
6)恢复中断时的现场。
7)用中断返回指令IRET返回主程序。
8259A的工作方式中断请求方式、中断源屏蔽方式、中断嵌套方式、优先级循环方式、中断结束方式、读8259A状态方式。
8237A的主要特性(1)一个8237A芯片有四个独立的DMA通道,也可通过级连方式扩充通道数目;(2)各通道具有独立的允许/禁止DMA请求的控制功能和自动预置功能;(3)各通道都有DMA请求信号DREQ和响应信号DACK,其有效电平可编程设定;(4)固定优先级和循环优先级;(5)单字节、数据块、请求和级联(6)正常时序和压缩时序;(7)传送数据时具有自动修改地址的功能;(8)DMA传送过程中具有总线控制权,在传送结束后能将总线控制权归还给CPU;(9)数据传送结束时能发DMA结束信号,也可由外部发送DMA结束信号中止传送。
(完整word版)微机原理总结,推荐文档
![(完整word版)微机原理总结,推荐文档](https://img.taocdn.com/s3/m/a9f03c98fad6195f312ba68f.png)
第一章:1:1.2中讲的“计算机中的数制”,微机原理老师上课没有讲,不过她说过我们在数电课就上过,结合上学期所学的,我们应该了解二进制、十进制、十六进制、八进制之间的转换,不过估计程度不大,如果考试要考查相关的知识点的话,应该只会出填空或选择或判断题之类。
2:1.2.2中讲得计算机中常用的编码,这个当中的BCD码,鉴于第二章中的一些指令(例如AAA)的实现和这个有关系,建议关注一下,掌握如何写出某一十进制数对应的BCD码。
至于BCD码的加法与减法,了解一下。
对于字符编码,由于在计算机编程当中用的较多的编码就是属于字符编码的ASCII码,这里只需了解一下即可。
汉字的编码同样了解即可。
3:1.2.3当中讲到的是计算机中带符号数的表示方法。
其中要知道对于有符号数,其最高位,也就是我们一般用8位二进制表示的数中最左边的那一位用来表示正负而不是大小。
在这里必须强调一点,那就是要掌握计算机机器数的三种不同编码形式(原码,反码,补码),其中,对于正数来说,这三种编码的结果是一样的,具体来说就是:比如整数12,其原码是:00001100,反码也是00001100,补码也是00001100;但对于负数来说,就不一样了,我们在后面的课程当中遇到的负数都是以其补码的形式出现的,例如第二次补充作业当中过的数8FH,这个数把它转换为二进制,就是:10001111,对于这个数来说,如果它表示的是一个有符号数,那么一定是负数(也就是说,如果一个数已经确定是有符号数,只要它的最高位(用十六进制表示的话)大于等于8,就表示它是一个负数。
))因为对于一个负数来说,从原码到补码的转换过程中,最高位也就是符号位是绝对不会发生改变的,具体的转化方法请仔细阅读书本的P10与P11。
(在这里我先具体解释一下,根据原理,对于一个负数,把它的补码再求一次补码即得到其原码,我们来试一下:1000 1111先求它的反码,得1111 0000,然后加上1,得1111 0001,也就是十进制数-71。
微机原理实验总结(共5篇)
![微机原理实验总结(共5篇)](https://img.taocdn.com/s3/m/47fce016182e453610661ed9ad51f01dc381575e.png)
微机原理实验总结(共5篇)第一篇:微机原理实验总结微机原理实验总结不知不觉,微机原理与接口技术实验课程已经结束了。
回想起来受益匪浅,主要是加深了对计算机的一些硬件情况和运行原理的理解和汇编语言的编写汇编语言,对于学习机电工程的自动控制和计算机都是很重要的,因为它是和机器语言最接近的了,如果用它来编程序的话,会比用其它高级语言要快得多。
本学期我们在老师的带领下,进行了微机原理实验六到十这五组实验。
它们分别是:实验六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再驱动发光二极管显示出来。
微机原理重要知识点总结
![微机原理重要知识点总结](https://img.taocdn.com/s3/m/780d63a6988fcc22bcd126fff705cc1755275f2a.png)
微机原理重要知识点总结一、数据的表示和运算1. 二进制数系统二进制是计算机中常用的数制,它由0和1这两个数字组成。
在计算机中,所有的数据都是以二进制的形式存储和处理的。
因此,理解二进制数系统对于理解计算机的工作原理至关重要。
2. 补码表示在计算机中,负数通常是以补码的形式表示的。
补码是一种用来表示负数的二进制编码方式,它的特点是减法和加法可以同样适用,这样可以简化计算。
3. 位运算位运算是一种对二进制数据进行操作的方式,包括与、或、非、异或等操作。
位运算可以用于快速实现一些数值的计算,提高程序的执行效率。
4. 浮点数表示在计算机中,浮点数是一种用科学计数法表示的实数。
它由符号位、指数位和尾数位组成,具有一定的精度和范围。
理解浮点数表示对于理解计算机中的实数运算和精度问题是很重要的。
二、数字逻辑电路1. 基本逻辑门基本逻辑门包括与门、或门、非门等,它们是数字逻辑电路的基本构成单元。
其他的逻辑电路都可以由这些基本的逻辑门组合而成。
2. 组合逻辑电路组合逻辑电路是一种由多个逻辑门组合而成的电路,它的输出仅依赖于输入信号的当前值。
常见的组合逻辑电路包括加法器、比较器、多路选择器等。
3. 时序逻辑电路时序逻辑电路是一种在特定的时钟信号下工作的逻辑电路,它的输出还依赖于输入信号的变化过程。
常见的时序逻辑电路包括触发器、计数器、移位寄存器等。
4. 存储器存储器是一种用来存储数据的电路,它可以分为寄存器、RAM、ROM等不同类型。
存储器在计算机系统中起着非常重要的作用,它决定了计算机的存储容量和存取速度。
三、计算机系统结构1. 冯·诺伊曼体系结构冯·诺伊曼体系结构是一种通用的计算机系统结构,它包括运算器、控制器、存储器和输入输出设备等部分。
理解冯·诺伊曼体系结构对于理解计算机的工作原理和设计原理是非常重要的。
2. 指令和指令格式指令是计算机执行的基本操作,它由操作码和操作数等部分组成。
微机原理与接口技术每章小结(范文大全)
![微机原理与接口技术每章小结(范文大全)](https://img.taocdn.com/s3/m/f8fe1c39b6360b4c2e3f5727a5e9856a56122663.png)
微机原理与接口技术每章小结(范文大全)第一篇:微机原理与接口技术每章小结第一章微型计算机概述课程知识总结:本章的主要内容为计算机的基本结构、微型计算机系统的组成和主要性能指标、不同进位计数制计数方法、不同进位制数之间相互转换的方法、数和字符在计算机中的表示方法、简单的算术运算以及计算机中的数据表示与编码。
知识要点:一、微型计算机的基本构成:1.微型计算机的结构特点2.微处理器 3.内存储器:① 内存单元的地址和内容② 内存操作③ 内存分类 3.输入输出设备和输入输出接口 4.总线:① 地址总线② 数据总线③ 控制总线。
二、微型计算机系统:1.微型计算机系统的组成:①软件.② 硬件:主机、微处理器:控制器和运算器、内存处理器:ROM和 RAM、I/O 接口:串行接口和并行接口③ 外部设备:输入设备、外储存器、其他设备和输出设备。
④ 电源。
2.软件:① 系统软件:操作系统、语言处理器如汇编、解释、编译等软件② 支持软件③ 应用软件:工程计算软件、数据计算软件和过程计算软件。
三、数制运算基础:二进制数(B)、八进制数(Q)、十六进制数(H)、十进制数(D)。
三、码制:1.带符号数编码:原码、反码、补码2.数的编码:ASCII:码数字编码规则和字母编码规则。
BCD码:压缩BCD码和非压缩BCD码。
第二章微处理器课程知识总结:本章要以Intel系列微处理器为例,从应用理解8086微处理器的功能结构、工作模式和引用脚本特性、定性的总线操作时序。
存储器组织和I/O组织等概念。
然后介绍微处理器的发展史历程和新技术。
知识要点:一、8086微处理器的结构:1.8086的功能结构:执行单元EU (AX、BX、CX、DX、SP、BP、SI、DI、标志寄存器)2.总线接口单元BIU(CS、DS、SS、ES、IP)功能及特点。
二、8086的寄存器结构:1.通用数据寄存器:一般用法和隐含用法2.地址指针和编制寄存器:一般用法和隐含用法及特点3.段寄存器:数据段寄存器、堆栈段寄存器、附加段寄存器4.指令指针寄存器和标记寄存器:指令指针寄存器IP和标志寄存器FR。
微机原理各章知识要点、小结五篇
![微机原理各章知识要点、小结五篇](https://img.taocdn.com/s3/m/13508032fd4ffe4733687e21af45b307e871f939.png)
微机原理各章知识要点、小结五篇第一篇:微机原理各章知识要点、小结各章知识要点、小结第一章微型计算机系统概述本章知识要点:•微型计算机的发展。
•微型计算机的特点。
•微型计算机系统的组成。
•微型计算机的主要性能指标。
本章小结:本章首先介绍了微型计算机的发展、组成。
然后对计算机的结构进行了简单介绍,并介绍了微型计算机的3种不同的总线结构。
最后,介绍了计算机的软、硬件的概念,区别和联系以及计算机的主要性能指标。
在学习完本章内容之后,需要掌握如下内容。
•微型计算机的发展阶段和特点。
•微型计算机属于第四代计算机,为冯〃诺伊曼结构。
•微型计算机系统由硬件和软件组成。
硬件由输入设备、输出设备、运算器、存储器和控制器等5部分组成。
•微型计算机中的软硬件概念、分类、联系以及区别。
•微型计算机的主要性能指标有字长、存储器容量、运算速度、外部设备配置、系统软件配置、性价比等。
• 1KB=1024B1MB=1024KB1GB=1024MB 第二章计算机中的信息表示本章知识要点:•进位计数制及其相互转换。
•二进制数的运算规则。
•计算机中带符号数与小数点的表示方法。
•计算机中的常用码制。
本章小结:本章着重介绍了计算机中数据的表示方法,重点讲述了二、八、十、十六进制数的相关概念及各类进制数之间相互转换的方法,无符号数和带符号数的机器内部表示以及字符编码和汉字编码等内容。
在学习完本章内容之后,需要掌握如下内容。
•掌握计算机内部的信息处理方法和特点。
•熟悉原码、反码、补码等各类数制之间的相互转换。
•理解无符号数和带符号数的表示方法。
•掌握各种BCD码的特点及其之间的相互转换。
•了解循环码和余3码的表示方法。
1/7 •掌握在计算机中如何运用字符的ASCII码表示非数字信息的。
•了解汉字编码以及在计算机中对汉字的表示方法。
第三章微处理器本章知识要点:• CPU的发展过程。
• 80486的内部基本结构。
• 80486的外部基本引脚。
• CPU的内部寄存器。
微机原理与应用:第十六讲 指令系统的小结
![微机原理与应用:第十六讲 指令系统的小结](https://img.taocdn.com/s3/m/ae6778cb650e52ea551898f8.png)
data→ Rn
78~7F data
2
data →direct 75 direct data 3
1 ××× × 2 ××× ×
5
5、影响标志位的指令
加法和减法指令影响4个标志位(Cy、AC、OV、P)。 目的操作数是ACC的逻辑运算指令影响P位。 目的操作数是ACC数据传送指令影响P位。 目的操作数是ACC的加1和减1指令影响P位。 比较不相等指令影响Cy位。
第十六讲 指令系统的小结
1
§3.7指令的小结
一、指令表结构
1、指令按功能分类编排 一共分四类
(1)数据传送类 (2)数据处理类 (3)位操作类 (4)控制转移类
2
2、指令表分6栏
指令助记符号 MOV A, Rn
(1)指令助记符一栏 (2)指令功能说明一栏 (3)指令机器代码一栏 (4)指令长度说明一栏 (5)指令执行时间说明一栏 (6)标志位一栏
3) 30H~7FH(数据缓冲器和堆栈区域) 寻址方式有:直接寻址、寄存器间接寻址。
4)80H~FFH(数据缓冲器和堆栈区域) 寻址方式有:寄存器间接寻址。
13
实验四、转移类指令和位操作类指 令的认识
一、实验目的 掌握51系列单片机指令系统中转移类和位操作类指令。 二、实验工具 采用软件工具Keil μVision2。
进行X Y运算。
F0是用户自定义位,此作为暂存X 运算结果 将变量Y的内容送至Cy。 进行 X Y 运算。
进行X Y+ XY 逻辑运算。
将逻辑运算结果送至02H位单元。 恢复现场,恢复PSW入子程序前的内容。 返回至SUB2。
17
课堂互动七
题一:若指令JBC TI,NEXT的地址为8053H,该指令的偏移 量为93H,指令执行前(TI)=1,问执行完该指令PC的 内容是什么?转移地址NEXT是什么?TI是什么?
微机原理指令知识点总结
![微机原理指令知识点总结](https://img.taocdn.com/s3/m/477003820408763231126edb6f1aff00bfd57042.png)
微机原理指令知识点总结一、指令概述指令是计算机硬件执行的基本命令。
计算机中的指令由操作码和地址码两部分组成,操作码用来表示指令的功能,地址码用来表示操作数的地址。
根据指令的功能不同,可以分为数据操作指令、控制指令和I/O指令等。
指令的执行是按照存储在内存中的程序顺序执行的,每条指令都有其对应的操作过程和执行结果。
二、指令的格式在计算机中,指令一般由操作码、地址码和操作数等部分组成。
操作码用来表示指令的功能,地址码用来表示操作数的地址,操作数是指令执行的对象,可以是数据或者地址等。
指令的格式一般有以下几种:三地址指令、二地址指令、一地址指令和零地址指令。
不同的指令格式对应了不同的指令功能和操作方式,程序员需要根据具体的需求选择合适的指令格式。
三、指令的执行过程指令的执行过程一般包括指令的取指、指令的译码、指令的执行和存储结果等步骤。
在执行指令的过程中,计算机需要根据指令的操作码和地址码来确定要执行的操作以及操作数的来源。
指令的执行结果一般存储在寄存器或者内存中,以便后续的指令继续执行。
四、指令的体系结构指令的体系结构一般包括指令系统的设计原则、指令的寻址方式、指令的格式设计和指令的执行过程等内容。
指令系统的设计原则是指在设计指令系统时需要考虑的指导思想,例如简洁、高效和易于理解等。
指令的寻址方式是指指令中的地址码如何确定操作数的地址,有直接寻址、间接寻址、寄存器寻址和变址寻址等方式。
指令的格式设计是指指令的操作码、地址码和操作数等部分的组织方式,不同的格式设计对指令的功能和效率有着重要影响。
指令的执行过程是指计算机在执行指令时的操作过程和执行结果,需要考虑指令的周期、时序和流水线等方面。
五、常见的指令类型常见的指令类型包括数据操作指令、控制指令和I/O指令等。
数据操作指令是用来对数据进行操作的指令,包括数据传输、逻辑运算、算术运算和移位操作等。
控制指令是用来控制程序执行流程的指令,包括跳转、调用子程序、返回子程序和中断等。
微机原理部分总结
![微机原理部分总结](https://img.taocdn.com/s3/m/6a65c0fe941ea76e58fa04a7.png)
第一章1、二进制——十进制之间的转换1101.01=1*23+1*22+0*21+1*20+0*2-1+1*2-28.125 = 1000.001 (8除2取余等于1000,0.125乘2取整等于001)2、二进制——十六进制之间的转换1010.0101 = A.5整数部分每4位写成一位16进制数,不足4位则在左侧补0。
小数部分每4位写成一位16进制数,不足4位在右侧补03、逻辑电路四种符号记住&(与),≧1(或),=1(异或),1(非)X(与),+(或),○+(异或),反4、两进两出半加器,三进两出全加器,两数相与得进位,两数异或得其和5、原码、反码与补码原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
6、布尔代数的运算规律:恒等式、交换律,结合律,分配率,摩根定理。
第二章1、ALU,算术逻辑单元,负责二进制的四则运算以及逻辑运算2、触发器RS——两端输入完成置位复位,也可S和CLK配合置位,R和CLK配合复位? RS触发器由两个与非门组成,且有反馈回路。
所以上一时刻的输出状态影响后一时刻的出状态。
? 触发器状态的约定:触发器有两个输出端,分别为Q端和Q端,这两个输出端的状态在正常工作时总是相反的,为了在研究中能统一对触发器所处状态的理解,通常把触发器的Q端所处的状态称为触发器的状态.Q=0时,称触发器处于“0”态.Q=1时,触发器处于“1”态。
Qn :前一时刻的状态称为现态(原态)。
Qn+1:后一时刻的状态称为次态(新态)。
R :置“0”端(复位端)S :置“1”端(置位端)时标RS触发器与基本RS触发器的区别是:1) 触发器的工作由CLK脉冲控制。
2) 即使RS端有数据输入,但CLK脉冲高电平未至,触发器仍不工作,只有当CLK脉冲高电平到达时,触发器的状态才会进入工作状态(基本RS则只要RS端数据一到,触发器就工作)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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) X 16+ ( BX ) + (AL ))(2)XCHG :段寄存器和立即数不能作为一个操作数, 8位/16 位操作。
(3) XLAT :表首地址在BX 中, AL 的内容作为某一项到表首的偏移量( 256 字节的表的下标),转换后的结果存放在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)当端口地址W 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) o~7功能:将标志寄存器中的SF、ZF、AF、PF和CF (即低8位)传送至AH寄存器的指定位,空位没有定义。
(2)存标志指令:SAHF ; ( FR)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)J( 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 , A<B ; CF=0, A>B。
③两个符号数的大小用SF®OF判断。
SF®OF=1 , A<B ; SF ®OF=0 , A>B。
JG/JNLE (大于,SF®OF=0 且ZF=0 ) JL/JNGE (小于,SF ®OF=1 且ZF=0 )6.乘法指令MUL/IMUL :完成无符号乘法/带符号(整数)乘法操作。
(1)格式:MUL/IMUL OPRD ; 8 位:(AX) ・(AL )X( OPRD );16 位:(DX ) (AX ) —(AX )X( 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,贝U AH ( DX ) =0; AL.7 (AX.15 ) = 1,贝U 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种指令:逻辑与、或、非、异或和测试指令。