指令系统传送、算术运算指令.ppt
《指令系统传送、算术运算指令.ppt》由会员分享,可在线阅读,更多相关《指令系统传送、算术运算指令.ppt(117页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 3 章80868086的指令系统的指令系统1第 3 章教学重点第3章是本课程的一个关键内容,是程序设计的基础基础是熟悉寄存器组难点是各种寻址方式重点是掌握8086常用指令的功能及应用2第 3 章什么是指令系统计算机的指令系统就是指该计算机能够执行的全部指令的集合每种计算机都有它支持的指令集合 16位8086指令系统是INTEL 80X86系列微处理器指令系统的基础3第 3 章学习指令的注意事项指令的功能指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式指令支持的寻址方式指令支持的寻址方式该指令中的操作数可以采用何种寻址方式指令对标志的影响指令对标志的影响该指
2、令执行后是否对各个标志位有影响,以及如何影响其他方面其他方面该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等4第 3 章汇编语言指令格式由4部分组成:标号标号:指令助记符指令助记符 目的操作数目的操作数,源操作数源操作数;注释;注释 标号表示该指令在主存中的逻辑地址标号表示该指令在主存中的逻辑地址 每个指令助记符就代表一种指令每个指令助记符就代表一种指令 目的和源操作数表示参与操作的对象目的和源操作数表示参与操作的对象 注释是对该指令或程序段功能的说明注释是对该指令或程序段功能的说明5第 3 章指令操作数的表达(1)r8任意一个8位通用寄存器AH AL
3、BH BL CH CL DH DLr16任意一个16位通用寄存器AX BX CX DX SI DI BP SPreg代表R8或r16Sreg段寄存器 CS/DS/ES/SS6第 3 章指令操作数的表达(2)m8一个8位存储器操作数单元(所有主存寻址方式)m16一个16位存储器操作数单元(所有主存寻址方式)mem代表m8或m167第 3 章指令操作数的表达(3)i8一个8位立即数i16一个16位立即数imm代表i8或i16dest目的操作数src源操作数8第 3 章8086指令系统概述INTEL 8086指令系统共有117条基本指令,可分成7个功能组 数据传送(DATA TRANSFER)类指令
4、 算术运算(ARITHMETIC)类指令 位操作类指令 串操作(STRINCG MANIPULATION)类指令 控制转移(CONTROL TRANSFER)类指令 处理器控制(PROCESSOR CONTROL)类指令 逻辑运算指令9第 3 章教学提示 全面而准确地理解每条指令的功能和应用,是编写汇编语言程序的关键10第 3 章1.数据传送类指令数据传送是计算机中最基本、最重要的一种操作传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均不影响标志位重点掌握MOV XCHG XLAT PUSH POP LEA11第 3 章3.1 通用数据传送指令提
5、供方便灵活的通用传送操作有3条指令MOVXCHGXLATMOVMOVXCHGXCHGXLATXLAT12第 3 章1.传送指令MOV(move)把一个字节或字的操作数从源地址传送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即数送寄存器或主存立即数送寄存器或主存MOVMOVMOV reg/mem/Sreg,regMOV reg/mem/Sreg,reg;寄存器送(段)寄存器或主存寄存器送(段)寄存器或主存MOV reg/Sreg,memMOV reg/Sreg,mem;主存送(段)寄存器主存送(段)寄存器MOV Reg/mem,SregMOV Reg/mem,Sre
6、g;段寄存器送寄存器或主存段寄存器送寄存器或主存13例例1:立即数传送:立即数传送MOV AL,4;AL4,字节传送MOV CX,0FFH;CX00FFH,字传送MOV SI,200H;SI0200H,字传送MOV BYTE PTR SI,0AH;BYTE PTR 说明是字节操作MOV WORD PTR SI+2,0BH;WORD PTR 说明是字操作 注意立即数是字节量还是字量注意立即数是字节量还是字量 明确指令是字节操作还是字操作明确指令是字节操作还是字操作MOVMOV14例例2:寄存器传送:寄存器传送MOV AX,BX;AXBX,字传送MOV AH,AL;AHAL,字节传送MOV DS,
7、AX;DSAX,字传送MOV SI,AL;SIAL,字节传送MOVMOV15例例3:存储器传送:存储器传送MOV AL,BXMOV DX,BP;DXSS:BPMOV ES,SI;ESDS:SI 不存在存储器向存储器的传送指令不存在存储器向存储器的传送指令MOVMOV16例例2.5:段寄存器传送:段寄存器传送MOV SI,DSMOV AX,ES;AXESMOV DS,AX;DSAXES 对段寄存器的操作有一些限制对段寄存器的操作有一些限制MOVMOV17第 3 章MOV指令传送功能MOV也并非任意传送立即数立即数段寄存器段寄存器DS ES SSDS ES SS通用寄存器通用寄存器AX BX CX
8、 DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器(1)IP和和CS不能出现不能出现(2)存储器之间不能传送)存储器之间不能传送(3)段寄存器之间不能传送)段寄存器之间不能传送(4)立即数和段寄存器之间)立即数和段寄存器之间 不能传送不能传送3、MOV的的“4不能不能”18第 3 章非法传送种种两个操作数的类型不一致例如源操作数是字节,而目的操作数是字;或相反两个操作数不能都是存储器传送指令很灵活,但主存之间的直接传送却不允许段寄存器的操作有一些限制段寄存器属专用寄存器,对他们的操作能力有限示例示例示例示例示例示例示例示例示例示例示例示例19第 3 章两个操作
9、数的类型要一致绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令MOV AL,050AH;非法指令:050AH为字,而AL为字节寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型对于存储器单元与立即数同时作为操作数的情况,必须显式指明;ByTE PTR指示字节类型,WORD PTR指示字类型20第 3 章两个操作数不能都是存储器8086指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现MOV AX,BUFFER1;AXBUFFER1(将BUFFER1内容送AX)MOV BUFFER2,AX;BUF
10、FER2AX;这里BUFFER1和BUFFER2是两个字变量;实际表示直接寻址方式21第 3 章要小心段寄存器的操作不允许立即数传送给段寄存器MOV DS,100H;非法指令:立即数不能传送段寄存器不允许直接改变CS值MOV CS,SI;不允许使用的指令不允许段寄存器之间的直接数据传送MOV DS,ES;非法指令:不允许段寄存器间传送22第 3 章2.交换指令XCHG(EXCHANCGE)把两个地方的数据进行互换寄存器与寄存器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据XCHGXCHGXCHG reg,reg/memXCHG reg,reg/mem;reg reg r
11、eg/memreg/mem例题例题2例题例题123例例1:寄存器间交换:寄存器间交换MOV AX,1234H;AX=1234HMOV BX,5678H;BX=5678HXCHG AX,BX;AX=5678H,BX=1234HXCHG AH,AL;AX=7856HXCHGXCHG24例例2:寄存器与存储器交换:寄存器与存储器交换XCHG AX,2000H;字交换;等同于 XCHG 2000H,AXXCHG AL,2000H;字节交换;等同于 XCHG 2000H,AL XCHGXCHG25第 3 章执行XLAT时,会执行“(BX)+(AL)=EA”,EA为某一元素的代码存放地址,然后将(EA)放
12、入AL中。该指令对标志位没有影响。3.查表(代码)转换指令XLAT(TRANSLATE)指令的操作数都是隐含的,事先在BX中存放某一内存表格的首地址;在AL中为表中某一元素项与表格首地址之间的偏移量。XLATXLATXLATXLAT;ALDS:BX+ALALDS:BX+AL例题例题3该指令也是累加器专用累加器专用传送指令。26例例3:代码转换:代码转换MOV BX,100HMOV AL,03HXLAT 换换码码指指令令没没有有显显式式的的操操作作数数,但但使使用用了了BX和和AL;因因为为换换码码指指令令使使用用了了隐隐含含寻址方式寻址方式采用默认操作数采用默认操作数XLATXLAT27第 3
13、 章4.地址传送指令地址传送指令将存储器单元的逻辑地址送至指定的寄存器有效地址传送指令 LEA指针传送指令 LDS和LES注意不是获取存储器单元的内容28第 3 章有效地址传送指令LEA(LOAD EA)将存储器操作数的有效地址传送至指定的16位寄存器中例题例题6LEA r16,memLEA r16,mem;r16memr16mem的有效地址的有效地址EAEALEALEA29第 3 章例例6:获取有效地址:获取有效地址MOV BX,0400HMOV SI,3CHLEA BX,BX+SI+0F62H;BX0400H003CH0F62H139EH 获获得得主主存存单单元元的的有有效效地地址址;不不
14、是是物理地址,也不是该单元的内容物理地址,也不是该单元的内容 可以实现计算功能可以实现计算功能LEALEA30第 3 章指针传送指令LDS r16,mem;r16mem,;DSmem+2LDS指令将主存中mem指定的字送至r16,并将mem的下一字送DS寄存器LES r16,mem;r16mem,;ESmem+2LES指令将主存中mem指定的字送至r16,并将mem的下一字送ES寄存器例题例题7第 3 章31第 3 章例例7:地址指针传送:地址指针传送MOV WORD PTR 3060H,0100HMOV WORD PTR 3062H,1450HLES DI,3060H;ES=1450H,DI
15、=0100HLDS SI,3060H;DS=1450H,SI=0100H memmem指指定定主主存存的的连连续续4 4个个字字节节作作为为逻逻辑辑地地址址(3232位位的的地地址址指指针针),送入送入DS:r16DS:r16或或ES:r16ES:r16属性运算符属性运算符325.堆栈操作指令堆栈是一个“后进先出FILO”(或说“先进后出FILO”)的主存区域,位于堆栈段中;SS段寄存器记录其段地址堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定栈顶是地址较小的一端(低端),栈底不变第 2 章33第 3 章堆栈和队列堆栈:按照后进先出(LIFO)的原则组织的存储器空间(栈)队列:按照先进
16、先出(FIFO)的原则组织的存储器空间LIFOFIFO34第 3 章堆栈的操作堆栈只有两种基本操作:压栈和出栈,对应两条指令PUSH和POPPUSHPUSH;压栈指令先使压栈指令先使堆栈指针堆栈指针SPSP减减2 2,然后把一个字操然后把一个字操作数存入堆栈顶作数存入堆栈顶部部POPPOP;出栈指令把栈顶出栈指令把栈顶的一个字传送至指的一个字传送至指定的目的操作数,定的目的操作数,然后堆栈指针然后堆栈指针SPSP加加2 235第 3 章压栈指令PUSHPUSH AXPUSH 2000HPUSH r16/m16/SECGPUSH r16/m16/SECG;SPSPSPSP2 2;SS:SPr16
17、/m16/SECGSS:SPr16/m16/SECGPUSHPUSH36第 2 章出栈指令POPPOP DXPOP 2000HPOP r16/m16/SECGPOP r16/m16/SECG;r16/m16/SECGSS:SPr16/m16/SECGSS:SP;SPSPSPSP2 2POPPOP37第 3 章堆栈的特点堆栈操作的单位是字,进栈和出栈只对字量字量数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据堆栈常用来临时存放数据传递参数保存和恢复寄存器例题例题438例例4:现场保护恢复:现场保护恢复PUSH A
18、X;进入子程序后PUSH BXPUSH DS.POP DS;返回主程序前POP BXPOP AX39第 3 章标志寄存器压/出堆栈指令PUSHFPUSHF;SPSP2;SS:SPFLAGSPUSHF指令将标志寄存器的内容压入堆栈,同时栈顶指针SP减2POPFPOPF;FLAGSSS:SP;SPSP2POPF指令将栈顶字单元内容送标志寄存器,同时栈顶指针SP加2例题例题5第 3 章40第 3 章 标志寄存器堆栈操作指令(标志寄存器堆栈操作指令(PUSHF/POPF)0FFFFFH000000HSS:0000HSP堆堆栈栈段段64KSP-1SP-1FHFL指令指令 PUSHF执行后:执行后:41第
19、 3 章例例5:置位单步标志:置位单步标志PUSHF;保存全部标志到堆栈POP AX;从堆栈中取出全部标志 放到AX中OR AX,0100H;设置D8=TF=1,;AX其他位不变PUSH AX;将AX压入堆栈POPF;FLAGSAX;将堆栈内容取到标志寄存器42第 3 章6.标志寄存器传送指令标志寄存器传送指令用来传送标志寄存器FLAGS的内容,方便进行对各个标志位的直接操作有2对4条指令低8位传送:LAHF和SAHF16位传送:PUSHF和POPF43标志低字节进出AH指令LAHF;AHFLAGS的低字节LAHF指令将标志寄存器的低字节送寄存器AHSF/ZF/AF/PF/CF状态标志位分别送
20、入AH的第7/6/4/2/0位,而AH的第5/3/1位任意SAHF;FLAGS的低字节AHSAHF将AH寄存器内容送FLAGS的低字节用AH的第7/6/4/2/0位相应设置SF/ZF/AF/PF/CF标志第 3 章44第 3 章标志寄存器传送指令标志寄存器传送指令设置标志指令(设置标志指令(LAHF/SAHF)D7D6D5D4D3D2D1D0SF ZFAFPFCFOF DF IF TFFLAGAH执行指令执行指令LAHFD7D6D5D4D3D2D1D0SF ZFAFPFCFOF DF IF TFFLAGAH执行指令执行指令SAHF45第 3 章7.输入/输出(I/O)指令8086通过输入输出指
21、令与外设进行数据交换;呈现给程序员的外设是端口(PORT)即I/O地址8086用于寻址外设端口的地址线为16条,端口最多为21665536(64K)个,端口号为0000HFFFFH每个端口用于传送一个字节的外设数据累加器专用专用的传送指令之一。46第 3 章I/O端口的寻址方式8086的端口有64K个,无需分段,设计有两种寻址方式v直接寻址:只用于寻址00HFFH前256个端口,操作数i8表示端口号vDX寄存器间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号对大于FFH的端口只能采用间接寻址方式47第 3 章IN AL,NIN AX,NIN AL,DXIN AX,DXOUT N,
22、ALOUT N,AXOUT DX,ALOUT DX,AX端口端口地址地址为为16位位端口端口地址地址为为8位位传送传送8位位数据数据传送传送16位位数据数据I/O指令(指令(IN/OUT)48第 3 章输入指令IN将外设数据传送给CPU内的AL/AXIN AL,i8IN AL,i8;字节输入:字节输入:ALI/OALI/O端口(端口(i8i8直接寻址)直接寻址)IN AL,DXIN AL,DX;字节输入:字节输入:ALI/OALI/O端口(端口(DXDX间接寻址)间接寻址)IN AX,i8IN AX,i8;字输入:字输入:AXI/OAXI/O端口(端口(i8i8直接寻址)直接寻址)IN AX,
23、DXIN AX,DX;字输入:字输入:AXI/OAXI/O端口(端口(DXDX间接寻址)间接寻址)ININ例题例题8演示演示演示演示49例例2.15:输入字量:输入字量;直接寻址,字节量输入IN AL,21HMOV AH,ALIN AL,20H;直接寻址,字量输入IN AX,20H;间接寻址,字量输入MOV DX,20HIN AX,DX 两段功能相同两段功能相同 字字量量数数据据传传送送实实际际上上实实现现了了连连续续的的两两个个端端口口地地址址的的字字节量传送节量传送ININ50第 3 章输出指令OUT将CPU内的AL/AX数据传送给外设OUT i8,ALOUT i8,AL;字节输出:字节输
24、出:I/OI/O端口端口ALAL(i8i8直接寻址)直接寻址)OUT DX,ALOUT DX,AL;字节输出:字节输出:I/OI/O端口端口ALAL(DXDX间接寻址)间接寻址)OUT i8,AXOUT i8,AX;字输出:字输出:I/OI/O端口端口AXAX(i8i8直接寻址)直接寻址)OUT DX,AXOUT DX,AX;字输出:字输出:I/OI/O端口端口AXAX(DXDX间接寻址)间接寻址)OUTOUT例题例题9演示演示演示演示51例例9:输出字节量:输出字节量;间接寻址,字节量输出MOV DX,3FCHMOV AL,80HOUT DX,ALOUTOUT52第 3 章小结小结1、基本传
25、送指令(、基本传送指令(MOV)2、堆栈操作指令(、堆栈操作指令(PUSH/POP)3、交换指令(、交换指令(XCHG)存储器存储器通用寄存器通用寄存器段寄存器(段寄存器(CS除外)除外)立即数立即数存储器存储器段寄存器(段寄存器(CS除外)除外)通用寄存器通用寄存器堆栈堆栈通用寄存器通用寄存器存储器存储器53第 3 章3、I/O指令(指令(IN/OUT)累加器累加器8位立位立即地址即地址DX间间接地址接地址4、LEA指令(指令(IN/OUT)16位位寄存器寄存器16位位存储器存储器OFFSET5、地址指针传送指令、地址指针传送指令(LDS/LES)16位位寄存器寄存器32位位存储器存储器低字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统 传送 算术 运算 指令
限制150内