当前位置:文档之家› 微机原理总汇编指令集合

微机原理总汇编指令集合

微机原理总汇编指令集合
微机原理总汇编指令集合

微机原理及接口技术常用编指令

一.寄存器(用来存放存储单元的段地址或偏移地址、参与运算的数据、状态标志等)相

关指令

8086 CPU 中有14个16位的寄存器,这14个寄存器按照功能分为四类:通用寄存器、段寄存器组、指令指针、标志位寄存器FR。

1.通用寄存器(8个)

㈠数据寄存器:

①AX(accumulator):寄存器(累加器)它的由来来源于EAX寄存器(32位):EAX累加寄存器EAX分为高16位和低16位。其中低16位又可单独访问,命名为AX,16位寄存器AX又可单独访问,可分为高、低分别为AH、AL字节个8位。AX常用于运算;在乘法和除法中指定用来存放操作数,另外所有的I/O指令都使用这一个寄存器与外接设备传送数据。

②BX(base):基址寄存器,寄存器(基址寄存器)它的由来来源于EBX寄存器(32位):EB X累加寄存器EBX分为高16位和低16位。其中低16位又可单独访问,命名为BX,16位寄存器BX又可单独访问,可分为高、低分别为BH、BL字节个8位。BX常用于地址索引,查表和间接寻址时存放基地址。

③CX(count):计数寄存器,寄存器(计数寄存器)它的由来来源于ECX寄存器(32位):EC X累加寄存器ECX分为高16位和低16位。其中低16位又可单独访问,命名为CX,16位寄存器CX又可单独访问,可分为高、低分别为CH、CL字节个8位。常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.

④DX(data):数据寄存器,寄存器(数据寄存器)它的由来来源于EDX寄存器(32位):ED X累加寄存器EDX分为高16位和低16位。其中低16位又可单独访问,命名为DX,16位寄存器DX又可单独访问,可分为高、低分别为DH、DL字节个8位。常用于数据传递。

㈡指针和变址寄存器

这些寄存器存放的是段的偏移量,用来形成操作数的存储地址。

SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置,SP指向栈顶。BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置,BP指向栈的任何一单元。

SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针。

DI(Destination Index):目的变址寄存器,可用来存放相对于 ES 段之目的变址指针,指令中SI对应DS , DI对应ES不能互换。

2.指令指针IP(Instruction Pointer)(1个)

16位的指令指针IP,用来存放下一条指令在CS(代码段寄存器)中的偏移量。当发现中断或调用时BIU【(Bus Interface Unit)总线部件,功能是取指令、读操作数和送出结果】自动将IP的偏移量压入堆栈保存,并调整IP的容。程序不能直接访问IP,但可以通过中断、转移等指令来修改IP的容。

3.段寄存器(Segment Register)(4个)

为了运用所有的存空间,8086设定了四个段寄存器,专门用来保存段地址:

CS(Code Segment):代码段寄存器;存放当前执行的指令在存中的地址段。CS和IP决定了当前指令的逻辑地址。

DS(Data Segment):数据段寄存器;存放当前数据段的段地址。DS和SI决定了字符串操作时目的操作数的地址。

SS(Stack Segment):堆栈段寄存器;存放当前数据段的堆栈地址,SS与SP决定了当前堆栈的顶部,所谓堆栈是以“后进后出”规则保存信息的一种存储机构。8086CPU的堆栈段地址在SS寄存器中,堆栈当前偏移地址在SP寄存器中,SP的初值代表了堆栈区的大小。

ES(Extra Segment):附加段寄存器。附加段是一个附加的数据段。ES和DI决定了字符串操作时目的操作数的地址。

4.标志位寄存器FR(Flag Regise)

8086CPU设置了一个16位的标志寄存器FR,用来显示微机的运行结果或控制机制操作,规定了其中的9位,标志的设置,FR的九个标志按作用可分为两大类:一类叫状态标志,用来表示运算结果的特征,他们是:CF、PF、AF、ZF、SF、OF。另一类叫做控制标志,用来控制CPU的操作,它们是:IP、DF、TF。

CF(carrier flag)进位标志位:运算中高四位中发生进位或错位时,CF=1;否则CF=0;STC 指令可置CF=1,CLR指令对CF求反;循环指令也会影响该标志位。

DF(direction flag)方向标志位:控制串指令对字符串处理的方向。DF=0时,变址地址指针SI、DI作增量操作,即由低地址向高地址进行串操作,字节操作增量为1,字操作增量为2;DF=1时,作减量操作,即由高地址向低地址进行串操作。STD指令可置DF=1,CLD指令置DF=0。

OF(overflow flag)溢出标志位:当运算结果超出机器的的表示围时OF=1;否则为0;存在以下几种情况可称之为溢出【即使OF=1】两个正数相加得到一个负数;l两个负数相加得到一个正数;两个相同符号的数相乘得到一个负数;两个异号的数相乘得到一个正数。

PF(parity flag) 奇偶校验位:当运算结果的低8位中1的个数为偶数时,PF=1;否则PF=0;

AF(auxiliary flag)辅助进位标志:在运算结果的低4位向高4位有进位(加法)或有错位(减法)时,AF=1否则AF=0.该标志一般在BCD码运算中作为是否进行十进制调整的判断。

ZF(zero flag)零标志位:结果为0,ZF=1,否则ZF=0.

SF(sign flag)符号标志位:在进行有符号运算数的算术运算,当运算结果为负时SF=1,否则为0。

IF(interrupt flag)中断允许标志位:控制可屏蔽中断的标志。当IF=1时,允许CPU响应屏蔽中断请求;当IF=0时,禁止响应。

TF(trap flag)陷阱标志位:这是为程序调试而提供的CPU单步工作方式。TF=1时,CPU 每执行完一个条指令就产生一个部中断,以便对每一个指令的执行结果进行跟踪调查。

二、数据传送指令

1、数据传送指令

⑴通用数据传送指令

MOV(Move)数据传送。

Mov指令形式【MOV OPRD1目的操作数 OPRD2源操作数】它允许在CPU的寄存器之间、存储器和寄存器之间传送字节和字数据,也可以将立即数传送到寄存器或存储器中。功能即:将源操作数送入目的操作数中,源操作数保持不变。

以下注意点:立即数、代码段寄存器CS(代码段寄存器)只能做源操作数;IP(指令指针)寄存器不能作源操作数或目的操作数;MOV指令不能在两个存储单元之间直接传递数据,也不能在两个段寄存器之间直接传送数据;两个操作数的类型属性要一致。

堆栈操作指令POP(Pop from the stack)、PUSH(Push onto the stack)

