微机原理指令小结

合集下载

32位微机原理指令汇总

32位微机原理指令汇总

注意:::红笔写的为根据课本该写的,可能有错!!!一、数据传输指令作用:它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.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 小于或等于转移.三根据单个条件标志位转移的条件转移指令。

微机原理上机个人总结

微机原理上机个人总结

微机原理上机个人总结
微机原理是一门研究计算机硬件组成和工作原理的课程,通过这门课程的学习和实践,我对计算机的组成结构、指令执行原理和存储器等方面有了更深入的了解。

在上机实践中,我主要学习了计算机的指令系统和指令的编码方式。

通过查阅资料和
实际操作,我了解到指令由操作码和操作数部分构成,操作码决定了指令的功能,操
作数则是指令的操作对象。

而不同的指令集体系结构有不同的指令编码方式,比如
x86指令集采用变长编码方式,ARM指令集则采用定长编码方式。

在实验中,我还学习了存储器的组成和工作原理。

存储器是计算机的重要组成部分,
用于存储程序和数据。

在实验中,我通过配置程序和数据的存储地址,了解了指令和
数据是如何通过存储器进行读写操作的。

同时,我还学习了存储器的层次结构,包括
寄存器、高速缓存、内存和外存等,了解了存储器的访问速度和容量随层次的变化。

此外,在实践中,我还学习了计算机的中断和异常处理。

中断是计算机在运行过程中
被外部事件打断的一种机制,异常则是计算机在执行指令过程中出现错误或特殊情况
时的处理机制。

通过配置中断和异常的处理程序,我了解了中断和异常的处理流程和
机制,以及如何编写中断和异常处理程序。

总的来说,微机原理的上机实践使我对计算机的硬件组成和工作原理有了更深入的了解。

通过对指令系统、存储器和中断等方面的学习和实践,我对计算机的工作流程和
原理有了更清晰的认识。

同时,上机实践也锻炼了我的实际操作能力,提高了我分析
和解决问题的能力。

微机原理学习总结

微机原理学习总结

微机原理学习总结微机原理是电子信息工程和计算机科学与技术专业的核心课程,它是学习计算机硬件基础和微型计算机组成原理的重要环节。

通过学习微机原理,我对计算机的硬件结构、工作原理和运行机制有了更深入的了解,并且能够对计算机系统进行组装、调试和故障排除。

以下是我的微机原理学习总结。

首先,在学习微机原理的过程中,我了解到了计算机硬件系统的基本组成结构。

计算机硬件由中央处理器(CPU)、存储器、输入输出设备和总线组成。

中央处理器是计算机的核心部件,负责执行各种指令和运算。

存储器是存储数据和程序的地方,在计算机中有不同类型的存储器,如主存储器、硬盘、光驱等。

输入输出设备是计算机与外部环境进行信息交互的方式,如键盘、鼠标、显示器等。

总线是连接计算机各个硬件组件的信息传输通道。

其次,学习微机原理还使我了解到了计算机系统的工作原理和运行机制。

计算机系统是按照指令执行有序的运算过程。

计算机按照顺序从存储器中取指令,然后执行指令并操作数据。

存储器中的指令和数据根据地址进行读写,通过总线进行传输。

中央处理器包括运算器和控制器,在执行指令的过程中进行算术运算、逻辑运算、数据传送等操作。

控制器负责控制指令的读取、解码和执行。

再次,在学习微机原理的过程中,我学会了如何组装和调试计算机系统。

学习微机原理的最大特点之一就是实践能力的培养。

在实验中,我亲自动手组装了计算机硬件系统,包括安装CPU、内存、硬盘等。

在组装的过程中,我需要注意硬件的插槽类型和插入方向,确保硬件的正确安装。

组装完成后,还需要对计算机进行调试和测试,检查硬件连接是否正常和操作系统是否能够正常启动。

通过这一过程,我对计算机硬件的结构和工作原理有了更深入的认识。

最后,学习微机原理也使我掌握了一些常见的计算机故障排除方法。

在实践中,我遇到过一些故障问题,如启动时无法进入操作系统、硬盘存储问题等。

