资源预览内容
第1页 / 共177页
第2页 / 共177页
第3页 / 共177页
第4页 / 共177页
第5页 / 共177页
第6页 / 共177页
第7页 / 共177页
第8页 / 共177页
第9页 / 共177页
第10页 / 共177页
亲,该文档总共177页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
本章内容本章内容本章内容本章内容 指令的基本概念和指令所包含的指令的基本概念和指令所包含的 基本内容。基本内容。 80868086指令的格式及编码方式。指令的格式及编码方式。 80868086指令的寻址方式及寻址过程。指令的寻址方式及寻址过程。 80868086指令系统的分类、功能及操指令系统的分类、功能及操 作过程,每条指令的格式及用法。作过程,每条指令的格式及用法。 学习目的学习目的学习目的学习目的 掌握指令及指令系统的基本概念。掌握指令及指令系统的基本概念。 掌握掌握8086各种寻址方式所执行的数各种寻址方式所执行的数 据寻址过程。据寻址过程。牢固地掌握存储器段地址:偏移地牢固地掌握存储器段地址:偏移地 址的组织结构和段约定的基本概念。址的组织结构和段约定的基本概念。 掌握每条掌握每条8086指令的格式、功能及用法。指令的格式、功能及用法。掌握指令的操作过程中操作数的变化情掌握指令的操作过程中操作数的变化情 况以及对标志位的影响。况以及对标志位的影响。 学会正确选用指令完成简单的任务。学会正确选用指令完成简单的任务。内存单元的地址和内容简介:内存单元的地址和内容简介:内内存存由由许许多多存存储储单单元元组组成成,每每个个内内存存单单元元可可存存放放一一组组二二进进数数。在在微微机机中中规规定定每每个个内内存存单单元元可可存存放放8位位二二进进制制数数,即即一一个个内内存存单单元元存存放放一一个个字字节节的的内内容容,为为了了区区分分各各个个不不同同的的内内存存单单元元,就就给给每每个个存存储储单单元元编编上上不不同同的的号号码码,即即内内存存地地址址。CPU要要访访问问某某个个单单元元时时,先先要要通通过过地地址址总总线线送送出出该单元的地址号。该单元的地址号。3.1 3.1 基本数据类型基本数据类型 尽尽管管存存储储器器是是按按字字节节编编址址的的,但但实实际际操操作作中中,一一个个操操作作数数可可以以是是字字节节、字字、双双字字节节、十十字字节节等等各种形式。各种形式。 1. 字字节节:计计算算机机的的基基本本处处理理单单位位,一一个个字字节节由由8位二进制位组成位二进制位组成 2. 字字:通通常常微微机机的的字字长长有有8位位、16位位、32位位、64位位,故故其其字字数数据据的的存存放放所所占占内内存存单单元元的的个个数数也也不一样不一样 3. 双字:即双字:即2个字个字 4. 四字:好四字:好4个字的长度个字的长度地址存放内容二进制表示十六进制表示00000H110000101100001000001HC2H18H 0001001000008H12H0011010000001H34H01110000FFFFFH70H 内存单元的地址和内容示意图内存单元的地址和内容示意图3.2 3.2 指令概述指令概述一、指令一、指令一、指令一、指令 (Instruction):(Instruction): 指令通常以二进制代码的形式提供给计算机,这种指令称为机器指令。例例:10001000 11011000就是一条2字节的机器指令,指示计算机执行:“把寄存器BL内容复制到寄存器AL之中” 的操作。表示为: ALBL。 指示计算机执行什么操作的命令命令。 二、指令系统二、指令系统二、指令系统二、指令系统 (Instruction (Instruction System):System): 三、程序三、程序三、程序三、程序 (Program): (Program): 完成某个特定任务而编制的一系列指令的有序有序集合。程程序序的的执执行行一一般般是是按按指指令令的的先先后后次次序序一一条条一一条条执执行行,但但遇遇到到转转移移类类指指令令时时则则可可能能改改变变指指令令的的执行次序。执行次序。计算机所能执行的全部指令全部指令。 四、指令包含的基本内容四、指令包含的基本内容四、指令包含的基本内容四、指令包含的基本内容1. 1. 1. 1. 做什么操作做什么操作做什么操作做什么操作由指令的操作码操作码字段规定。2. 2. 2. 2. 操作数的来源操作数的来源操作数的来源操作数的来源操作数来自于什么地方。由指令的操操作作数数字段规定。操作数的来源可以是:操作数的来源可以是: a. CPU内的某个寄存器寄存器;b. 存储器内的某一个或几个单元单元;c. I/O端口端口; d. 立即数。3. 3. 3. 3. 操作结果的去向操作结果的去向操作结果的去向操作结果的去向操作的结果结果将存放在何处。4. 4. 4. 4. 下一条指令的位置下一条指令的位置下一条指令的位置下一条指令的位置指示下一条指令是顺序顺序执行还是转移转移执行。五、指令的种类五、指令的种类五、指令的种类五、指令的种类1. 1. 1. 1. 数据处理指令数据处理指令数据处理指令数据处理指令2. 2. 2. 2. 数据传送指令数据传送指令数据传送指令数据传送指令3. 3. 3. 3. 程序处理指令程序处理指令程序处理指令程序处理指令4. 4. 4. 4. 状态管理指令状态管理指令状态管理指令状态管理指令六、指令的表示方法六、指令的表示方法六、指令的表示方法六、指令的表示方法1. 二进制代码表示二进制代码表示机器语言指令机器语言指令2. 助记符表示助记符表示汇编语言指令汇编语言指令例:10001000 11011000例:MOV BL,ALMOV表示“传传送送”助记符,BL(寄存器)表示结果存放的位置,AL(寄存器)表示数据的来源。助记符表示的指令便于书写、理解和记忆,但最终必须将助记符指令“翻译”成机器指令才能被识别和执行。这个过程叫“汇编”。助记符指令助记符指令机器指令机器指令汇编汇编 3.3 8086 CPU3.3 8086 CPU的寻址方式的寻址方式的寻址方式的寻址方式地址地址:数据和指令存放的位置。数据存放的位置可以是寄寄存存器器、存存储储器器或I/OI/O端端口口,指令存放的位置只能是存储器中的代码段代码段。寻址方式:寻址方式:寻找指令地址和操作数地址的方式。寻址过程:寻址过程:形成指令地址和操作数地址的过程。结果AHAL1. 1. 1. 1. 固定寻址固定寻址固定寻址固定寻址 ( ( ( (隐含寻址隐含寻址隐含寻址隐含寻址) ) ) )操作数在某个固定的寄存器寄存器中。这个固定的寄存器大多为AL或AX。例例:AAA操操作作:对固定寄存器AL中的内容进行十进制调整,结果仍在AL中。(可能影响AH的内容)十进制调整十进制调整影响影响+1送回送回2. 2. 2. 2. 立即数寻址立即数寻址立即数寻址立即数寻址操作数作为立即数立即数就在指令中给出。例例:MOV AX,1234H操作操作:把立即数1234H送寄存器AX中。机器码:B8 34 12 (低字节在地址小的单元)AHALAX.B83412.5678代码段代码段 (存储器中存储器中)操作码操作码(B8)操作数操作数(1234H)立即数立即数一一条条指指令令指令执行后,AX=1234H (原有的内容被新的内容替换)。1234MOV AX,1234H3. 3. 3. 3. 寄存器寻址寄存器寻址寄存器寻址寄存器寻址操作数在某个寄存器寄存器中。例例:INC BL操作操作:使BL中内容加1后送回+1BL00若BL=00H,则执行后BL=01HBL=FFH,则执行后BL=00H (自动溢出)014. 4. 4. 4. 存储器寻址存储器寻址存储器寻址存储器寻址操作数在存储器存储器中的一个或几个单元单元中。在这种寻址方式下,要找到该操作数,关键是必须找到该操作数所在单元的地址地址。由于8086采用存储器段组织结构,内存单元的地址由段段起起始始地地址址 (基基地地址址) 和该单元与段起始地址之间的距距离离 (以字字节节数数计) 两部分共同决定。段段起起始始地地址址(基地址):某个段寄存器的内容(又称段基值段基值)乘以16得到。段段内内偏偏移移量量:该单元与段起始地址之间的距距离离(字节数字节数) 。又称有效地址EA。有效地址有效地址EA待寻址的内存单元待寻址的内存单元(CS, DS, ES, SS)16 段段基基地地址址 物理地址物理地址 =段基值段基值 16+EA 内存单元物理地址内存单元物理地址8086规定,在执行某种操作时,采用的段寄存器有一个预先的约约定定。故指令中一般只需给出有关EA的信息,则CPU将能够根据该次操作自自动动选用段段寄寄存存器器,并与EA一起形成物理地址物理地址。 存储器寻址的实质就是如何形成有有效效地址地址EA。(1) 直接寻址方式直接寻址方式指令中以偏移量方式直直接接给出操作数的有效地址。即EA=指令中给出的偏移量例例:MOV AX,1234H机器码机器码:A1 34 12操作操作:把偏移量1234H作为EA,在数据数据段段中找到相应的字字单元,再将字单元的内容送AX。本例执行完后,本例执行完后,AX=3050HEA=1234H设DS=3000H31234H 1234H + EA=1234H31234H56783050DS16=30000H30000H= 3000H16.A13412.5030.指令 代码段 数据段 AHALAXMOV AX, 1234Ha. 直接寻址的操作过程与立即寻址不同。为表示它们的区别,直接寻址的偏移量用一对 “ ”表示。立即寻址立即寻址:MOV AX,1234H直接寻址直接寻址:MOV AX,1234Hb. 段基值乘以16,相当于段基值(二进制表示)左移4位,或段基值(十六进制表示)在末尾添一个0H。注:注:(2) 间接寻址方间接寻址方式式 以间间接接的方式得到有效地址EA,有几个专用的寄存器可用于间接寻址:BX,BP,SI,DI。a. 基址寻址方式基址寻址方式 以BX作为基址寻址寄存器,操作数在数据段数据段中。以BP作为基址寻址寄存器,操作数在堆栈段堆栈段中。EA=BX或BP的内容+8位或16位位移量例例:MOV AX,BX机器码机器码:8B 04操操作作:以BX的内容作为有效地址EA,在数数据据段段中找到对应的字单元,再将该字单元的内容送AX中。EA=BX (位移量为0)设DS=2000H,BX=1000H本例执行后本例执行后 AX=50A0HDS=2000HDS1620000H EA=BX(=1000H)21000H 50 A0 8B.04A050代码段数据段AX AH AL 这种寻址方式的优点就在于可以随时修改BX寄存器的内容,而指向不同的存储单元。故BX又称为基址指针寄存器。例例:MOV AL,DATABP 这里DATA是以符号符号表示的位移量位移量。 EA=BP+位移量DATA操操作作:以EA作为有效地址,在堆堆栈栈段段中去 寻址字节字节单元,再将该字节单元内容送AL。b. 变址寻址方式变址寻址方式 以SI,DI寄存器作为间间接接寻寻址址寄存器,操作数在数据段数据段中。 EA=SI或DI内容+8位或16位位移量 例例:ADD AX,SI EA=SI操操作作:以EA作为有效地址,在数数据据段段中找到某个操作数,再将该操作数与AX的内容相加,结果存放在AX中。c. 基址变址寻址方式基址变址寻址方式 既有基址寄存器(BX或BP),又有变址寄存器参与(SI或DI)寻址,操作数在基基址址寄存器所规定的段中。EA=BX或BP+SI或DI+8位或16位位移量例例:MOV AX,0260H BX SIEA=BX+SI+0260H,操作数在数据段数据段中MOV AX,INF BP+DIEA=BP+DI+位移量INF,操作数在堆栈段堆栈段中 * 以上两种基址+变址的格式都是合法的。(3) 串操作指令寻址串操作指令寻址这类指令规定这类指令规定:源串源串操作数在数据段数据段,且有效地址EA=SI目的串目的串操作数在附加段附加段,且有效地址EA=DI指令执行后,自自动动修改SI,DI的值,使之指向新的单元。 8086的段约定的段约定8086在执行某种操作时,预预先先规定了采用的段寄存器和段,即有基本的段段约约定定。如果要改变默认的段约定,则需要在指令中明 确指出来。8086/8088的段约定的段约定存储器存取方式存储器存取方式基本段约定基本段约定 允许修改的段允许修改的段偏移地址偏移地址取指令取指令堆栈操作堆栈操作源串源串目的串目的串用用BP作基址寄存器作基址寄存器通用数据读写通用数据读写CSSSDSESSSDS无无无无ES,CS,SS无无CS,DS,ESCS,ES,SSIPSPSIDIEAEA5. I/O5. I/O5. I/O5. I/O端口寻址方式端口寻址方式端口寻址方式端口寻址方式 (1) 直接端口寻直接端口寻址址操作数在某个8位位或16位位端口端口中。端口地址可以置于DX中,但不能置于其它寄存器中。端口的输入、输出数据只能置于累加器 AL或AX中。注:注:b. 端口输出端口输出OUT port, ALa. 端口输入端口输入 IN AL,portport=端口地址 (8位,0255)例例:IN AL,80H操操作作:从端口地址为80H的端口输入一字节送AL。(2) 间接端口寻址间接端口寻址可以把端口地址送入DX,然后进行端口寻址:输入: IN AL,DX 输出: OUT DX,AL注注: 若用AX代替AL,则表示16位数据的端口。 端口地址大于255时,必须将端口地址送入DX,即采用间接寻址端口方式。6. 6. 6. 6. 转移类指令的寻址方式转移类指令的寻址方式转移类指令的寻址方式转移类指令的寻址方式前面所述的各种寻址方式实际上是数数据据寻址寻址方式,关键是如何找到操作数操作数。转移类指令寻址方式属于程程序序存存储储器器寻寻址址,关键是要找到下一条待执行指令的地址地址。(1) 转移范转移范围围段内转移:转移范围在同一个段同一个段以内段间转移:从一一个个代码段转移至另另一一个个代码段(2) 转移条转移条件件无条件转移有条件转移 (转移范围仅为128+127)(3) 转移方转移方式式直接转移 (转移目标直接直接在指令中给出)间接转移 (转移目标预先放入某个寄寄存器存器或存储器存储器中)寻址方式小结:寻址方式小结:固定寻址固定寻址:操作数固定在某个寄存器寄存器中寄存器寻址寄存器寻址:操作数在某个寄存器寄存器中立即数寻址立即数寻址:操作数就是操作码后跟的立即数立即数存储器寻址存储器寻址直接寻址间接寻址串操作寻址基址寻址变址寻址基址+变址寻址I/O端口寻址端口寻址直接端口寻址间接端口寻址转移类指令寻址转移类指令寻址基址变址寻址基址变址寻址 基址变址寻址基址变址寻址基址变址寻址基址变址寻址(Based Index Addressing)(Based Index Addressing)(Based Index Addressing)(Based Index Addressing)中的中的中的中的操作数的有效地址是一个基址寄存器(如操作数的有效地址是一个基址寄存器(如操作数的有效地址是一个基址寄存器(如操作数的有效地址是一个基址寄存器(如BXBXBXBX、BPBPBPBP)和一个变址寄存器(如和一个变址寄存器(如和一个变址寄存器(如和一个变址寄存器(如SISISISI、DIDIDIDI)的内容之和,两个的内容之和,两个的内容之和,两个的内容之和,两个寄存器均由指令指出。寄存器均由指令指出。寄存器均由指令指出。寄存器均由指令指出。操作数的段地址分配和前面操作数的段地址分配和前面操作数的段地址分配和前面操作数的段地址分配和前面所述相同,即使用默认段基址或使用段超越前缀来所述相同,即使用默认段基址或使用段超越前缀来所述相同,即使用默认段基址或使用段超越前缀来所述相同,即使用默认段基址或使用段超越前缀来指定段基址。指定段基址。指定段基址。指定段基址。 MOV AX,BXDIMOV AX,BXDIMOV AX,BXDIMOV AX,BXDI 或或或或 MOV AX,BX+DI MOV AX,BX+DI MOV AX,BX+DI MOV AX,BX+DI 设设设设DS=2000H DS=2000H DS=2000H DS=2000H DI=1000H DI=1000H DI=1000H DI=1000H BX=8000HBX=8000HBX=8000HBX=8000H,则则则则该该该该指指指指令令令令表表表表示示示示将将将将物物物物理理理理地地地地址址址址=20000H+8000H+1000H=29000H=20000H+8000H+1000H=29000H=20000H+8000H+1000H=29000H=20000H+8000H+1000H=29000H为首地址的一个字的内容送为首地址的一个字的内容送为首地址的一个字的内容送为首地址的一个字的内容送AXAXAXAX中。中。中。中。 例例例例相对基址变址寻址相对基址变址寻址 相相相相对对基址基址基址基址变变址址址址寻寻址址址址(Relative Based Indexed (Relative Based Indexed (Relative Based Indexed (Relative Based Indexed Addressing)Addressing)Addressing)Addressing)中操作数的有效地址是一个基址寄存器中操作数的有效地址是一个基址寄存器中操作数的有效地址是一个基址寄存器中操作数的有效地址是一个基址寄存器和一个和一个和一个和一个变变址寄存器的内容和址寄存器的内容和址寄存器的内容和址寄存器的内容和8 8 8 8位或位或位或位或16161616位位移量位位移量位位移量位位移量这这三者三者三者三者之和。之和。之和。之和。同同同同样样地,当使用基址寄存器地,当使用基址寄存器地,当使用基址寄存器地,当使用基址寄存器BXBXBXBX时时,缺省的段,缺省的段,缺省的段,缺省的段寄存器是寄存器是寄存器是寄存器是DSDSDSDS;当使用基址寄存器当使用基址寄存器当使用基址寄存器当使用基址寄存器BPBPBPBP时时,缺省的段寄,缺省的段寄,缺省的段寄,缺省的段寄存器是存器是存器是存器是SSSSSSSS。 课堂练习与思考:课堂练习与思考:1.请指出下列每条指令源操作数的寻址方式。请指出下列每条指令源操作数的寻址方式。(1) MOV AX, BX (2) MOV CH, 3AH (3) MOV BX, 2000H (4) MOV DX, BX (5) MOV CX, BP+2 (6) MOV AX, 3BX DI (7) MOV AL, ES:SI (8) MOV BX, DS:BP;寄存器寻址,操作数在BX中 ;立即数寻址,操作数为3AH ;直接寻址,EA=2000H,数在数据段 ;基址寻址(寄存器间接寻址),EA=BX,数在数据段 ;基址寻址,EA=BP+2,数在堆栈段 ;相对基址变址寻址,EA=BX+DI+3,数在数据段 ;含段超越的变址寻址,EA=SI,数在附加段 ;含段超越的基址寻址,EA=BP,数在数据段课堂练习与思考:课堂练习与思考:2. MOV AX2. MOV AX,BX+SI+0080HBX+SI+0080H,即将即将BXBX与与SISI中的内容与中的内容与0080H0080H相加作有效地址。相加作有效地址。 3.3.设BX=0123H DI=1000H DS=3200HBX=0123H DI=1000H DS=3200H,默默认DSDS作作为操操作数对应的段寄存器作数对应的段寄存器( (假定没使用段前缀假定没使用段前缀) ),试指出下,试指出下列指令的寻址方式,并写出其操作数的有效地址和物列指令的寻址方式,并写出其操作数的有效地址和物理地址。理地址。 (1)MOV AX,1A38H (2)MOV AX,BX (3)MOV AX,BX+1A38H (4)MOV AX,BX+DI (5)MOV AX,BX+DI+1A38H课堂练习与思考:课堂练习与思考:解:解:解:解: (1)直接寻址 有效地址=1A38H, 物理地址=32000H+1A38H=33A38H (2)寄存器间接寻址 有效地址=0123H, 物理地址=32000H+0123H=32123H (3)寄存器相对基址寻址 有效地址=0123H+1A38H=1B5BH, 物理地址=32000H+1B5B=33B5BH (4) 基址变址寻址 有效地址=0123H+1000H=1123H, 物理地址=32000H+1123H=33123H (5)相对基址变址寻址 有效地址=0123H+1000H+1A38H=2B5BH, 物理地址=32000H+2B5BH=34B5BH 3.4 8086指令系统指令系统8086指令按功能分为六大类。指令按功能分为六大类。8086指令系统数据传送指令算术运算指令逻辑运算指令串操作指令程序控制指令CPU控制指令memmem 存储器操作数存储器操作数存储器操作数存储器操作数 portport 输入输出端口,可用输入输出端口,可用输入输出端口,可用输入输出端口,可用 数字或表达式表示数字或表达式表示数字或表达式表示数字或表达式表示 opropr 表示操作数表示操作数表示操作数表示操作数 存储单元的内容存储单元的内容存储单元的内容存储单元的内容 acac 累加器操作数累加器操作数累加器操作数累加器操作数(AX(AX或或或或AL) AL) regreg 寄存器寄存器寄存器寄存器 srcsrc 源操作数源操作数源操作数源操作数 segregsegreg 段寄存器段寄存器段寄存器段寄存器 distdist 目的操作数目的操作数目的操作数目的操作数 countcount 移位次数,可以是移位次数,可以是移位次数,可以是移位次数,可以是 1 1或或或或CLCL datadata 立即数立即数立即数立即数 S_insS_ins 串操作指令串操作指令串操作指令串操作指令 dispdisp 8 8位或位或位或位或1616位位移量位位移量位位移量位位移量 本节中要用到的一些符号所表示的含义:本节中要用到的一些符号所表示的含义:本节中要用到的一些符号所表示的含义:本节中要用到的一些符号所表示的含义:一、数据传送指令一、数据传送指令一、数据传送指令一、数据传送指令数据传送指令能够完成下列操作数的传送任务。立即数存储器段寄存器CS,DS,ES,SS通用寄存器组AX,BX,CX,DXBP,SP,SI,DI(CS不能作目的)1. 1. 1. 1. 通用数据传送指令通用数据传送指令通用数据传送指令通用数据传送指令(1) MOV d, s功功能能:将源操作数s复制到目标操作数d,源保持不变,目标被源代替。注注: d, s不能同时为存储器错误指令:MOV BX,SI d不能为立即数 错误指令:MOV 1234H,AX d, s必须同时为字节型或字型错误指令:MOV AX,BL 指令后的分号“;”以后为注释部分,对指令的执行没有任何影响,主要是便于阅读或解释指令的功能。例例:MOV AX,0 ; AX0,AX清0 执行后,AX=0MOV SI,BP ; SIBP,BP内容送SI 执行后,SI=BP,BP不变不变MOV AL,BUFFERS ;BUFFERS内存单元内容送入AL这里,BUFFERS代表符符号号地地址址,从该地址单元中取出内容送AL寄存器。相当于直接寻址方式。相当于直接寻址方式。EA=BUFFERS偏移量偏移量3030HBUFFERSALMOV AX,DATA SI+BXEA=SI+BX+DATA,在数据段中寻找字单元,取出该字单元的内容送入AX。设DS=3000H,SI=200H,BX=1000H,DATA的偏移量为100H,则EA=SI+BX+DATA=200H+1000H+100H=1300H物理地址=DS16+EA=30000H+1300H=31300H 即从31300H和31301H两单元中取出内容送AX。DS1630000H123434H12HAXAH ALEA=1300HDATASIBXDATA31300H31301HMOV AX,DATA SI+BX(2) PUSH s;SP2 SP, 源源 操操 作作 数数 压 入 堆堆 栈栈 保 存POP d;SP所指堆栈所指堆栈的内容内容送目 标, SP+2 SP例:PUSH BX;把BX内容压入堆栈设 SS=2000H,SP=0040H,BX=2340H则执行后,2340H被保存到堆栈,同时SP=003EH,BX内容不变SS1620000HSP=0040HSP=0040H( (初值初值初值初值) )20040H2003EH4023SP=003EH(压栈后压栈后)XX23 40BX注注:s和d只能为16位寄存器或存储器错误指令:PUSH 1234HPOP AL(3) XCHG d, s ;交换源和目标操作数注注:d=通用寄存器s=通用寄存器或存储器例:XCHG AX,SI+400H执行后,5678H被送到内存单元AX=1234H3412SI+400H5678AH ALAX34127856(4) XLAT ;查表转换 注注:a. 表首相对于段起始地址的偏移量预先送入BX中;b. 待查找的表表内内某单元相对于表首的偏偏移移量量送入AL中;c. 以EA=BX+AL在表中(数据段)查找,将查得的数据再送回AL中。例例:设表首的偏移地址为2000H,要查找表内第4号单元 (从0号算起)的内容并送回AL,则程序段如下:MOV BX,2000HMOV AL,04HXLAT设表中内容如下页图所示, 则执行后,AL=09H 18H34H05H06H09H2000HBX 04HAL(表首)TABLE DS1604 AL09 2. 2. 2. 2. 目标地址传送指令目标地址传送指令目标地址传送指令目标地址传送指令对于任一个存储器操作数,由段地址和偏移地址确定了它们在存储器中的位置。目标地址传送指令就用于获得存储器操作数的段地址或偏移地址。(1) LEA d, s功能功能:取存储器源操作数有效地址有效地址送入目标dd=通用寄存器 例:LEA BX,COUNTER; 取COUNTER地址偏移量BX 若COUNTER地址偏移量为0002H,则执行后BX=0002H(2) LDS d, s功能功能:装入地址指针,段地址DS,偏移地址d这条指令往往改变了段段寄寄存存器器DS的内容,使得DS指向了另外一个数据段。例例:LDS SI,BASE设执行前,DS=1000H,SI=0000H,BASE偏移地址为0004H,10004H10007H单元内容依次为00H,30H,00H,20H,则执行后,DS=2000H,SI=3000H003000200004HSI=3000H原DS所指向的数据段新DS所指向的数据段1000H1610000HDS BASE30002000SIDS2000H1620000HDS (3) LES d, s功能功能:装入地址指针,段地址 ES,偏移地址d3. 3. 3. 3. 标志位传送指令标志位传送指令标志位传送指令标志位传送指令(1) LAHF功能功能:将标志寄存器低低8位位装入AH寄存器 SF ZFAFPFCFFR70 AH(2) SAHF功功能能:把AH的内容送入标志寄存器的低低8位位。(2) PUSHF功功能能:SP-2 SP,同时将标标志志寄寄存存器器压栈至当前当前SP所指内容(2字节) 。 (4) POPF功功能能:将当当前前SP所指内容(2字节)弹出 至 标标 志志 寄寄 存存 器器 , 同 时SP+2SP。 4. I/O4. I/O4. I/O4. I/O数据传送指令数据传送指令数据传送指令数据传送指令 功能:从指定端口输入数据至累加器acc (AL或AX) ,port=0255 (1) IN acc, portAH ALacc端口port 16位数据时 (2) IN acc, DX功功能能:从DX指示的端口输入数据至累加器acc , DX=065535(3) OUT port, acc功能:将累加器的数据输出至指定端口。(4) OUT DX,acc功功能能:将累加器的数据输出到DX所指示的端口。注注: 16位端口地址必须送入DX中。 若采用AX,则表示16位数据传送(输入/输出)(4) 换码指令XLAT功功能能:该指令通过AL和BX寄存器进行表格查找,将8位数装入AL中。它完成的操作为:AL BX+AL,XLAT指令常用于查表操作,即BX寄存器含有表格的起始地址,而AL中的值是作进入表格中的偏移量,查出表格中的内容送入AL中。例例例例 设设DS =3000HDS =3000H, AL=09HAL=09H, BX=0080H BX=0080H 执行指令执行指令XLATXLAT作用是:将存储单元作用是:将存储单元30089H30089H的内容送的内容送入入ALAL中。中。二、算术运算指令二、算术运算指令二、算术运算指令二、算术运算指令算算术术运运算算指指令令的的操操作作数数可可以以是是无无符符号号数数,也可以是有符号数。也可以是有符号数。算算术术运运算算指指令令一一般般影影响响标标志志位位,而而数数据据传传送指令一般不影响标志位。送指令一般不影响标志位。1. 1. 1. 1. 加法指令加法指令加法指令加法指令(1) ADD d, s功功能能:将s与d相加,结果在d中。根据操作结果设置标志位标志位。例例:ADD BX+106BH,1234H设DS=2000H,BX=1200H,EA=1200H+106BH=226BH物理地址:2000H16+226BH=2226BH 又设原来(2226BH)=90H,(2226CH)=30H则指令执行后:3090H+1234H=42C4H即(2226BH)=C4H,(2226CH)=42H又 42C4H=0100,0010,1100,0100B 标志位:CF=0,ZF=0,SF=0 AF=0,PF=0 (5个个1),OF=0 (2) ADC d, s功功能能:将s与d再与进位CF相加,结果留在d中,ADC指令主要用于多字节相加。例例:MOV AX,0FH ;AX=000FHADD AL,0F1H ;AL+F1HAL ADC AH,0 ;AH+0+CFAH 最后结果:最后结果:AH=01H,AL=00H注注:若是立即数,且最高位为数码AF,则必须在前面添加一个0,以避免混淆。(3) INC opr功能功能:将opr加1后送回opr。注注:INC指令不影响不影响进位标志CF。该指令经常用于修改地址指针寄存器 (BX, BP, SI, DI),使之指向下一个单元。2. 2. 2. 2. 减法指令减法指令减法指令减法指令(1) SUB d, s功能功能:dsd,同时影响影响标志位。(2) SBB d, s功能功能:dsCFd,同时影响影响标志位。(3) DEC opr功能功能:opr1opr 该指令与INC相反操作,也不不影影响响进位标志CF。(4) NEG d功功能能:对d进行求补运算后送回 (按位求反再加1)。例例:MOV AL,7FHNEG AL结果:结果:AL=7F按位求反按位求反+1=80H+1=81H(5) 比较指令 CMP d, s功功能能:作一次减法运算ds,但不回送结果,只根据结果设置设置标志位。比较指令往往用于判断两数是否相等,或两数大小关系。若相等,则零标志ZF=1。3. 3. 3. 3. 乘法指令乘法指令乘法指令乘法指令乘法指令在指令中只出现一个操作数s (乘乘数数),另一个操作数固定在累累加加器器(AX或AL)中。(1) MUL s功能功能:无符号数乘法指令a. 8位乘法被乘数=AL,乘数=s积(16位)=AH:AL中,即在AX中 AH为高8位,AL为低8位。AL(8位)s(8位) AHAL(16位)b. 16位乘法被乘数=AX,乘数=s积(32位)=DX:AXDX为高16位,AX为低16位。AX(16位)s(16位) DXAX(32位)例例:MUL BX 若执行前 AX=0012H,BX=0066H 则执行后 DX=0000H,AX=072CH (2) IMUL s功能功能:有符号数乘法指令8086规规定定,有有符符号号数数一一般般采采用用补补码码表表示示。故故有有符符号号数数作作乘乘法法运运算算时时,必必须须先先把把它它们们转转变变为为原原码码数数相相乘乘,积积也也为为原原码码数数,再再将将原原码码数转变为补码数。这个工作由数转变为补码数。这个工作由CPU自动完成。自动完成。例例:MOV AL,88H; 88H为 120的补码 MOV BL,2IMUL BL结果:AX=FF10H ;FF10H为240的补码若直接用MUL BL指令,则AX=0110H4. 4. 4. 4. 除法指令除法指令除法指令除法指令(1) DIV s功能功能:无符号数相除a. 字节除 被除数=AX,除数=s (s0)结果:商=AL,余数=AHALAHAL(8位)(16位).AH(8位)s(8位)商余数b. 字除 被除数=DX:AX,除数= s (s0)结果:商=AX,余数=DXAXDXAX(16位)(32位).DX(16位)s (16位)商余数注注:如果除数太小,使得商超出了一个字节或字所能表示的范围,则会产生“被0除”错误。例例:MOV AX,800HMOV BL,2DIV BL结果错误,“被0除” (2) IDIV s功能功能:带符号数除法采用的固定寄存器与DIV相同。(3) CBW和CWDCBW:字节除法的符号扩展指令功能功能:若AL为正数正数(D7=0) 则 AH=00H AL为负数负数(D7=1) 则 AH=FFH CWD:字除法的符号扩展指令功能功能:若AX为正数正数(D15=0) 则 DX=0000H AX为负数负数(D15=1) 则 DX=FFFFH CBW和CWD一般用于带符号数除法指令之前。5. 5. 5. 5. 十进制调整指令十进制调整指令十进制调整指令十进制调整指令运运算算器器按按二二进进制制规规律律进进行行运运算算,如如果果参参与与运算的是运算的是BCDBCD码数,则需要对结果进行调整。码数,则需要对结果进行调整。100010010000100100001000组合组合的BCD码数未组合未组合的BCD码数899(低位)8(高位)代表89(1) AAA功功能能:对未未组组合合型型BCD码码加加法法的结果进行校正(调整)。校正(调整)方法:若AL中低4位数值 9 或 AF = 1,则:a. AL+6 AL,且 AL 高4位清0 b. AH+1 AH 否则不作调整。(2) DAA功功能能:对组组合合型型BCD码码加加法法的结果进行校正(调整)。DAA同时对AL中低低4位位和高高4位位进行调整。例例:MOV AH, 0MOV AL, 00000110B;代表6ADD AL, 00000111B;代表7AAA000001106+ 00000111 7调整调整 + 00000110 000011010001001100000011 AL清000000000+1=00000001AH 最后结果 AH = 01H,AL = 03H例例. 组合BCD码调整 MOV AL, 00100111B;代表27ADD AL, 10000110B;代表86DAA+ 1000011000100111调整调整 + 01100110101011011 00010011进位1调整后结果:调整后结果:CF=1,AL=00010011(代表13)进位位与AL合成结果: 113(3) AAS功能功能:对未组合型未组合型BCD的减法的减法结果进行调整。功能功能:对组合型组合型BCD的减法的减法结果进行调整。(4) DAS最后结果最后结果 AL = 00110110B(代表代表36),CF=0例例: MOV AL, 01110011B (代表73)MOV BL, 00110111B (代表37)SUB AL, BL01110011 001101110011110000110110DAS相减调整调整 00000110(5) AAM功能功能:对未组合型BCD的乘法乘法结果进行调整。例:例:MOV AL, 00001000B (代表8)MOV BL, 00001001B (代表9)MUL BLAAM00001000 00001001AL= 01001000AH = 00000000最后结果 AH = 00000111B (代表7)对结果进行调整:AL/00001010B=00000111BAH AL%00001010B = 00000010BALAL = 00000010B (代表2)AH,AL中表示未组合型BCD码72。(6) AAD功功能能:对未组合型BCD码(在AX中)进行除法除法前的校正。例例:MOV AX, 00000111 00000010B (代表72)AAD调整前调整前, AH = 00000111AL = 00000010调整后调整后, AH = 00000000AL = 00000111B00001010B + 00000010B = 01001000B 7D10D2D72D=48HAAD相当于将两个未组合型BCD码数合并为一个二进制数。三、逻辑运算和移位循环指令三、逻辑运算和移位循环指令三、逻辑运算和移位循环指令三、逻辑运算和移位循环指令 逻辑指令在底层软件中提供了对二进制位的控制。可以对位进行置位、清0或取反。常用于控制系统的I/O设备。1. 1. 1. 1. 逻辑运算指令逻辑运算指令逻辑运算指令逻辑运算指令(1) AND d, s功能功能:s 和 d 按位按位相 “与与”,结果在 d 中。 AND指令通常用于使某些位清0,而另一些位保持不变。例例:AND BX, 0F0FH若BX=5555H,则执行后 BX=0505H 0101,0101,0101,0101B0000,1111,0000,1111B0000,0101,0000,0101BAND(2) OR d, s功能功能:s 和 d 按位按位相 “或或”,结果送 d 。OR 操作经常用于将某些位置位,其它位不变。(3) XOR d, s功能功能:s 和 d 按位按位相 “异或异或”,结果送 d 。XOR 操作经常用于将某些位取反,其它位不变。 0101,0101,0101,0101B0000,1111,0000,1111B0101,1010,0101,1010BXOR例:例:(4) NOT d功能功能:将 d 按位求反按位求反后送回。(5) TEST d, s功能功能:s 和 d 按位按位相 “与与”,但不送结果但不送结果,只根据结果设置设置标志位。TEST 指令通常用于测试某些位是为0还是为1。2. 2. 2. 2. 移位指令和循环移位指令移位指令和循环移位指令移位指令和循环移位指令移位指令和循环移位指令(1) 算术移位a. 算术左移CF0101101010CF0011010101左移 1 次: SAL d, 1左移多次: SAL d, CL (CL中为移位次数)例例:MOV BL, 10001001BSAL BL, 1结果: CF = 1,BL = 00010010B0CF注注:移位多次时,移位次数必须预先置入:移位多次时,移位次数必须预先置入CL中。中。右移 1 次: SAR d, 1右移多次: SAR d, CLb. 算术右移CF符号位(2) 逻辑移位逻辑移位a. 逻辑左移 SHL与SAL等价。b. 逻辑右移 SHR d, 1 SHR d, CLCF0(3) 循环左移循环左移a.不带进位循环左移 ROL d, 1ROL d, CLCFb. 带进位循环左移 RCL d, 1RCL d, CLCF(4) 循环右移循环右移a. 不带进位循环右移 ROR d, 1ROR d, CLCFb. 带进位循环右移 RCR d, 1RCR d, CLCF例例:设32位数在DX:AX中,实现32位数整个左移1次。SAL AX,1RCL DX,10CFAXSALDXRCL四、串操作指令四、串操作指令四、串操作指令四、串操作指令1. 1. 1. 1. 串的概念串的概念串的概念串的概念串是连续存放在内存中的字节块或字块。每个串有一个起始地址和长度。2. 2. 2. 2. 方向标志方向标志方向标志方向标志方 向 标 志DF选择串操作期间寄存器 DI , SI 的 自 增(DF=0)或 自 减(DF=1)操作。起始地址A00HHGFEDCB串长=8字节块 (串)3. 3. 3. 3. 串所在的段串所在的段串所在的段串所在的段规定:规定:(1) (1) 源串在数据段,用源串在数据段,用SISI作地址指针作地址指针(2) (2) 目的串在附加段,用目的串在附加段,用DIDI作地址指针作地址指针如果源串与目的串实质上在一个段中,则要令ES = DS。4. 4. 4. 4. 串操作指令串操作指令串操作指令串操作指令(1) MOVS d,s或写成 MOVSB (字节串传送) MOVSW (字串传送)功能功能:源串DS:SI 目的串ES:DI 同时自动修改SI,DI 重复前缀 (REP)可以加到串数据传送指令上。REP前缀使得每次执行串指令后CX减1。CX减1以后,重复执行串指令,直到CX值为0时,指令才终止。 REP 无条件无条件重复直至CX1CX = 0 REPE/REPZ 当ZF = 1且CX1CX0 则重复 REPNE/REPNZ 当ZF = 0且CX1CX0 则重复(2) 串比较串比较 CMPS d, sCMPSB (字节串比较)CMPSW (字串比较)功能功能:作一次减法减法:DS:SI ES:DI 但不送结果不送结果,同时自动修改SI,DI 串比较指令常常与有条件重复前缀配合。(3) 串搜索串搜索 SCAS dSCASB (字节串搜索)SCASW (字串搜索)功能功能:做一次减法减法 AL ES:DI (字节) AX ES:DI (字) 同时自动修改DI,但不回送结果,只 根据结果置有关标志位 串搜索指令也常与有条件重复前缀相配合。(4) 装载串装载串 LODS sLODSB (字节串)LODSW (字串)功能功能:DS:SI AL或AX 同时自动修改SI(5) 存储串存储串 STOS dSTOSB (字节串)STOSW (字串)功能功能:AL或AX ES:DI 同时自动修改DI例1. 设源串在1000H:2000H开始的100个字节单元中,要求将源串送到3000H:1020H开始的目的串中。MOV AX,1000H MOV DS,AX;置源数据段寄存器 MOV SI,2000H;置源串指针初值 MOV AX,3000H MOV ES,AX;置目的附加段寄存器 MOV DI,1020H;置目的串指针初值 CLD;DF = 0,使SI,DI自增 MOV CX,64H;置重复次数100D REP MOVSB;重复串传送,直到CX = 0初始化例2. 比较两个串,发现有不同的字符时则停止比较。CLD MOV CX,100 MOV SI,2500HMOV DI,1400HREPE CMPSB;串比较,直到ZF = 0或CX=0才停止。结果结果:若ZF=0,则两个串不相等; 若ZF=1,则两个串相等。五、程序控制指令五、程序控制指令五、程序控制指令五、程序控制指令程序控制指令用来控制程序的走向,其实质是设法改变当前的CS和IP值,以使CPU转移到一个新的地址处执行程序。A:Above 高于,高于, B:Below 低于,低于, C:Carry 进位,进位, E:Equal 等于,等于, G:Greater 大于,大于, L:Less 小于,小于, N:Not 无,无, O:Over 溢出溢出 ,S:Sign 符号,符号, PE:Parity Even 奇偶性偶,奇偶性偶, PO:Parity Odd 奇偶性奇奇偶性奇 80868086提供了四种控制提供了四种控制转移指令:无条件移指令:无条件转移指令,条件移指令,条件转移移指令,循指令,循环控制指令和中断指令。控制指令和中断指令。除中断指令外,其它转移除中断指令外,其它转移类指令都不影响状态标志。类指令都不影响状态标志。 注意指令中条件缩写字母的含意分别是:注意指令中条件缩写字母的含意分别是: 1. 1. 1. 1. 无条件转移指令无条件转移指令无条件转移指令无条件转移指令(1) JMP 目标 a. 段内段内直接直接转移 格式 JMP 目标标号 特点特点:仅仅改变IP值,而CS值不变。 例:JMP ADDI 这里ADDI为转移目标的标号。指令中的位移量=标号偏移地址-当前IP值E9位移量 (低)位移量 (高)操作码EAIP (低)IP (高)CS (低)CS (高)转移指令JMP有三种编码格式操作码 EB 位移量例:设标号偏移地址=1000H,执行完JMP指令后的当前IP值为0009H,则位移量=1000H0009H = 0FF7H编码格式 E9 F7 0F (代表JMP 1000H)b. 段内段内间接间接转移格式: JMP BX以BX的内容作为转移目标的偏移地址偏移地址。CS值不变,IP值改变。c. 段间段间直接直接转移格式:JMP FAR_ADDR功功能能:转移到另一个代码段的目标FAR_ADDR处执行。即以另一个段的基地址CS,标号的偏移地址IP。当前当前CS=2100HJMP 0C 02 00 65转移目标的偏移地址转移目标的段地址16 21000H代码段116 65000H新新CS=6500H代码段2转移至此当前当前IP =1500H新新IP = 020CHd. 段间段间间接间接转移格式:JMP BX+位移量功能功能:以有效地址有效地址EA = BX +位移量位移量作为开始地址,从前2个单元中取出内容IP,后2个单元中取出内容CS,以转移到新的地址执行程序。例:JMP BX+ADDR3 设DS=2000H,BX=1400H,ADDR3=020AH,则执行过程如下:20000H30004000IPCS00 30 00 40EA=1400H+020AH执执行行跳跳转转指指令令后后,转转移移至至4000H:3000H处执行程序处执行程序。数据段(2) CALL 目标 (过程名)CALL指令完成调用子程序调用子程序的功能。CALL指令完成的操作: 将程序的返返回回地地址址(CALL的下一条指令地址)压入堆栈堆栈中保存。 将目标的偏偏移移地地址址IP。若为远调用则再将目标的段地址段地址CS。 转移转移至新的目标 (子程序)如果是近调用,则堆栈中只保存返回地址的偏移地址;若是远调用,则还必须保存返回地址的段地址。在在子子程程序序中中 ( (过过程程) ),最最后后一一条条指指令令必必须须是是返返回回指指令令RETRET,它它将将堆堆栈栈中中保保存存的的返返回回地地址自动弹出至址自动弹出至CSCS和和IPIP。CALL指令段内调用段间调用直接调用间接调用直接调用间接调用(近调用)(远调用)(3) RET n返返回回指指令令。n n为为弹弹出出值值,它它使使SPSP值值在在正正常常返返回回之之后后的的基基础础上上再再加加上上n n (n(n为为偶偶数数) )。这是为了丢弃原已压栈的一些参数。这是为了丢弃原已压栈的一些参数。2. 2. 2. 2. 条件转移指令条件转移指令条件转移指令条件转移指令 条件转移指令共有18条,这些指令根据状态标志决定是否转移,转移的目标范围在-128+127之间。条件转移指令的执行流程条件转移指令的执行流程条件满足 ?顺序执行下一条指令目标处执行NY,转移 (1) 无符号数条件转移指令设执行了指令CMP AX,BX,其中AX,BX中均为无符号数(设AX=A,BX=B) ,则采用以下指令进行转移:含 义指 令转 移 条 件A高于BA高于等于BA低于等于BA低于BJA / JNBEJAE / JNBJB / JNAEJBE / JNACF=0 AND ZF=0CF=0 OR ZF=1CF=1 AND ZF=0CF=1 OR ZF=1 (2) 有符号数条件转移指令设执行了指令CMP AX,BX,其中AX,BX中均为有符号数(设AX=A,BX=B) ,则采用以下指令进行转移:含 义指 令转 移 条 件ABABABABJG / JNLEJGE / JNLJL / JNGEJLE / JNGSFOF=0 AND ZF=0SFOF=0 OR ZF=1SFOF=1 AND ZF=0SFOF=1 OR ZF=1 (3) 单状态标志转移指令含 义指 令转 移 条 件等于/ 结果为0JE / JZJNE / JNZJCJNCZF=0ZF=1CF=0CF=1不等于/ 结果不为0有进位/ 有借位无进位/ 无借位溢出不溢出有偶数个“1” 有奇数个“1” 符号位为 1 符号位为 0 JOJNOJP / JPEJNP / JPOJSJNSOF=0OF=1PF=0PF=1SF=0SF=13. 3. 3. 3. 循环控制指令循环控制指令循环控制指令循环控制指令以CX寄存器作为计数指针,每循环一次,CX减1,当CX减至0时,停止循环。(1) LOOP 目标标号功能功能:CX1 CX,若CX0则转移至目标,否则顺序执行下一条指令。 循环前CX必须赋初值(循环次数)(2) LOOPE/LOOPZ 目标标号功功能能:CX1CX,若CX0且且ZF=1则转移至目标,否则停止循环(CX=0或ZF=0)。(3) LOOPNE/LOOPNZ 目标标号目标标号功功能能:CX1CX,若CX0且ZF=0则转移至目标,否则停止循环(CX =0或ZF=1)。(4) JCXZ 目标标号目标标号功功能能:若CX=0则转移至目标地址,否则顺序执行下一条指令。4. 4. 4. 4. 中断指令中断指令中断指令中断指令(1) 中断入口地址表中断入口地址表8086系统允许有256种中断类型(0255),各种类型的中断在中断入口地址表中占4个字节,前2个字节用于存放中断入口地址的偏移地址,后2个字节用来存放中断入口地址的段基址。偏移地址段基址偏移地址段基址00000H00004H00008H003FCH003FFH0# 1# 2# 255#(2) 中断的响应过程中断的响应过程a. 标志寄存器FR压栈压栈;b. 使IF = 0,TF = 0;c. 将当前程序断断点点的基址和偏移地址入栈保护(以便能够正确返回);d. 将中中断断类类型型号号4,得到中断入口地址在中断入口地址表的位置,从该位置起连续的4个单元中获得中断入口地址置入CS,IP;e. CPU转向中断服务程序中断服务程序执行相关程序。(3) 中断指令中断指令a. INT n功能功能:执行软件中断,中断类型号为n, n = 0255。b. INTO功能功能:等价于INT 4,当运算结果产生溢出(OF = 1)时,产生溢出中断。c. IRET 功能功能:中断返回。 执行的操作: 从堆栈中弹出断点地址送从堆栈中弹出断点地址送CS和和IP; 恢复标志寄存器的内容;恢复标志寄存器的内容; CPU回到被打断的地址处继续执行主程序。回到被打断的地址处继续执行主程序。六、处理器控制指令六、处理器控制指令六、处理器控制指令六、处理器控制指令1. 1. 1. 1. 标志位操作指令标志位操作指令标志位操作指令标志位操作指令(2) CLD;使DF = 0 (用于串操作之中) STD;使DF = 1(3) CLI;使IF = 0 (禁止可屏蔽中断) STI;使IF = 1 (允许可屏蔽中断)(1) CLC;使CF = 0 STC;使CF = 1 CMC;使CF = CF (非)2. 2. 2. 2. 同步控制指令同步控制指令同步控制指令同步控制指令(1) ESC 外部操作码,源操作数交权指令,可以要求另外的处理器执行某种操作。等待指令,使处理器处于空转等待状态。(2) WAIT (3) LOCK锁定命令,锁定总线,使引脚LOCK变成逻辑0。(4) HLT处理器暂停命令,有四四种种状态可以使处理器脱离暂停:a. RESET 信号有效信号有效b. NMI 有效有效c. INTR 有效有效 (且且IF = 1)d. DMA 操作操作(5) NOP 空操作指令空操作指令CPU执行此指令时,不做任何具体的操作,但它消耗3个个时时钟钟周周期期的时间,它常用于程序运行中的短延时需求等。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号