堆栈是以“先进后出”方式工作的一个存储区,栈区的段地址由SS寄存器的容确定,而栈顶位置由堆栈指针SP寄存器的容来确定。堆栈操作指令包括入栈(PUSH)和出栈指令(POP)指令两类。这两条指令必须以字为操作,不能采用立即寻址方式。

入栈操作:PUSH OPRD ; OPRD为源操作数。功能将源操作数压入堆栈。

源操作数可以是16位通用寄存器、段寄存器或存储器中的数据字。堆

栈是以“先进后出|”的原则工作,栈区的段地址由SS寄存器的容确定。

每一次执行PUSH的步骤为:首先修改SP的值,SP=SP-2;低位字节地

址在较低地址单位【SP】=OPRD低8位;高字节放在较高地址单位,【SP+1】

=OPRD高八位。由于堆栈操作都是以字为单位进行的,所以SP总是指

向偶地址单元。

出栈操作:POP OPRD ; OPRD为目的操作数。将当前SP所指向的堆栈顶部的一个字送到指定目的操作数中。目的操作数可以是16位通用寄存器、

段地址寄存器或存储单元,但CS不能做目的操作数。每执行一次POP

指令后,SP=SP+2,即SP向高地址方向移动,指向栈顶。

数据交换指令XCGH(Exchange)

XCGH OPRD1【目的操作数】 OPRD2【源操作数】把一个字节或一个字的源操作数和目的操作数相互交换。交换能在通用寄存器与累加器之间、通用寄存器与存储器之间进行。但段寄存器和立即数不能作为一个操作数,也不能在累加器之间进行。

2.累加器专用传送指令

字节交换指令XLAT(Translate)

XLAT [转换表] ;换码。用查表方式将一种代码。XLAT指令有两种格式,第一种格式中的“转换表”为表格的首地址,一般为符号表示,以提高程序的可读性,但它也可以省略,即用第二种格式。使用XLAT指令时,要求BX寄存器指向该表的首地址,AL中为表中某一项与表格首地址之间的偏移量。指令执行时,会将BX和AL中的值相加,把得到的值作为地址,然后将此地址所得对应的存储器单元中的数值读送到AL中去。该指令是通过查表方式来完成翻译功能的。因此,在执行该指令之前,必须在存中建立好一翻译表,该表的最大容量为256个字节。

输入输出指令IN(input)/OUT(output)

输入指令格式:

IN AL,端口地址[N] ;

IN AX,端口地址[N+1][N];

IN AL,DX;

IN AX,DX;

说明:从I/O端口输入数据至AL/AX,允许一个字节由一个输入端口传送到AL中,或者把一个字由一个输入端口传送到AX中,若端口地址超过256(00~FFH),则需用DX寄存器来保存该端口地址,这样用DX作端口地址时,最多可寻址64K(0000~FFFFH)。

输出指令格式:

OUT AL,端口地址[N] ;

OUT AX,端口地址[N+1][N];

OUT DX , AL;

OUT DX, AX,

说明:将AL或AX的容输出至I/O端口。可将AL和AX中的容传送到一个输出端口,端口寻址方式与IN指令相同。

3.有效地址传送寄存器指令

LEA(Load effective address) 有效地址送寄存,格式:LEA OPRD1 , OPRD 2。把源操作数的偏移地址传送到目的操作数。

LDS(Load DS with Pointer) 指针送寄存器和DS。格式:LDS OPRD1,OPRD2。

功能:完成一个地址指针的传送。地址指针包括偏移地址和段地址,它们已分别

存放在由源操作数给出最低地址的四个连续存储单元中(即存放了一个32位的双

子数据),指令可将该数据的高16位(段地址)送入到DS,低16位(偏移地址)

送入目的操作数所指出的一个16位通用寄存器或者是变址寄存器。

LES(Load ES with Pointer) 指针送寄存器和ES。格式:LES OPRD1,OPRD2功能:这条指令除将地址指针的段地址送入ES外,与LDS类似。

4.标志寄存器传送指令

LAHF(Load AH with flags) 标志寄存器8位送AH。将标识为位低8位的的数据传至AH寄存器

SAHF(store AH into flags) AH送标志寄存器8位。该条指令与LAHF 指令的操作相反,可以将寄存器AH的容送至标志寄存器的低8位。

PUSHF(push the flags) 标志进栈。将标志寄存器的容压

入堆栈顶部,同时修改堆栈指针,但不影响标志位。

POPF(pop the flags) 标志出栈。把当前堆栈顶部

的一个字,传送到标志寄存器,同时修改堆栈指针,影响标志位。

二、算术指令

1.加法指令

ADD(add)加法格式:ADD OPRD1,OPRD2。功能:完成两个操作数相加,结果送至目的操作数OPRD1,源操作数OPRD2不变。目的操作数可以是通用寄存器以

及存储器,源操作数可以是通用寄存器、存储器或立即数。这条指令对

标志位CF、OF、PF、SF、ZF和AF有影响。注意:源操作数和目的操作

数不能同时为存储器,而且它们的类型必须一致,即同为字或字节。ADC (add with carry) 带进位的加法指令。格式ADC OPRD1,OPRD2.功能这条指令类似,只是在两个操作数相加时,要把进位标志位CF的现行值加上去,结果送

至目的操作数OPRD1。ADC指令主要用于多字节运算中。这条指令对标志

位的影响与ADD相同。

INC (increment) 自增指令。格式:INC OPRD。功能:完成对指定的操作数OPRD加1,然后返回操作数。此指令主要用于在循环程序中修改地址指针和循环

次数等。这条指令执行结果影响标志位AF、OF、PF、SF和ZF,对地址

标志位CT没有影响。

2.减法指令

SUB(subtract)

减法。格式:SUB OPRD1,OPRD2功能:完成两个操作数相减,从OPRD1中减去OPRD2,结果放在OPRD1中即目的数中。

SBB(subtract with borrow) 带借位减法。格式:SBB OPRD1,OPRD2,指令功能,两个数相减时,发生借位现象,还要减去

借位标志位CF的当前值,本指令对标志位AF、CF、OF、SF、PF、ZF

都有影响。

DEC(Decrement) 减1。

格式DEC OPRD。功能:对指令的操作数减去1,然后送回此操作数

OPRD中。

CMP(Compare) 比较。比较指令主要是比较两个数的大小关系,在比较指令之后,可

根据CF、ZF、OF等标志位来判断两者大小关系,只改变标志位,不改

变目的操作数。

3.乘法指令

MUL(Unsigned Multiple) 无符号数乘法。格式:MULL OPRD ;OPRD 为源操作数。

A) 8位乘法,容放在AX

