指令系统传送算术运算指令.ppt
《指令系统传送算术运算指令.ppt》由会员分享,可在线阅读,更多相关《指令系统传送算术运算指令.ppt(117页珍藏版)》请在三一办公上搜索。
1、8086的指令系统,2,教学重点,第3章是本课程的一个关键内容,是程序设计的基础基础是熟悉寄存器组难点是各种寻址方式重点是掌握8086常用指令的功能及应用,3,什么是指令系统,计算机的指令系统就是指该计算机能够执行的全部指令的集合每种计算机都有它支持的指令集合 16位8086指令系统是INTEL 80X86系列微处理器指令系统的基础,4,学习指令的注意事项,指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式指令支持的寻址方式该指令中的操作数可以采用何种寻址方式指令对标志的影响该指令执行后是否对各个标志位有影响,以及如何影响其他方面该指令其他需要特别注意的地方,如
2、指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等,5,汇编语言指令格式,由4部分组成:标号:指令助记符 目的操作数,源操作数;注释,标号表示该指令在主存中的逻辑地址,每个指令助记符就代表一种指令,目的和源操作数表示参与操作的对象,注释是对该指令或程序段功能的说明,6,指令操作数的表达(1),r8任意一个8位通用寄存器AH AL BH BL CH CL DH DLr16任意一个16位通用寄存器AX BX CX DX SI DI BP SPreg代表R8或r16Sreg段寄存器 CS/DS/ES/SS,一定要熟悉噢!,7,指令操作数的表达(2),m8一个8位存储器操作数单元(所有主存寻址方
3、式)m16一个16位存储器操作数单元(所有主存寻址方式)mem代表m8或m16,一定要熟悉噢!,8,指令操作数的表达(3),i8一个8位立即数i16一个16位立即数imm代表i8或i16dest目的操作数src源操作数,一定要熟悉噢!,9,8086指令系统概述,INTEL 8086指令系统共有117条基本指令,可分成7个功能组 数据传送(DATA TRANSFER)类指令 算术运算(ARITHMETIC)类指令 位操作类指令 串操作(STRINCG MANIPULATION)类指令 控制转移(CONTROL TRANSFER)类指令 处理器控制(PROCESSOR CONTROL)类指令 逻辑
4、运算指令,教学提示,全面而准确地理解每条指令的功能和应用,是编写汇编语言程序的关键,逐个展开指令,11,1.数据传送类指令,数据传送是计算机中最基本、最重要的一种操作传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均不影响标志位重点掌握MOV XCHG XLAT PUSH POP LEA,12,3.1 通用数据传送指令,提供方便灵活的通用传送操作有3条指令MOVXCHGXLAT,MOV,XCHG,XLAT,13,1.传送指令MOV(move),把一个字节或字的操作数从源地址传送至目的地址,MOV reg/mem,imm;立即数送寄存器或主存,MOV
5、,MOV reg/mem/Sreg,reg;寄存器送(段)寄存器或主存,MOV reg/Sreg,mem;主存送(段)寄存器,MOV Reg/mem,Sreg;段寄存器送寄存器或主存,例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 说明是字操作,注意立即数是字节量还是字量 明确指令是字节操作还是字操作,MOV,例2:寄存器传送,MOV AX,BX;AXBX,字传送MO
6、V AH,AL;AHAL,字节传送MOV DS,AX;DSAX,字传送MOV SI,AL;SIAL,字节传送,MOV,例3:存储器传送,MOV AL,BXMOV DX,BP;DXSS:BPMOV ES,SI;ESDS:SI,不存在存储器向存储器的传送指令,MOV,例2.5:段寄存器传送,MOV SI,DSMOV AX,ES;AXESMOV DS,AX;DSAXES,对段寄存器的操作有一些限制,MOV,18,MOV指令传送功能,MOV也并非任意传送,立即数,段寄存器DS ES SS,通用寄存器AX BX CX DXBP SP SI DI,存储器,(1)IP和CS不能出现(2)存储器之间不能传送(
7、3)段寄存器之间不能传送(4)立即数和段寄存器之间 不能传送,3、MOV的“4不能”,19,非法传送种种,两个操作数的类型不一致例如源操作数是字节,而目的操作数是字;或相反两个操作数不能都是存储器传送指令很灵活,但主存之间的直接传送却不允许段寄存器的操作有一些限制段寄存器属专用寄存器,对他们的操作能力有限,示例,示例,示例,20,两个操作数的类型要一致,绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令MOV AL,050AH;非法指令:050AH为字,而AL为字节寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型对于存储器单元与立即数
8、同时作为操作数的情况,必须显式指明;ByTE PTR指示字节类型,WORD PTR指示字类型,21,两个操作数不能都是存储器,8086指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现MOV AX,BUFFER1;AXBUFFER1(将BUFFER1内容送AX)MOV BUFFER2,AX;BUFFER2AX;这里BUFFER1和BUFFER2是两个字变量;实际表示直接寻址方式,22,要小心段寄存器的操作,不允许立即数传送给段寄存器MOV DS,100H;非法指令:立即数不能传送段寄存器不允许直接改变CS值MOV CS,SI;不允许使用的指令不允许段寄存
9、器之间的直接数据传送MOV DS,ES;非法指令:不允许段寄存器间传送,23,2.交换指令XCHG(EXCHANCGE),把两个地方的数据进行互换,寄存器与寄存器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据,XCHG,XCHG reg,reg/mem;reg reg/mem,例题2,例题1,例1:寄存器间交换,MOV AX,1234H;AX=1234HMOV BX,5678H;BX=5678HXCHG AX,BX;AX=5678H,BX=1234HXCHG AH,AL;AX=7856H,XCHG,例2:寄存器与存储器交换,XCHG AX,2000H;字交换;等同于 X
10、CHG 2000H,AXXCHG AL,2000H;字节交换;等同于 XCHG 2000H,AL,XCHG,26,执行XLAT时,会执行“(BX)+(AL)=EA”,EA为某一元素的代码存放地址,然后将(EA)放入AL中。该指令对标志位没有影响。,3.查表(代码)转换指令XLAT(TRANSLATE),指令的操作数都是隐含的,事先在BX中存放某一内存表格的首地址;在AL中为表中某一元素项与表格首地址之间的偏移量。,XLAT,XLAT;ALDS:BX+AL,例题3,该指令也是累加器专用传送指令。,例3:代码转换,MOV BX,100HMOV AL,03HXLAT,换码指令没有显式的操作数,但使用
11、了BX和AL;因为换码指令使用了隐含寻址方式采用默认操作数,XLAT,28,4.地址传送指令,地址传送指令将存储器单元的逻辑地址送至指定的寄存器有效地址传送指令 LEA指针传送指令 LDS和LES注意不是获取存储器单元的内容,29,有效地址传送指令LEA(LOAD EA),将存储器操作数的有效地址传送至指定的16位寄存器中,例题6,LEA r16,mem;r16mem的有效地址EA,LEA,30,例6:获取有效地址,MOV BX,0400HMOV SI,3CHLEA BX,BX+SI+0F62H;BX0400H003CH0F62H139EH,获得主存单元的有效地址;不是物理地址,也不是该单元的
12、内容 可以实现计算功能,LEA,31,指针传送指令,LDS r16,mem;r16mem,;DSmem+2LDS指令将主存中mem指定的字送至r16,并将mem的下一字送DS寄存器,LES r16,mem;r16mem,;ESmem+2LES指令将主存中mem指定的字送至r16,并将mem的下一字送ES寄存器,例题7,32,例7:地址指针传送,MOV WORD PTR 3060H,0100HMOV WORD PTR 3062H,1450HLES DI,3060H;ES=1450H,DI=0100HLDS SI,3060H;DS=1450H,SI=0100H,mem指定主存的连续4个字节作为逻辑
13、地址(32位的地址指针),送入DS:r16或ES:r16,属性运算符,5.堆栈操作指令,堆栈是一个“后进先出FILO”(或说“先进后出FILO”)的主存区域,位于堆栈段中;SS段寄存器记录其段地址堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定栈顶是地址较小的一端(低端),栈底不变,34,堆栈和队列,堆栈:按照后进先出(LIFO)的原则组织的存储器空间(栈)队列:按照先进先出(FIFO)的原则组织的存储器空间,35,堆栈的操作,堆栈只有两种基本操作:压栈和出栈,对应两条指令PUSH和POP,PUSH;压栈指令先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部,POP;出栈指令把栈顶的一
14、个字传送至指定的目的操作数,然后堆栈指针SP加2,压栈指令PUSH,PUSH AXPUSH 2000H,PUSH r16/m16/SECG;SPSP2;SS:SPr16/m16/SECG,PUSH,出栈指令POP,POP DXPOP 2000H,POP r16/m16/SECG;r16/m16/SECGSS:SP;SPSP2,POP,38,堆栈的特点,堆栈操作的单位是字,进栈和出栈只对字量字量数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据堆栈常用来临时存放数据传递参数保存和恢复寄存器,例题4,例4:现场保护恢
15、复,PUSH AX;进入子程序后PUSH BXPUSH DS.POP DS;返回主程序前POP BXPOP AX,40,标志寄存器压/出堆栈指令,PUSHF;SPSP2;SS:SPFLAGSPUSHF指令将标志寄存器的内容压入堆栈,同时栈顶指针SP减2,POPF;FLAGSSS:SP;SPSP2POPF指令将栈顶字单元内容送标志寄存器,同时栈顶指针SP加2,例题5,41,标志寄存器堆栈操作指令(PUSHF/POPF),0FFFFFH,000000H,SS:0000H,SP,堆栈段,64K,FH,FL,指令 PUSHF执行后:,42,例5:置位单步标志,PUSHF;保存全部标志到堆栈POP AX
16、;从堆栈中取出全部标志 放到AX中OR AX,0100H;设置D8=TF=1,;AX其他位不变PUSH AX;将AX压入堆栈POPF;FLAGSAX;将堆栈内容取到标志寄存器,43,6.标志寄存器传送指令,标志寄存器传送指令用来传送标志寄存器FLAGS的内容,方便进行对各个标志位的直接操作有2对4条指令低8位传送:LAHF和SAHF16位传送:PUSHF和POPF,标志低字节进出AH指令,LAHF;AHFLAGS的低字节LAHF指令将标志寄存器的低字节送寄存器AHSF/ZF/AF/PF/CF状态标志位分别送入AH的第7/6/4/2/0位,而AH的第5/3/1位任意,SAHF;FLAGS的低字节
17、AHSAHF将AH寄存器内容送FLAGS的低字节用AH的第7/6/4/2/0位相应设置SF/ZF/AF/PF/CF标志,45,标志寄存器传送指令,设置标志指令(LAHF/SAHF),46,7.输入/输出(I/O)指令,8086通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(PORT)即I/O地址8086用于寻址外设端口的地址线为16条,端口最多为21665536(64K)个,端口号为0000HFFFFH每个端口用于传送一个字节的外设数据累加器专用的传送指令之一。,47,I/O端口的寻址方式,8086的端口有64K个,无需分段,设计有两种寻址方式直接寻址:只用于寻址00HFFH前2
18、56个端口,操作数i8表示端口号DX寄存器间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号对大于FFH的端口只能采用间接寻址方式,48,IN AL,NIN AX,NIN AL,DXIN AX,DX,OUT N,ALOUT N,AXOUT DX,ALOUT DX,AX,端口地址为16位,端口地址为8位,传送8位数据,传送16位数据,I/O指令(IN/OUT),49,输入指令IN,将外设数据传送给CPU内的AL/AX,IN AL,i8;字节输入:ALI/O端口(i8直接寻址)IN AL,DX;字节输入:ALI/O端口(DX间接寻址)IN AX,i8;字输入:AXI/O端口(i8直接寻
19、址)IN AX,DX;字输入:AXI/O端口(DX间接寻址),IN,例题8,演示,例2.15:输入字量,;直接寻址,字节量输入IN AL,21HMOV AH,ALIN AL,20H;直接寻址,字量输入IN AX,20H;间接寻址,字量输入MOV DX,20HIN AX,DX,两段功能相同 字量数据传送实际上实现了连续的两个端口地址的字节量传送,IN,51,输出指令OUT,将CPU内的AL/AX数据传送给外设,OUT i8,AL;字节输出:I/O端口AL(i8直接寻址)OUT DX,AL;字节输出:I/O端口AL(DX间接寻址)OUT i8,AX;字输出:I/O端口AX(i8直接寻址)OUT D
20、X,AX;字输出:I/O端口AX(DX间接寻址),OUT,例题9,演示,例9:输出字节量,;间接寻址,字节量输出MOV DX,3FCHMOV AL,80HOUT DX,AL,OUT,53,小结,1、基本传送指令(MOV),2、堆栈操作指令(PUSH/POP),3、交换指令(XCHG),54,3、I/O指令(IN/OUT),累加器,8位立即地址,DX间接地址,4、LEA指令(IN/OUT),16位寄存器,16位存储器,OFFSET,5、地址指针传送指令(LDS/LES),16位寄存器,32位存储器,低字,DS/ES,高字,55,作业,1、设堆栈指针SP的初值为1000H,AX=2000H,BX=
21、3000H,试问:A、执行 PUSH AX 后,SP的值是多少?B、在执行 PUSH BX 以及 POP AX 后,SP、AX和BX的值各为多少?2、要想完成把3000H送2000H中,用指令:MOV 2000H,3000H是否正确?若不正确,请用正确的指令实现。3、试述指令MOV AX,2010H和MOV AX,DS:2010H的区别。,56,4、指出下列指令语法是否正确,若不正确,请说明原因。(1)MOV DS,0100H(2)MOV BP,AL(2)XCHG AH,AL(4)OUT 310H,AL(5)MOV BX,BX(6)MOV AX,SI+DI(7)MOV SS:BX+SI+100
22、H,BX5、若SP2000H,AX3355H,BX4466H,试指出下列指令,或程序段执行后写出有关寄存器的内容。(1)PUSH AX;执行后 AX?SP?(2)PUSH AXPUSH BXPOP DX;执行后 AX?DX?SP?,have a rest,58,2.算术运算指令,学习任务,重点注意,1、掌握算术运算类指令的用法2、熟悉指令执行后对标志位的影响,1、带符号数的算术运算2、十进制调整指令的使用,59,2.算术运算类指令,四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十进制)数据的四则运算,60,算术运算类指令涉及两种类型数据:无符号数和有符号数。对加减法指令,无符号
23、和有符号数可采用同一套指令,但应注意:参加的操作数必须都是无符号数或都是有符号数。需使用不同的标志位来检查无符号数和有符号数的运算结果是否溢出。,61,两个8位数相加时有4种情况:,无符号数和有符号数均不溢出二进制相加 无符号数加 有符号数加 0000 1000 8+8+0001 1110+30+(+30)0010 0110 38+38 结果38 CF=0 OF=0,62,无符号数溢出 0000 1000 8+8+1111 1101+253+(-3)10000 0101 261+5 结果5 CF=1 OF=0 有符号数溢出 0000 1000 8+8+0111 1101+125+(+125)1
24、000 0101 133+133结果-123 CF=0 OF=1(补码表示),63,无符号数和有符号数均溢出 1000 1000 136-120+1111 0111+247+(-9)10111 1111 383-129 结果127 CF=1 OF=1上面四种情况说明,CF标志可用来表示无符号数的溢出,OF标志可用来表示有符号数的溢出。有符号数的溢出是一种出错状态,在运算过程中应当避免。,64,(一)加法指令,不考虑进位加法指令ADD op1,op2考虑进位加法指令 ADC op1,op2增量指令 INC op交换加法指令 XADD op1,op2,65,不考虑进位加法指令ADD,ADD指令将源
25、与目的操作数相加,结果送到目的操作数,ADD指令按状态标志的定义相应设置,ADD,ADD reg,imm/reg/mem;regregimm/reg/memADD mem,imm/reg;memmemimm/reg,例题1,ADD OPRD1,OPRD2;OPRD1OPRD1+OPRD2;对标志位产生影响,66,加法指令(ADD),NF,OF,DF,IF,TF,SF,ZF,AF,PF,CF,D15,D14,D13,D12,D11,D10,D9,D8,D7,D6,D5,D4,D3,D2,D1,D0,例2:设AL=3AH,则执行 ADD AL,7CH 后,AL=?各标志位如何?,AL=3AH001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统 传送 算术 运算 指令
链接地址:https://www.31ppt.com/p-5736185.html