通过仔细检查硬件连接和配置,我成功解决了这些问题。

在排除故障过程中,我还学会了一些常用的故障排除工具和技巧,如电子五项分析仪、线路图分析等。

微机原理期末总结

微机原理期末总结

微机原理期末总结微机原理是计算机科学与技术专业中的一门基础课程,它是计算机科学与技术专业学生进一步了解计算机的内部结构、原理和工作过程的基础。

本学期我学习了这门课程,通过学习,我对计算机的原理有了更深入的了解,也对计算机的运行过程和内部结构有了更为清晰的认识。

在本学期的学习中,我们主要学习了如下几个方面的内容:计算机的数制转换、运算器、存储器、控制器以及计算机的输入输出等。

以下是我对这些内容的总结和理解:首先,计算机的数制转换是计算机科学与技术专业学生必须掌握的基础知识。

在学习中,我们学习了二进制、八进制、十进制和十六进制之间的相互转换,掌握了不同进制数的表示方法和运算规则。

数制转换是计算机中数据表示的基础,深入理解数制转换对于我们后续学习计算机内部结构和工作原理非常重要。

其次,我们学习了运算器的原理和结构。

运算器是计算机中的重要组成部分,负责数学运算和逻辑运算。

通过学习,我们了解了运算器的各个部分的功能和工作原理,如算术逻辑单元(ALU)、寄存器等。

同时,我们也学习了运算器的运算规则、运算速度和运算精度等重要概念。

接下来,我们学习了存储器的原理和结构。

存储器是计算机中的重要组成部分,它负责存储程序和数据。

在学习中,我们了解了存储器的各个部分的功能和工作原理,如随机存储器(RAM)、只读存储器(ROM)等。

我们也学习了存储器的存取周期、存储容量和存储层次等重要概念,这对于提高存储器的工作效率和容量非常重要。

然后,我们学习了控制器的原理和结构。

控制器是计算机中的重要组成部分,它负责指挥和控制计算机的各个部件的工作。

在学习中,我们了解了控制器的工作原理,掌握了指令的执行过程和时序规则。

此外,我们还学习了控制器的寄存器、状态位和指令格式等重要概念,这对于理解和设计计算机的指令系统非常重要。

最后,我们学习了计算机的输入输出。

输入输出是计算机与外部世界交互的方式,它涉及到计算机接口的设计与实现。

在学习中,我们了解了输入输出设备的种类和特点,掌握了输入输出接口的工作原理和设计方法。

微机原理指令范文

微机原理指令范文

微机原理指令范文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位)组成,具体的格式和编码方式可以根据不同的微机架构而有所不同。

在微机中,指令是由控制单元根据程序计数器的值读取的。

程序计数器用于存储下一条执行的指令的地址。

控制单元会将指令传递给执行单元进行执行,并根据指令的操作码和操作数执行相应的操作。

微机原理课程总结

微机原理课程总结

微机原理课程总结《微机原理课程总结》回想起来这微机原理课程,还真是一场惊心动魄的知识之旅呢。

刚开始接触的时候,真的感觉像是进入了一个完全陌生的世界,满眼都是新奇但又有点让人不知所措。

先说整体感受吧,这门课就像是一个装满各种零件的大盒子,一开始只看到这些零件散落在那,根本不知道怎么组装起来,甚至都不确定每个零件是干嘛用的。

但是随着课程的逐渐深入,就像把那些零件一个个开始归类,找它们之间的联系,慢慢发现原来这些看似独立的知识其实都是有逻辑关系的。

具体收获可不少呢。

从简单的微机硬件结构的认识开始,像CPU、内存、I/O接口这些基本组件。

我记得最开始记忆CPU的功能和组成的时候,那些寄存器啊,数据通路什么的真是让人头疼。

但是通过不断地画图、理解原理图,就像是把一个混乱的迷宫线路慢慢捋顺了。

还有汇编语言,这是个很神奇的东西,就像一套独特的密码系统。