B) 16位乘法,容放在DX(高8位)AX(低8位)

IMUL(Signed Multiple) 带符号数乘法。格式:IMUL OPRD;

OPRD为源操作数。

乘法不允许使用立即数,除非是带符号的立即数乘法。

4.除法指令

DIV(Unsigned divide) 无符号数除法

IDIV(Signed divide) 带符号数除法,该指令认为最高位为符号位。

在进行除法运算中,在字节运算时被除数在AX中,运算结果商在AL中,余数在AH中。字运算时被除数为DX;AX构成的32位数,运算结果商在AX中,余数在DX中。

A) 8位商AL余数AH

B) 16位商AX余数DX

C) 除以0,或者溢出均错误

5.符号扩展指令

CBW(Convert byte to word) 字节转换为字(有符号数)格式:CBW,将

AL中字节数的符号位扩展到AH的各个位,形成AX中的数据。

CWD(Contert word to double word) 字转换为双字(有符号数)格式:CWD,将AX

中字数据的符号位扩展到DX中的各个位,形成DX和AX中的

双字数据。

6.BCD调节指令【此处的BCD是指数字的表现形式采用的是BCD码即

16进制】

组合BCD数格式:DAA或DAS 功能:组合数BCD数的加法/减调整指令,半字节1位BCD 相加/减,超过9或有进位/有错位,要加6进行调整/减6进行调整。若

低半字节调整后有进位,则高半字节在做,加6进行调整。

分离BCD 数格式AAA :分离BCD数的加法调整指令,只取低半字节,其余同DAA指令。

格式 AAS 分离BCD数的减法调成指令,只取低半字节,其余同DAS指令。

格式AAM 分离BCD数的乘法调整指令,两个BCD数相乘,结果在AL中,除以10后的商在AH中,余数在AL中。

格式 AAD 分离BCD数的除法调整指令,先将两个BCD码转换为一个字节二进

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

微机原理知识点总结

第一章概述 1.IP核分为3类,软核、硬核、固核。特点对比 p12 第二章计算机系统的结构组成与工作原理 1. 计算机体系结构、计算机组成、计算机实现的概念与区别。P31 2. 冯·诺依曼体系结构: p32 硬件组成五大部分 运算器、存储器、控制器、输入设备、输出设备,以存储器为中心 信息表示:二进制计算机内部的控制信息和数据信息均采用二进制表示,并存放在同一个存储器中。 工作原理:存储程序/指令(控制)驱动编制好的程序(包括指令和数据)预先经由输入设备输入并保存在存储器中 3.接口电路的意义 p34 第二段 接口一方面应该负责接收、转换、解释并执行总线主设备发来的命令,另一方面应能将总线从设备的状态或数据传送给总线主设备,从而完成数据交换。 4.CPU组成:运算器、控制器、寄存器。P34 运算器的组成:算术逻辑单元、累加器、标志寄存器、暂存器 5.寄存器阵列p35 程序计数器PC,也称为指令指针寄存器。存放下一条要执行指令的存放地址。 堆栈的操作原理应用场合:中断处理和子程序调用 p35最后一段 6. 计算机的本质就是执行程序的过程p36 7. 汇编语言源程序——汇编——>机器语言程序 p36 8. 指令包含操作码、操作数两部分。执行指令基本过程:取指令、分析指令、执行指令。简答题(简述各部分流程)p37 9. 数字硬件逻辑角度,CPU分为控制器与数据通路。P38 数据通路又包括寄存器阵列、ALU、片上总线。 10. 冯·诺依曼计算机的串行特点p38 串行性是冯·诺依曼计算机的本质特点。表现在指令执行的串行性和存储器读取的串行性。也是性能瓶颈的主要原因。 单指令单数据 11. CISC与RISC的概念、原则、特点。对比着看 p39、40

微机原理之名词解释

CPU:中央处理器,是一台计算机的运算核心和控制核心 EU:执行部件,负责指令的译码、执行和数据的运算 BIU:总线接口部件,管理CPU与系统总线的接口,负责CPU对存储器和外设进行访问 IP:指令指针寄存器,指示主存储器指令的位置 SP:堆栈指示寄存器,指示堆栈栈顶的位置(偏移地址) CS:代码段寄存器,指示当前代码段的起始位置 DS:数据段寄存器,指示当前数据段的起始位置 SS:堆栈段寄存器,指示当前对战短的起始位置 时钟周期:CLK时钟信号的周期,是CPU的最小时间单位,也叫T状态 总线周期:CPU通过系统总线对存储器或接口进行一次访问的时间 指令周期:完整执行一条指令所用时间 段寄存器:是因为对内存的分段管理而设置的,8086/8088具有4个16位段寄存器:CS、DS、SS、ES 字节:相邻八位二进制数 物理地址:1MB存储区域中某一单元的实际地址 逻辑地址:由段基地址和偏移地址(偏移量)组成,存储单元的地址可以用段基地址和段内偏移量来表示,段基地址确定它所在的段居于整个存储空间的位置,偏移量确定它在段内的位置,这种地址表 示方式称为逻辑地址 BCD码:用四位二进制数表示一位十进制的编码 ASCII码:由8位二进制数组成,用来表示26个英文大小写字母以及一些特殊符号,便于计算机的识别的一种编码 堆栈:一种数据项按序排列的数据结构,采用“先进后出”或“后进先出”的存取操作方式 汇编程序:把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序 指示性语句:不可执行语句,汇编时不产生目标代码,用于指示汇编程序如何编译源程序 指令性语句:可执行语句,在汇编中要产生相应的目标代码,CPU根据这些代码执行相应操作 伪指令:即指示性语句 OFFSET:返回变量或标号的偏移地址 ASSUME:明确段寄存器与逻辑段之间的关系 SEGMENT:定义一个逻辑段,并给逻辑段赋予一个段名 ORG:控制位置计数器,把表达式的值赋给当前位置计数器$ RAM:随机存取存储器,CPU可对RAM的内容进行随机的读写访问 ROM:只读存储器,存储器的内容只能随机的读出而不能写入 EPROM:用紫外光擦除,擦除后可编程,允许用户多次擦除和编程的只读存储器 接口:CPU和存储器、外部设备或者两种外部设备,或者两种机器之间通过系统总线进行连接的逻辑部件(或称电路),它是CPU与外界进行信息交换的中转站,是CPU与外界交换信息的通道 I/O 端口:输入输出端口,用于CPU和外部设备连接和数据交换的接口,能被指令直接寻址的输入输出口 I/O 端口独立编址:从存储空间划出一部分地址空间给I/O设备,把I/O接口中的端口当作存储器单元一样进行访问,不设置专门的I/O指令的编址方式,也称存储器映射编址 I/O 端口统一编址:对接口中的端口单独编址而不占用存储空间,使用专门的I/O指令对端口进行操作的编址方式,也叫I/O映射编址 总线:连接两个以上数字系统元器件的信息通路,是传递信息的一组共用信号线(导线) 中断:指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。 中断源:引起中断的原因或发出中断申请的来源 软件中断:CPU执行指令引起的中断

