微机原理与接口技术课件-2.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《微机原理与接口技术课件-2.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 课件 _2
- 资源描述:
-
1、第3章 8086/8088指令系统11/10/20221第3章 8086/8088指令系统 n3.1 8086/8088指令格式 n3.2 8086/8088寻址方式 n3.3 8086/8088指令系统 11/10/202223.1 8086/8088指令格式 11/10/202233.2 8086/8088寻址方式 n一条指令包含操作码(OP)和操作数两部分:操作码指明该指令进行什么操作操作数指出该指令在执行规定操作时所需的信息 n规定操作数的方法,即指令中用于说明操作数所在地址的方法称为寻址方式。8086/8088 的寻址方式分为两类:数据寻址方式转移地址寻址方式 11/10/20224
2、3.2.1 数据寻址方式 n指令中用于说明操作数所在地址的方 法11/10/202251.立即寻址 n当数据为 8 位或 16 位时,可直接放在指令本身的最后一个字节(8位)或两个字节(16 位)中。这样的数据常称为立即操作数 MOV AL,80H;将8位立即数80H送入AL寄存器中 MOV AX,1234H;将16位立即数1234H送入AX寄存器中,其中(AX)=1234H 11/10/20226立即数寻址方式举例 11/10/202272.寄存器寻址 n数据存放在指令规定的寄存器中n对于 16 位数据,寄存器可以是AX,BX,CX,DX,SI,DI,SP或者BPn对于 8 位数据,寄存器可
3、以是AL,AH,BL,BH,CL,CH,DL或DH MOV CL,DL MOV AX,BX 如果(DL)=50H,(BX)=1234H,执行结果为:(CL)=50H,(AX)=1234H 11/10/20228寄存器寻址方式的指令执行情况 11/10/202293.直接寻址 n操作数在存储单元中,其 16 位有效地址,即段内偏移地址在指令码之中,占两个字节。此存储单元的实际物理地址是由段寄存器内容和指令码中直接给出的有效地址之和形成的 MOV AL,1064H 如果(DS)=2000H,执行结果为:(AL)=45H。11/10/202210直接寻址示意图 11/10/2022114.寄存器间接
4、寻址 n操作数在存储单元中,其有效地址在指令码指明的基址寄存器BX、BP或变址寄存器SI或DI之中n寄存器间接寻址的操作数一定存放在存储单元中。BX、SI和DI间接寻址默认的段寄存器为DS,而BP间接寻址默认的段寄存器为SS n有效地址)()()()(DISIBPBXEA11/10/202212举例MOV AX,SIMOV BX,AL如果(DS)=3000H,(SI)=2000H,(BX)=1000H,(AL)=64H,执行结果为:(AX)=4050H,(31000H)=64H 11/10/2022135.寄存器相对寻址 n有效地址 disp16disp8DISIBPBXEA位位)()()()
5、(在一般情况下,若指令中指定的寄存器是BX、SI、DI,则操作数默认为存放在数据段(DS)中;若指令中指定的寄存器是BP,则操作数默认为存放在堆栈段(SS)中 11/10/202214举例MOV SI+10H,AXMOV CX,BX+COUNT 如果(DS)=3000H,(SI)=2000H,(BX)=1000H,COUNT=1050H,(AX)=4050H,执行结果为:(32010H)=4050H,(CX)=4030H。11/10/2022156.基址变址寻址 n有效地址)()()()(DISIBPBXEA在一般情况下,由基址寄存器决定操作数在哪个段中。若用BX的内容作为基地址,则操作数在数
6、据段(DS)中;若用BP的内容作为基地址,则操作数在堆栈段(SS)中。11/10/202216举例MOV BX+DI,AXMOV CX,BPSI 设当前(DS)=3000H,(SS)=4000H,(BX)=1000H,(DI)=1100H,(AX)=0050H,(BP)=2000H,(SI)=1200H,执行结果为:(32100H)=0050H,(CX)=1234H。11/10/2022177.基址变址且相对寻址 n有效地址 disp16disp8DISIBPBXEA位位)()()()(当基址寄存器为BX时,操作数在数据段(DS)中;基址寄存器为BP时,操作数在堆栈段(SS)中。基址变址相对寻
7、址方式同样也允许段超越。11/10/202218举例 MOV AX,BX+DI+1200HMOV BP+SI+200H,CX 若(DS)=8000H,(SS)=6000H,(BX)=1000H,(DI)=1500H,(BP)=1000H,(SI)=1600H,(CX)=7856H,执行结果为:(AX)=8056H,(62800H)=7856H 11/10/2022198.隐含寻址 n有些指令的指令码中不包含指明操作数地址的部分,而其操作码本身隐含地指明了操作数地址n字符串操作类指令就属于这种寻址 11/10/202220举例n若(BX)=1200H,(SI)=0A00H,位移量=0710H,(
8、DS)=3200H,(SS)=5000H,(BP)=2200H,段寄存器按默认段寄存器,则相对于各种寻址方式的有效地址和物理地址 11/10/202221举例(续)(1)直接寻址:EA=0710H 物理地址=32000H+0710H=32710H(2)寄存器间接寻址(假设寄存器为BP):EA=2200H 物理地址=50000H+2200H=52200H(3)寄存器相对寻址(假设寄存器为BX):EA=1200H+0710H=1910H 物理地址=32000H+1910H=33910H(4)基址变址寻址(假设寄存器为BP和SI):EA=2200H+0A00H=2C00H 物理地址=50000H+2
9、C00H=52C00H(5)基址变址且相对寻址(假设寄存器为BX和SI):EA=1200H+0A00H+0710H=2310H 物理地址=32000H+2310H=34310H 11/10/2022223.2.2 转移地址寻址方式 n程序转移是在程序转移指令的控制下实现的n程序转移指令通过改变IP和CS的内容,就可以改变程序的正常执行顺序n转移地址的寻址方式有 4 种 11/10/2022231.段内直接寻址 n指令码中包括一个位移量disp,转移的有效地址为(IP)+dispndisp在指令码中都是用补码表示的有正负符号的数。当位移量是8位时,称为短转移,转移范围为128+127;位移量是1
10、6位时,称为近转移,转移范围为32768+32767 n位移量是相对于当前IP的内容来计算的,所以又称为相对寻址 JMP NEAR PTR PROGIAJMP SHORT QUEST 其中,PROGIA和QUEST均为转向的目标地址,在机器指令中,用位移量来表示 11/10/2022242.段内间接寻址 n在同一代码段内,要转移到的地址的 16 位段内偏移地址(即有效地址)在一个 16 位寄存器中或在存储器相邻两个单元中n存放转移地址寄存器或相邻两个单元的第一个单元的地址,是在指令码中以上面讨论的数据的寻址方式给出的JMP BXJMP WORD PTR BP+10H 其中WORD PTR为操作
11、符,用以指出其后的寻址方式所取得的目标地址是一个字的有效地址 11/10/2022253.段间直接寻址 n令码中直接给出 16 位的段地址和 16 位的有效地址JMP FAR PTR LABEL_NAME 其中,LABEL_NAME是一个在另外的代码段内已定义的远标号 11/10/2022264.段间间接寻址 n与段内间接寻址相似,转移地址为 32 位(16 位段地址和 16 位有效地址)n指令中一定给出某种访问内存单元的寻址方式。用这种寻址方式计算出的存储单元地址开始的连续4个单元的内容就是要转移的地址,其中前两个单元内的16位值为有效地址,后两个单元内的 16 位值为段地址 JMP VAR
12、_DOUBLEWORD JMP DWORD PTR BX 上面第一条指令中,VAR_DOUBLEWORD应是一个已定义为32位的存储器变量;第二条指令中,利用操作符PTR将存储器操作数的类型定义为DWORD(双字)11/10/202227程序转移地址的寻址方式 位移量指令IPEA有效转移地址(a)寻址方式指令根据寻址方式计算EA有效转移地址有效转移地址寄存器存储器或(b)偏移量段地址指令CSIP(c)寻址方式指令根据寻址方式计算EA转移地址偏移量段地址内存中两个连续的字(d)(a)段内直接(相对)寻址;(b)段内间接寻址;(c)段间直接寻址;(d)段间间接寻址11/10/2022283.3 8
13、086/8088指令系统 n数据传送(Data Transfer)指令;n算术运算(Arithmetic)指令;n逻辑运算(Logic)指令;n控制转移(Control Transfer)指令;n串操作(String Manipulation)指令;n处理器控制(Processor Control)指令。11/10/2022293.3.1 数据传送指令 n通用数据传送指令;n地址传送指令;n累加器专用传送(输入/输出指令);n标志传送指令。11/10/2022301.通用数据传送指令 n传送指令MOVn数据交换指令XCHGn堆栈指令PUSH和POP 11/10/202231(1)通用传送指令M
14、OV(MOVe)n格式:MOV DST,SRC;(DST)(SRC)nDST:目的操作数,SRC:源操作数。n功能:把一个字节或字从源操作数SRC传送至目的操作数DSTn源和目的操作数不允许同时为存储器操作数;n源和目的操作数数据类型必须一致;n源和目的操作数不允许同时为段寄存器;n目的操作数不允许为CS和立即数;n当源操作数为立即数时,目的操作数不允许为段寄存器;n传送操作不影响标志位。11/10/202232通用传送指令数据流 11/10/202233举例MOV AL,DH;(AL)(DH)MOV DS,AX;(DS)(AX)MOV BX,AX;(BX)(AX)MOV AL,BLOCK;B
15、LOCK为字节型变量名MOV BLOCK,12H;(BLOCK)12HMOV AX,1234H ;(AX)1234H11/10/202234(2)交换指令XCHG(Exchange)n格式:XCHG DST,SRC;(DST)(SRC)n功能:交换操作数DST和SRC的值,操作数数据类型为字节或字。允许通用寄存器之间,通用寄存器和存储器之间交换数据。n操作数DST和SRC不允许同为存储器操作数;n操作数数据类型必须一致;n交换指令不影响标志位。11/10/202235举例XCHG AX,BX ;通用寄存器之间交换数据XCHG BX,SI;通用寄存器和存储器之间交换数据XCHG AL,BX;通用
16、寄存器和存储器之间交换数据如要实现存储器操作数交换,若BLOCK1和BLOCK2为已定义字变量,可用如下指令实现:MOV AX,BLOCK1XCHG AX,BLOCK2MOV BLOCK1,AX 11/10/202236(3)堆栈操作指令 n堆栈是以后进先出(LIFO)的规则存取信息的一种存储机构 n堆栈通常是存储器的一部分n为了保证堆栈区的存储器能按后进先出的规则存取信息,用堆栈指针SP来管理该存储区的存取地址n在信息的存与取的过程中,栈顶是不断移动的,也称它为堆栈区的动端,而堆栈区的另端则是固定不变的,这端又称其为栈底 n堆栈操作指令不影响标志位 11/10/202237举例11/10/2
17、02238 压栈指令PUSH(Push onto the stack)n格式:PUSH SRC;(SP)(SP)-2,(SP)+1,(SP)(SRC)n功能:将源操作数SRC压下堆栈,源操作数允许为16位通用寄存器、存储器和段寄存器,但不允许是立即数。操作数数据类型为字类型,压栈操作使SP值减2。11/10/202239举例PUSH AX;通用寄存器操作数入栈PUSH SI ;存储器操作数入栈PUSH CS 11/10/202240出栈指令POP(Pop from the stack)n格式:POP DST;(DST)(SP+1),(SP),(SP)(SP)+2n功能:从栈顶弹出操作数送入目的
18、操作数。目的操作数允许为16位通用寄存器、存储器和段寄存器,但不允许是CS和立即数。操作数数据类型为字类型,出栈操作使SP加2 11/10/202241举例POP AX ;操作数出栈送寄存器POP BX;操作数出栈送存储器POP DS 11/10/2022422.地址传送指令 n地址传送指令对标志位无影响 11/10/202243(1)取有效地址指令LEA(Load effective address)n格式:LEA REG,SRC;(REG)SRC的有效地址n功能:将源操作数SRC的有效地址传送到通用寄存器,操作数REG为16位通用寄存器,源操作数为存储器操作数 11/10/202244举例
19、LEA BX,1200H;(BX)=1200HMOV BX,1200H;(BX)=58A0H 图3-12 LEA和MOV指令示意图 11/10/202245(2)指针送寄存器DS指令 LDS(Load DS with pointer)n格式:LDS REG,SRC;(REG)(SRC),(DS)(SRC+2)n功能:根据源操作数SRC指定的偏移地址,在数据段中取出段地址和偏移地址分别送指定的段寄存器DS和指定的通用寄存器 11/10/202246举例LDS BX,SI;将32位地址指针分别送DS和BXDATA DD 40003500HLDS BX,DATA;(DS)4000H,(BX)3500
20、H 11/10/2022473.累加器专用传送(输入/输出指令)n输入/输出指令(IN/OUT)n查表指令XLAT(Translate)11/10/202248(1)输入/输出指令(IN/OUT)n输入IN指令是将数据(字节/字数据)从一个输入端口传送到累加器(AL或AX)中。输出OUT指令是将数据(字节/字数据)从累加器(AL或AX)传送到一个输出端口中。n输入/输出指令可以分为两大类:一类是直接端口(Port)寻址的输入/输出指令;另一类是通过DX寄存器间接寻址的输入/输出指令。在直接寻址的指令中只能寻址0255个端口,而间接寻址的指令中可寻址整个64K(0000FFFFH)个端口。n输入
21、/输出指令不影响标志位。11/10/202249输入指令IN(Input)n直接寻址格式:IN Acc,Port。此指令是将8/16位数据经输入端口Port(地址号0255)送入AL/AX累加器中;n间接寻址格式:IN Acc,DX。此指令是从DX寄存器内容指定的端口中将8/16位数据送入AL/AX寄存器中。这种寻址方式端口地址可由16位地址号表示,执行此指令前应将16位地址号存入DX寄存器中 11/10/202250输出指令OUT(Output)n直接寻址格式:OUT Port,Acc。此指令是从AL或AX累加器输出8/16位数据到指令直接指定的I/O端口Port中;n间接寻址格式:OUT
22、DX,Acc。此指令是从AL或AX累加器中输出8/16位数据到由DX寄存器内容指定的I/O端口中 11/10/202251举例IN AL,10HOUT 20H,AXOUT DX,ALIN AL,DX 11/10/202252(2)查表指令XLAT(Translate)n格式:XLAT;(AL)(BX)+(AL)n功能:将寄存器AL中的内容转换成存储器表格中的对应值。实现直接查表功能。n查表指令不影响标志位 11/10/202253举例【例 3-1】内存中有一起始地址为TABLE的编码表,试编程将表中顺序号为3的存储单元内容送寄存器AL。TABLE DB 10H,20H,30H,40H,50H,
23、60H编码表MOV AL,3 ;(AL)3LEA BX,TABLE;BXTABLE表首地址XLAT;结果在AL中,(AL)=40H 11/10/2022544.标志寄存器传送指令(1)标志送AH指令 LAHF(Load AH with flags)n格式:LAHF;(AH)(PSW)低8位n功能:将标志寄存器中低8位送AH中。不影响标志位 图3-13 LAHF指令示意图 11/10/202255(2)AH送标志寄存器指令SAHF(Store AH into flags)n格式:SAHF;(PSW)低8位(AH)n功能:将AH中内容送标志寄存器中低8位。影响标志位 11/10/202256(3)
24、标志进栈指令PUSHF(Push the flags)n格式:PUSHF;(SP)(SP)-2,(SP)+1,(SP)(PSW)n功能:将标志寄存器内容压入堆栈,(SP)(SP)-2。不影响标志位 11/10/202257(4)标志出栈指令POPF(Pop the flags)n格式:POPF;(PSW)(SP)+1,(SP),(SP)(SP)+2,n功能:将当前栈顶一个字传送到标志寄存器中,(SP)(SP)+2。影响标志位 11/10/2022583.3.2 算术运算指令 n包括加、减、乘、除四种基本算术运算操作及符号扩展指令和十进制算术运算调整指令n二进制加、减法指令,带符号操作数采用补码
25、表示时,无符号数和带符号数据运算可以使用相同的指令n二进制乘、除法指令分带符号数和无符号数运算指令 11/10/2022591.加法指令 n加法指令ADD(Add)n带进位加法指令ADC(Add with carry)11/10/202260(1)加法指令ADD(Add)n格式:ADD DST,SRC;(DST)(DST)+(SRC)n功能:ADD是将源操作数与目的操作数相加,结果传送到目的操作数。n源操作数SRC可以是通用寄存器、存储器或立即数。目的操作数DST可以是通用寄存器或存储器操作数。SRC和DST都不能为段寄存器 11/10/202261(2)带进位加法指令ADC(Add with
展开阅读全文