我以为指令只要机械记忆就好,但实际编写程序时才发现,只有理解了微机底层的运行逻辑,才能正确地组合这些指令。

比如写一个简单的两数相加的程序,不仅要知道ADD指令怎么用,还得考虑数据在寄存器中的存储位置呢。

重要发现挺多的。

我发现微机原理中的很多概念都有一种层层嵌套的感觉。

比如说中断机制,原来它不仅仅是CPU去响应一个外部事件这么简单。

这里面还涉及到中断向量表、中断优先级之类的概念。

而且各个部分之间互相影响。

有一次在理解中断嵌套的时候,一开始怎么都想不明白为什么高优先级的中断能打断低优先级中断正在执行的程序,后来仔细分析了整个中断处理的流程才明白,这里面每个环节就像一个精密机械手表里的小齿轮,一个带动一个才能保证整个系统按照规则运行。

这让我深刻明白了学习微机原理不能一知半解,每个细节都有可能对全局产生影响。

等我理解了这些,现在想想,很多以前觉得突兀的知识点都能串联起来了。

说到反思,就是当初学习的时候有点太急于求成了。

总想着快速把知识背下来,而忽略了对实际原理的深入理解。

微机原理主要知识点小结

微机原理主要知识点小结

概念小结
13、中断类型码(中断向量码):8086/8088可以处理256种不同的中断, 编号为0~255,是识别中断源的唯一标识。 14、中断向量:每个中断服务程序都有一个确定的入口地址,即中断服务 程序的段基址和偏移量。 15、中断向量表(中断入口地址表):所有中断向量集中起来,按中断类 型码从小到大的顺序存放到存储器的某一区域内,即存放中断向量的存储 区。 16、中断向量地址:中断向量 (中断服务程序入口地址) 在中断向量表中的 内存地址,中断向量地址=中断类型码×4。 17、转入中断服务处理程序的过程:(1)取类型码;(2)计算中断向量 的地址;(3)根据向量地址查表,将偏移地址送IP,段基址送CS;(4) 转入中断服务程序,进行中断处理。
❖ 4、串操作指令(不考) 用一条指令实现对一串字符或数据的操作。
改变CS和IP ❖ 5、控制转移指令
JMP(无条件转移); JCC(条件); LOOP((N)E/(N)Z)
❖ 6、处理器控制指令
HLT; NOP
主要指令小结
• 条件转移指令:JCC
CC条件:
CF ZF SF OF PF
(1)直接标志(10条) JC; JE/JZ; JS; JO; JP
立即数
存储器
通用寄存器 AX,BX,CX,DX BP,SP,SI,DI
段寄存器 CS,DS,ES,SS (CS不能作目标)
三句话 1、组间:M、段R、R之间可互传; 2、组内:只有R可内传; 3、立即数:不入段R。
数据 操作
主要指令小结
❖ 1、数据传送指令
❖ 2、算术运算指令
MOV; PUSH,POPFra bibliotek概念小结
7、基本输入输出方式:无条件传输方式、查询传输方式、中断方式、直 接存储器存取方式(DMA)。 8、中断:CPU执行程序时,由于发生了某种随机的事件,引起CPU暂时 停止正在运行的程序,转去执行一段特殊的服务程序,以处理该事件,该 事件处理完后又返回被中止的程序断点处继续执行的过程。 9、中断源:内部或外部的随机事件,引起中断的事件或原因。 10、中断服务(处理)程序:通过执行事先编好的某个特定的程序,来处 理“急件”的程序。 11、中断嵌套:当CPU正在处理一个中断请求,又发生了另一个优先级比 它高的中断请求,CPU暂时中止对前一中断的处理,转而去处理优先级更 高的中断请求,待处理完以后,再继续执行原来的中断处理程序的过程。 12、中断处理的一般过程:中断请求、中断判优、中断响应、中断处理、 中断返回。

微机原理指令汇总

微机原理指令汇总

我现将指令系统中各种助记符的英文全名写出来,各种助记符的记忆就会变得很简单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):附加段寄存器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)×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)当端口地址≤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,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)╳(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 ) ,结果不回送。

相关文档
最新文档