8086汇编指令手册

8086汇编指令手册 一、数据传输指令 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD 把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内容装入标志寄存器.

微机原理指令合集

地址总线:AB(单向输出) 数据总线:DB(双向总线) 控制总线:CB(输出输入或双向) 4个16位数据寄存器:AX累加器.BX基址寄存器.CX计数寄存器.DX数据寄存器 高八位记作:AH.BH.CH.DH低八位ALBLCLDL 指针寄存器:SP 堆栈指针寄存器BP基址指针寄存器 变址寄存器:SI 源变址寄存器(源操作数偏移地址)DI 目的变址寄存器 进位标志位:CF最高位 奇偶标志位:PF 低8位1的个数为偶时为1 辅助进位标志位:AF低4位向高4为有进位时 零标志位:ZF算术逻辑运算为零时为1 符号标志位:SF运算结果最高位为1时为1 溢出标志位:OF结果超出有符号数补码表示的范围时为1 跟踪标志位:TF单步中断方式逐条检查 方向标志位:DF 中断允许标志位:IF为1时CPU可以响应可屏蔽中断(INTR)请求 立即数寻址:MOV BL,5BH 寄存器寻址:MOV DS,AX 存储器寻址: 直接寻址:MOV AX,[2000H] 寄存器间接寻址:MOV AX,[BP] 操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址 寄存器相对寻址:MOV AX,COUNT[SI] 例:MOV BP:[DI+45H] 基址加变址寻址:MOV AX, [SI+BP] 相对基址加变址寻址指令MOV AX, [SI+BP+1234H] 指令 数据传送指令MOV dst,src 交换指令:XCHG dst,src 查表指令:XLA T[表首址]DS:(BX+AL)给AL 堆栈传送指令:PUSH src 取偏移地址指令;LEA dst,src 指针送寄存器和DS:LDS dst,src 指针送寄存器和ES:LES dst,src 标志传送指令:LAHF SAHF PUSHF POPF 输入、输出指令:IN.OUT 加法指令:ADD dst,src 带进位加法指令:ADC dst,src (CF也要加) 加1指令:INC dst 减法指令:SUB dst,src 带借位减法指令:SBB dst,src(也要减CF) 减1指令:DEC src111 求补指令:NEG src (0减src)比较指令:CMP dst,src(相减但不送回目的操作数,结果都不变) 乘法指令:MUL src 字节操作数:AL*src给AX 字操作数:AX*src给AX 带符号数乘法指令:IMUL src 字运算AX字节运算AL 除法指令:DIV src 字节将AX/src给AL余数该AH 字将(DX,AX)/src给AX 余数给DX 带符号数除法指令:IDIV src CBW 将字节转换为字CWD将字转换为字节 逻辑运算: 逻辑与:AND dst,src 逻辑或:OR dst,src 非:NOT dst 异或:XOR dst,src 测试:TEST dst,src(测试判断某些位知否同时为0) 移位指令 算术左移指令SAL dst, CL;移位位数 逻辑左移指令SHL dst ,CL;移位位数 算术右移指令:SAR dst ,CL;移位位数 逻辑右移指令:SHR dst,CL ;移位位数 循环移位指令: 循环左移指令:ROL dst,CL;移位位数 循环右移指令:ROR dst,CL;移位位数 带进位循环左移:RCL dst,CL;移位位数 带进位循环右移:RCR dst,CL;移位位数 串操作指令: 串传送指令:MOVS/W 串比较指令:CMPSB/W 串搜索指令:SCASB/W 取串指令:LODS/W 存串指令:STOSB/W 重复前缀指令:REP SOPR 重复执行REP指令后紧跟着的一个串操作指令,知直到CX寄 存器中的值为0 REPE/REPZ执行REPE/REPZ后紧跟的一个串操作指令,当相等、为0时重复,直到CX=0/ZF=0 REPNE/REPNZ 执行REPNE/REPNZ后紧跟的串操作指令当不为0、不相等时重复,直到CX=0/ZF=0 转移指令: 远程转移:JMP FAR PTR OPRD(IP=IP+16位移量) 近程转移:JMP NEAR PTR OPRD (IP=IP+8位移量)段内间接转移:JMP reg16 JMP men16 (IP)←reg16或men16 段间间接转移:JMP DWORD PTR [BX+SI] 调用和返回指令: 段内直接调用:CALL dst(SP=SP-2,SP+1,IP指向SP,IP=IP+16 段内直接调用:CALL dst (同,同,EA指向IP) 段间直接调用:CALL dst(SP=SP-2,SP+1,CS指向SP,SP=SP-2,SP+1,IP指向SP, 偏移地址指向IP,段地址指向CS) 段间间接调用:CALL dst 段内返回:RET(IP=SP+1,SP,SP=SP+2) 段内带立即数返回:RET n 循环控制指令: LOOP OPRD(CX=CX-1,若CX≠0则循环LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则循环) LOOPZ/LOOPE OPRD 地址总线:AB(单向输出) 数据总线:DB(双向总线) 控制总线:CB(输出输入或双向) 4个16位数据寄存器:AX累加器.BX基址寄存器.CX计 数寄存器.DX数据寄存器 高八位记作:AH.BH.CH.DH低八位ALBLCLDL 指针寄存器:SP 堆栈指针寄存器BP基址指针寄存器 变址寄存器:SI 源变址寄存器(源操作数偏移地址)DI 目的变址寄存器 进位标志位:CF最高位 奇偶标志位:PF 低8位1的个数为偶时为1 辅助进位标志位:AF低4位 向高4为有进位时 零标志位:ZF算术逻辑运算为零时为1 符号标志位:SF运算结果最高位为1时为1 溢出标志位:OF结果超出有符号数补码表示的范围时为 1 跟踪标志位:TF单步中断方式逐条检查 方向标志位:DF 中断允许标志位:IF为1时CPU可以响应可屏蔽中断 (INTR)请求 立即数寻址:MOV BL,5BH 寄存器寻址:MOV DS,AX 存储器寻址: 直接寻址:MOV AX,[2000H] 寄存器间接寻址:MOV AX,[BP] 操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址 寄存器相对寻址:MOV AX,COUNT[SI] 例: MOV BP:[DI+45H] 基址加变址寻址:MOV AX, [SI+BP] 相对基址加变址寻址指令MOV AX, [SI+BP+1234H] 指令 数据传送指令MOV dst,src 交换指令:XCHG dst,src 查表指令:XLA T[表首址]DS:(BX+AL)给AL 堆栈传送指令:PUSH src 取偏移地址指令;LEA dst,src 指针送寄存器和DS:LDS dst,src 指针送寄存器和ES:LES dst,src 标志传送指令:LAHF SAHF PUSHF POPF 输入、输出指令:IN.OUT 加法指令:ADD dst,src 带进位加法指令:ADC dst,src (CF也要加) 加1指令:INC dst 减法指令:SUB dst,src 带借位减法指令:SBB dst,src(也要减CF) 减1指令:DEC src111 求补指令:NEG src (0减src) 比较指令:CMP dst,src(相减但不送回目的操作数,结果 都不变) 乘法指令:MUL src 字节操作数:AL*src给AX 字操作 数:AX*src给AX 带符号数乘法指令:IMUL src 字运算AX字节运算AL 除法指令:DIV src 字节将AX/src给AL余数该AH 字 将(DX,AX)/src给AX 余数给DX 带符号数除法指令:IDIV src CBW 将字节转换为字CWD将字转换为字节 逻辑运算: 逻辑与:AND dst,src 逻辑或:OR dst,src 非:NOT dst 异或:XOR dst,src 测试:TEST dst,src(测试判断某些位知否同时为0) 移位指令 算术左移指令SAL dst, CL;移位位数 逻辑左移指令SHL dst ,CL;移位位数 算术右移指令:SAR dst ,CL;移位位数 逻辑右移指令:SHR dst,CL ;移位位数 循环移位指令: 循环左移指令:ROL dst,CL;移位位数 循环右移指令:ROR dst,CL;移位位数 带进位循环左移:RCL dst,CL;移位位数 带进位循环右移:RCR dst,CL;移位位数 串操作指令: 串传送指令:MOVS/W 串比较指令:CMPSB/W 串搜索指令:SCASB/W 取串指令:LODS/W 存串指令:STOSB/W 重复前缀指令:REP SOPR 重复执行REP指令后紧跟着 的一个串操作指令,知直到CX寄 存器中的值为0 REPE/REPZ执行REPE/REPZ后紧跟的 一个串操作指令,当相等、为0时重复,直到CX=0/ZF=0 REPNE/REPNZ 执行REPNE/REPNZ后紧跟的串操作指 令当不为0、不相等时重复,直到CX=0/ZF=0 转移指令: 远程转移:JMP FAR PTR OPRD(IP=IP+16位移量) 近程转移:JMP NEAR PTR OPRD (IP=IP+8位移量) 段内间接转移:JMP reg16 JMP men16 (IP)←reg16或men16 段间间接转移:JMP DWORD PTR [BX+SI] 调用和返回指令: 段内直接调用:CALL dst(SP=SP-2,SP+1,IP指向 SP,IP=IP+16 段内直接调用:CALL dst (同,同,EA指向IP) 段间直接调用:CALL dst(SP=SP-2,SP+1,CS指向 SP,SP=SP-2,SP+1,IP指向SP, 偏移地址指向IP,段地址指向CS) 段间间接调用:CALL dst 段内返回: RET(IP=SP+1,SP,SP=SP+2) 段内带立即数返回:RET n 循环控制指令: LOOP OPRD(CX=CX-1,若CX≠0则循环 LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则 循环) LOOPZ/LOOPE OPRD 地址总线:AB(单向输出) 数据总线:DB(双向总线) 控制总线:CB(输出输入或双向) 4个16位数据寄存器:AX累加器.BX基址寄存器.CX计 数寄存器.DX数据寄存器 高八位记作:AH.BH.CH.DH低八位ALBLCLDL 指针寄存器:SP 堆栈指针寄存器BP基址指针寄存器 变址寄存器:SI 源变址寄存器(源操作数偏移地址)DI 目的变址寄存器 进位标志位:CF最高位 奇偶标志位:PF 低8位1的个数为偶时为1 辅助进位标志位:AF低4位 向高4为有进位时 零标志位:ZF算术逻辑运算为零时为1 符号标志位:SF运算结果最高位为1时为1 溢出标志位:OF结果超出有符号数补码表示的范围时为 1 跟踪标志位:TF单步中断方式逐条检查 方向标志位:DF 中断允许标志位:IF为1时CPU可以响应可屏蔽中断 (INTR)请求 立即数寻址:MOV BL,5BH 寄存器寻址:MOV DS,AX 存储器寻址: 直接寻址:MOV AX,[2000H] 寄存器间接寻址:MOV AX,[BP] 操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址 寄存器相对寻址:MOV AX,COUNT[SI] 例: MOV BP:[DI+45H] 基址加变址寻址:MOV AX, [SI+BP] 相对基址加变址寻址指令MOV AX, [SI+BP+1234H] 指令 数据传送指令MOV dst,src 交换指令:XCHG dst,src 查表指令:XLA T[表首址]DS:(BX+AL)给AL 堆栈传送指令:PUSH src 取偏移地址指令;LEA dst,src 指针送寄存器和DS:LDS dst,src 指针送寄存器和ES:LES dst,src 标志传送指令:LAHF SAHF PUSHF POPF 输入、输出指令:IN.OUT 加法指令:ADD dst,src 带进位加法指令:ADC dst,src (CF也要加) 加1指令:INC dst 减法指令:SUB dst,src 带借位减法指令:SBB dst,src(也要减CF) 减1指令:DEC src111 求补指令:NEG src (0减src) 比较指令:CMP dst,src(相减但不送回目的操作数,结果 都不变) 乘法指令:MUL src 字节操作数:AL*src给AX 字操作 数:AX*src给AX 带符号数乘法指令:IMUL src 字运算AX字节运算AL 除法指令:DIV src 字节将AX/src给AL余数该AH 字 将(DX,AX)/src给AX 余数给DX 带符号数除法指令:IDIV src CBW 将字节转换为字CWD将字转换为字节 逻辑运算: 逻辑与:AND dst,src 逻辑或:OR dst,src 非:NOT dst 异或:XOR dst,src 测试:TEST dst,src(测试判断某些位知否同时为0) 移位指令 算术左移指令SAL dst, CL;移位位数 逻辑左移指令SHL dst ,CL;移位位数 算术右移指令:SAR dst ,CL;移位位数 逻辑右移指令:SHR dst,CL ;移位位数 循环移位指令: 循环左移指令:ROL dst,CL;移位位数 循环右移指令:ROR dst,CL;移位位数 带进位循环左移:RCL dst,CL;移位位数 带进位循环右移:RCR dst,CL;移位位数 串操作指令: 串传送指令:MOVS/W 串比较指令:CMPSB/W 串搜索指令:SCASB/W 取串指令:LODS/W 存串指令:STOSB/W 重复前缀指令:REP SOPR 重复执行REP指令后紧跟着 的一个串操作指令,知直到CX寄 存器中的值为0 REPE/REPZ执行REPE/REPZ后紧跟的 一个串操作指令,当相等、为0时重复,直到CX=0/ZF=0 REPNE/REPNZ 执行REPNE/REPNZ后紧跟的串操作指 令当不为0、不相等时重复,直到CX=0/ZF=0 转移指令: 远程转移:JMP FAR PTR OPRD(IP=IP+16位移量) 近程转移:JMP NEAR PTR OPRD (IP=IP+8位移量) 段内间接转移:JMP reg16 JMP men16 (IP)←reg16或men16 段间间接转移:JMP DWORD PTR [BX+SI] 调用和返回指令: 段内直接调用:CALL dst(SP=SP-2,SP+1,IP指向 SP,IP=IP+16 段内直接调用:CALL dst (同,同,EA指向IP) 段间直接调用:CALL dst(SP=SP-2,SP+1,CS指向 SP,SP=SP-2,SP+1,IP指向SP, 偏移地址指向IP,段地址指向CS) 段间间接调用:CALL dst 段内返回: RET(IP=SP+1,SP,SP=SP+2) 段内带立即数返回:RET n 循环控制指令: LOOP OPRD(CX=CX-1,若CX≠0则循环 LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则 循环) LOOPZ/LOOPE OPRD 地址总线:AB(单向输出) 数据总线:DB(双向总线) 控制总线:CB(输出输入或双向) 4个16位数据寄存器:AX累加器.BX基址寄存器.CX计 数寄存器.DX数据寄存器 高八位记作:AH.BH.CH.DH低八位ALBLCLDL 指针寄存器:SP 堆栈指针寄存器BP基址指针寄存器 变址寄存器:SI 源变址寄存器(源操作数偏移地址)DI 目的变址寄存器 进位标志位:CF最高位 奇偶标志位:PF 低8位1的个数为偶时为1 辅助进位标志位:AF低4位 向高4为有进位时 零标志位:ZF算术逻辑运算为零时为1 符号标志位:SF运算结果最高位为1时为1 溢出标志位:OF结果超出有符号数补码表示的范围时为 1 跟踪标志位:TF单步中断方式逐条检查 方向标志位:DF 中断允许标志位:IF为1时CPU可以响应可屏蔽中断 (INTR)请求 立即数寻址:MOV BL,5BH 寄存器寻址:MOV DS,AX 存储器寻址: 直接寻址:MOV AX,[2000H] 寄存器间接寻址:MOV AX,[BP] 操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址 寄存器相对寻址:MOV AX,COUNT[SI] 例: MOV BP:[DI+45H] 基址加变址寻址:MOV AX, [SI+BP] 相对基址加变址寻址指令MOV AX, [SI+BP+1234H] 指令 数据传送指令MOV dst,src 交换指令:XCHG dst,src 查表指令:XLA T[表首址]DS:(BX+AL)给AL 堆栈传送指令:PUSH src 取偏移地址指令;LEA dst,src 指针送寄存器和DS:LDS dst,src 指针送寄存器和ES:LES dst,src 标志传送指令:LAHF SAHF PUSHF POPF 输入、输出指令:IN.OUT 加法指令:ADD dst,src 带进位加法指令:ADC dst,src (CF也要加) 加1指令:INC dst 减法指令:SUB dst,src 带借位减法指令:SBB dst,src(也要减CF) 减1指令:DEC src111 求补指令:NEG src (0减src) 比较指令:CMP dst,src(相减但不送回目的操作数,结果 都不变) 乘法指令:MUL src 字节操作数:AL*src给AX 字操作 数:AX*src给AX 带符号数乘法指令:IMUL src 字运算AX字节运算AL 除法指令:DIV src 字节将AX/src给AL余数该AH 字 将(DX,AX)/src给AX 余数给DX 带符号数除法指令:IDIV src CBW 将字节转换为字CWD将字转换为字节 逻辑运算: 逻辑与:AND dst,src 逻辑或:OR dst,src 非:NOT dst 异或:XOR dst,src 测试:TEST dst,src(测试判断某些位知否同时为0) 移位指令 算术左移指令SAL dst, CL;移位位数 逻辑左移指令SHL dst ,CL;移位位数 算术右移指令:SAR dst ,CL;移位位数 逻辑右移指令:SHR dst,CL ;移位位数 循环移位指令: 循环左移指令:ROL dst,CL;移位位数 循环右移指令:ROR dst,CL;移位位数 带进位循环左移:RCL dst,CL;移位位数 带进位循环右移:RCR dst,CL;移位位数 串操作指令: 串传送指令:MOVS/W 串比较指令:CMPSB/W 串搜索指令:SCASB/W 取串指令:LODS/W 存串指令:STOSB/W 重复前缀指令:REP SOPR 重复执行REP指令后紧跟着 的一个串操作指令,知直到CX寄 存器中的值为0 REPE/REPZ执行REPE/REPZ后紧跟的 一个串操作指令,当相等、为0时重复,直到CX=0/ZF=0 REPNE/REPNZ 执行REPNE/REPNZ后紧跟的串操作指 令当不为0、不相等时重复,直到CX=0/ZF=0 转移指令: 远程转移:JMP FAR PTR OPRD(IP=IP+16位移量) 近程转移:JMP NEAR PTR OPRD (IP=IP+8位移量) 段内间接转移:JMP reg16 JMP men16 (IP)←reg16或men16 段间间接转移:JMP DWORD PTR [BX+SI] 调用和返回指令: 段内直接调用:CALL dst(SP=SP-2,SP+1,IP指向 SP,IP=IP+16 段内直接调用:CALL dst (同,同,EA指向IP) 段间直接调用:CALL dst(SP=SP-2,SP+1,CS指向 SP,SP=SP-2,SP+1,IP指向SP, 偏移地址指向IP,段地址指向CS) 段间间接调用:CALL dst 段内返回: RET(IP=SP+1,SP,SP=SP+2) 段内带立即数返回:RET n 循环控制指令: LOOP OPRD(CX=CX-1,若CX≠0则循环 LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则 循环) LOOPZ/LOOPE OPRD

微机原理全部指令用法

一.机械码,又称机器码. ultraedit打开,编辑exe文件时你会看到 许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码 就是机器码. 修改程序时必须通过修改机器码来修改exe文件. 二.需要熟练掌握的全部汇编知识(只有这么多) 不大容易理解,可先强行背住,混个脸儿熟,以后慢慢的就理解了 cmp a,b 比较a与b mov a,b 把b的值送给a ret 返回主程序 nop 无作用,英文“no operation”的简写,意思是“do nothing”(机器码90)***机器码的含义参看上面 (解释:ultraedit打开编辑exe文件时你看到90,等同于汇编语句nop) call 调用子程序 je 或jz 若相等则跳(机器码74 或0F84) jne或jnz 若不相等则跳(机器码75或0F85) jmp 无条件跳(机器码EB) jb 若小于则跳 ja 若大于则跳 jg 若大于则跳 jge 若大于等于则跳 jl 若小于则跳 jle 若小于等于则跳 pop 出栈 push 压栈 三.常见修改(机器码) 74=>75 74=>90 74=>EB 75=>74 75=>90 75=>EB jnz->nop 75->90(相应的机器码修改) jnz -> jmp 75 -> EB(相应的机器码修改) jnz -> jz 75->74 (正常) 0F 85 -> 0F 84(特殊情况下,有时,相应的机器码修改) 四.两种不同情况的不同修改方法 1.修改为jmp je(jne,jz,jnz) =>jmp相应的机器码EB (出错信息向上找到的第一个跳转)jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息

8086汇编指令大全.

标志寄存器:9个有效位,分 6个状态寄存器和 3个控制寄存器 CF 当执行一个加法(减法使最高位产生进位(借位时 CF=1 否则 CF=0 PF 指令执行的结果低 8位有偶数个一时, CF=1 否则 CF=0 AF 当执行一个加法(减法使运算结果低 4位向高 4位有进位(借位时 AF=1 否则 AF+0 ZF 当前运算结果为零, ZF=1 否则 ZF=0 SF 符号标志位 OF 溢出标志位 DF 方向标志位 IF 中断允许位 IF=1时响应外部中断

TF 跟踪标志位 操作数:[目的操作数(OPD ,源操作数(OPS ] ;立即操作数,寄存器操作数,存储器操作数。寻址方式: 1 寄存器寻址例:INC AX ; MOV AX , BX 2 寄存器间接寻址 (寄存器只能是 BX , DI , SI , BP ; [PA=(BX 、 DI 、 SI +DS》 4 或 BP+SS》4] 3 寄存器相对寻址 4 基址变址寻址 5 相对基址变址寻址 6 直接寻址 7 立即数寻址 i. 立即数寻址立即数寻址不能用在单操作数指令中 ii. 在双操作数中,立即数寻址方式不能用于目的操作数字段 指令系统: 1 数据传送指令 mov 注意: 不允许在两个存储单元之间直接传送数据

不允许在两个段寄存器之间传送数据 不允许用立即数直接为段寄存器赋值 不影响标志位 不允许寄存器或存储单元到除 CS 外的段寄存器 2 入栈(出栈指令 PUSH (POP 注意: PUSH 操作数不能是“立即数” POP 操作数不能是段寄存器 CS 不影响标志位 先进后出 单操作符 3 交换指令 XCHG 注意:

微机原理与接口技术知识点总结

微机原理与接口技术 第一章概述 二、计算机中的码制(重点 )P5 1、对于符号数,机器数常用的表示方法有原码、反码和补码三种。 注意:对正数,三种表示法均相同。它们的差别在于对负数的表示。 (1)原码 定义: 符号位:0表示正,1表示负; 数值位:真值的绝对值。 注意:数0的原码不唯一 (2)反码 定义:若X<0,则[X]反= 对应原码的符号位不变,数值部分按位求反 (3)补码 定义:若X<0,则[X]补= [X]反+1 2、8位二进制的表示范围: 原码:-127~+127 反码:-127~+127 补码:-128~+127 3、特殊数10000000 ●该数在原码中定义为:-0 ●在反码中定义为:-127 ●在补码中定义为:-128 ●对无符号数:(10000000)2= 128 三、信息的编码 1、字符的编码P8 计算机采用7位二进制代码对字符进行编码 (1)数字0~9的编码是0110000~0111001,它们的高3位均是011,后4位正好与其对应的二进制代码(BCD码)相符。 (2)英文字母A~Z的ASCII码从1000001(41H)开始顺序递增,字母a~z的ASCII码从1100001(61H)开始顺序递增,这样的排列对信息检索十分有利。

第二章微机组成原理 第一节、微机的结构 1、计算机的经典结构——冯.诺依曼结构P11 (1)微机由CPU(运算器和控制器)、存储器和I/O接口组成 2、系统总线的分类 (1)数据总线(Data Bus),它决定了处理器的字长。 (2)地址总线(Address Bus),它决定系统所能直接访问的存储器空间的容量。 (3)控制总线(Control Bus) 第二节、8086微处理器 1、8086,其内部数据总线的宽度是16位,16位CPU。外部数据总线宽度也是16位 8086地址线位20根,有1MB(220)寻址空间。P27 2、8086CPU从功能上分成两部分:总线接口单元(BIU)、执行单元(EU) BIU:负责8086CPU与存储器之间的信息传送。EU:负责指令的执行。P28 4、寄存器结构(重点 ) 1)数据寄存器特有的习惯用法P30 ●AX:(Accumulator)累加器。多用于存放中间运算结果。所有I/O指令必须都通过AX与接口传送信息; ●BX:(Base)基址寄存器。在间接寻址中用于存放基地址; ●CX:(Counter)计数寄存器。用于在循环或串操作指令中存放循环次数或重复次数; ●DX:(Data)数据寄存器。在32位乘除法运算时,存放高16位数;在间接寻址的I/O指令中存放I/O端口地址。 2)、指针和变址寄存器P31 ●SP:(Stack Pointer)堆栈指针寄存器,其内容为栈顶的偏移地址; ●BP:(Base Pointer)基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。●SI:(Source Index)源变址寄存器Index:指针 ●DI:(Destination Index)目标变址寄存器 变址寄存器常用于指令的间接寻址或变址寻址。 3)、段寄存器P28 CS:(Code Segment)代码段寄存器,代码段用于存放指令代码 DS:(Data Segment)数据段寄存器 ES:(Extra Segment)附加段寄存器,数据段和附加段用来存放操作数 SS:(Stack Segment)堆栈段寄存器,堆栈段用于存放返回地址,保存寄存器内容,传递参数 4)、指令指针(IP)P29 16位指令指针寄存器,其内容为下一条要执行的指令的偏移地址。 5)、标志寄存器 (1)状态标志:P30 ●进位标志位(CF):(Carry Flag)运算结果的最高位有进位或有借位,则CF=1 。Carry:进位Auxiliary :辅助 ●辅助进位标志位(AF):(Auxiliary Carry Flag)运算结果的低四位有进位或借位,则AF=1

微机原理指令整理..

类别指 令 类 型 指令名称指令缩写指令功能影响标志格式格式含义源操作数目的操作数 传送指令通 用 传 输 指 令 基本传输 指令 MOV 将源操作数中的数据传送至目的操 作数,以实现寄存器与寄存器、寄 存器与存储器之间数据传送以及立 即数送往寄存器或存储器 无 1.MOV WORD PTR [2000],AX 将AX送2000和 2001单元(低位 在低地址,高位 在高地址,下同) 至少有一个是寄存器 (除立即数送存储器 外); 不能在两个存储单元之 间直接传送数据; 不能在两个段寄存器之 间直接传送数据; 不能将立即数直接送至 段寄存器;SS和SP赋 值必须紧邻 指令指针IP既不作目 的操作数也不做源操作 数 2.MOV AX,ES:[BX+SI+50] 将ES段 (BX+SI+50)字 单元内容送AX 3.MOV SS,BX 将BX内容送SS 4.MOV ES,SS:[DI+200] 将SS段(DI+200) 字单元内容送ES 5.MOV BX,CX 将CS内容送BX 6.MOV WORD PTR [BX+DI],SS 将SS内容送 (BX+DI)字单元 CS不能作目 的操作数; 立即数不能 作目的操作 数 7.MOV CL,DH 将DH内容送CL 8.MOV DI,[SI+100] 将(SI+100)字 单元内容送DI 9.MOV WORD PTR [DI],DX 将DX内容送(DI) 字单元 10.MOV CX,3330 立即数3330送 微机原理指令整理 1

微机原理指令整理 2 CX 11.MOV BYTE PTR [DI],0 立即数0送(DI) 字节单元 堆栈操作 指令 PUSH 将来自通用寄存器、段寄存器或存储单元的一个字(16位)内容压入堆栈(SP 指向的栈顶个单元) 无 1.PUSH AX AX 内容进栈 通用寄存器、段寄存器、存储单元的一个字 CS 不能作目的操作数; 2.PUSH SI SI 内容进栈 3.PUSH ES ES 内容进栈 4.PUSH CS CS 内容进栈 5.PUSH WORD PTR [BX] (BX)和(BX+1)单元内容进栈 6.PUSH WORD PTR BETA [BX] (BX+BETA)字单元内容进栈 不能使用8位源或目的操作数 POP 将栈顶个单元的内容退出(弹出)到通用寄存器、段寄存器或存储单元 无 1.POP BX 栈顶2个字节出栈到BX 不能使用8位源或目的操作数 2.POP DX 栈顶2个字节出栈到DX 通用寄存器、段寄存器、存储单元的一个字节; CS 不能作目的操作数 3.POP ES 栈顶2个字节出栈到ES 4.POP SS 栈顶2个字节出栈到SS 5.POP [BX+50] 栈顶2个字节出栈到(BX+50)字单元 6.POP [BP+DI] 栈顶2个字节出栈到(BP+DI )字单元

常用8086汇编指令(彩色版)

8086/8088指令系统 一、数据传送指令 1.通用数据传送指令 MOV(Move)传送 PUSH(Push onto the stack)进栈 POP(Pop from the stack)出栈 XCHG(Exchange)交换 .MOV指令 格式为:MOV DST,SRC 执行的操作:(DST)<-(SRC) .PUSH进栈指令 格式为:PUSH SRC 执行的操作:(SP)<-(SP)-2 ((SP)+1,(SP))<-(SRC) .POP出栈指令 格式为:POP DST 执行的操作:(DST)<-((SP+1),(SP)) (SP)<-(SP)+2 .XCHG交换指令 格式为:XCHG OPR1,OPR2 执行的操作:(OPR1)<-->(OPR2) 2.累加器专用传送指令 IN(Input)输入 OUT(Output)输出 XLAT(Translate)换码 这组指令只限于使用累加器AX或AL传送信息. .IN输入指令 长格式为:IN AL,PORT(字节) IN AX,PORT(字) 执行的操作:(AL)<-(PORT)(字节) (AX)<-(PORT+1,PORT)(字) 短格式为:IN AL,DX(字节) IN AX,DX(字) 执行的操作:AL<-((DX))(字节) AX<-((DX)+1,DX)(字) .OUT输出指令 长格式为:OUT PORT,AL(字节) OUT PORT,AX(字)

执行的操作:(PORT)<-(AL)(字节) (PORT+1,PORT)<-(AX)(字) 短格式为:OUT DX,AL(字节) OUT DX,AX(字) 执行的操作:((DX))<-(AL)(字节) ((DX)+1,(DX))<-AX(字) 在IBM-PC机里,外部设备最多可有65536个I/O端口,端口(即外设的端口地址)为0000~FFFFH.其中前256个端口(0~FFH)可以直接在指令中指定,这就是长格式中的PORT,此时机器指令用二个字节表示,第二个字节就是端口号.所以用长格式时可以在指定中直接指定端口号,但只限于前256个端口.当端口号>=256时,只能使用短格式,此时,必须先把端口号放到DX寄存器中(端口号可以从0000到0FFFFH),然后再用IN或OUT指令来传送信息. .XLAT换码指令 格式为:XLAT OPR 或:XLAT 执行的操作:(AL)<-((BX)+(AL)) 3.有效地址送寄存器指令 LEA(Load effective address)有效地址送寄存器 LDS(Load DS with Pointer)指针送寄存器和DS LES(Load ES with Pointer)指针送寄存器和ES .LEA有效地址送寄存器 格式为:LEA REG,SRC 执行的操作:(REG)<-SRC 指令把源操作数的有效地址送到指定的寄存器中. .LDS指针送寄存器和DS指令 格式为:LDS REG,SRC 执行的操作:(REG)<-(SRC) (DS)<-(SRC+2) 把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中.该指令常指定SI寄存器. .LES指针送寄存器和ES指令 格式为:LES REG,SRC 执行的操作:(REG)<-(SRC) (ES)<-(SRC+2) 把源操作数指定的4个相继字节送到由指令指定的寄存器及ES寄存器中.该指令常指定DI寄存器. 4.标志寄存器传送指令 LAHF(Load AH with flags)标志送AH SAHF(store AH into flags)AH送标志寄存器 PUSHF(push the flags)标志进栈 POPF(pop the flags)标志出栈 .LAHF标志送AH

相关主题
文本预览
相关文档 最新文档