微型计算机原理63.3指令系统传送、算术运算指令

上传人:E**** 文档编号:90906199 上传时间:2019-06-20 格式:PPT 页数:109 大小:1.07MB
返回 下载 相关 举报
微型计算机原理63.3指令系统传送、算术运算指令_第1页
第1页 / 共109页
微型计算机原理63.3指令系统传送、算术运算指令_第2页
第2页 / 共109页
微型计算机原理63.3指令系统传送、算术运算指令_第3页
第3页 / 共109页
微型计算机原理63.3指令系统传送、算术运算指令_第4页
第4页 / 共109页
微型计算机原理63.3指令系统传送、算术运算指令_第5页
第5页 / 共109页
点击查看更多>>
资源描述

《微型计算机原理63.3指令系统传送、算术运算指令》由会员分享,可在线阅读,更多相关《微型计算机原理63.3指令系统传送、算术运算指令(109页珍藏版)》请在金锄头文库上搜索。

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 DL r16任意一个16位通用寄存器 AX BX CX DX SI DI BP SP reg代表R8或r16 Sreg段寄存器 CS/DS/ES/SS,一定要熟悉噢!,7,指令操作数的表达(2),m8一个8位存储

3、器操作数单元(所有主存寻址方式) m16一个16位存储器操作数单元(所有主存寻址方式) mem代表m8或m16,一定要熟悉噢!,8,指令操作数的表达(3),i8一个8位立即数 i16一个16位立即数 imm代表i8或i16 dest目的操作数 src源操作数,一定要熟悉噢!,9,8086指令系统概述,INTEL 8086指令系统共有117条基本指令,可分成7个功能组 数据传送(DATA TRANSFER)类指令 算术运算(ARITHMETIC)类指令 位操作类指令 串操作(STRINCG MANIPULATION)类指令 控制转移(CONTROL TRANSFER)类指令 处理器控制(PROC

4、ESSOR CONTROL)类指令 逻辑运算指令,教学提示,全面而准确地理解每条指令的功能和应用,是编写汇编语言程序的关键,逐个展开指令,11,1.数据传送类指令,数据传送是计算机中最基本、最重要的一种操作 传送指令也是最常使用的一类指令 传送指令把数据从一个位置传送到另一个位置 除标志寄存器传送指令外,均不影响标志位 重点掌握 MOV XCHG XLAT PUSH POP LEA,12,3.1 通用数据传送指令,提供方便灵活的通用传送操作 有3条指令 MOV XCHG XLAT,MOV,XCHG,XLAT,13,1.传送指令MOV(move),把一个字节或字的操作数从源地址传送至目的地址,M

5、OV reg/mem,imm ;立即数送寄存器或主存,MOV,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 说明是字操作,注意立即数是字节量还是字量 明确指令是字

6、节操作还是字操作,MOV,例2:寄存器传送,MOV AX,BX ;AXBX,字传送 MOV AH,AL ;AHAL,字节传送 MOV DS,AX ;DSAX,字传送 MOV SI,AL ;SIAL,字节传送,MOV,例3:存储器传送,MOV AL,BX MOV DX,BP ;DXSS:BP MOV ES,SI ;ESDS:SI,不存在存储器向存储器的传送指令,MOV,例2.5:段寄存器传送,MOV SI,DS MOV AX,ES ;AXES MOV DS,AX ;DSAXES,对段寄存器的操作有一些限制,MOV,18,MOV指令传送功能,MOV也并非任意传送,立即数,段寄存器 DS ES SS

7、,通用寄存器 AX BX CX DX BP SP SI DI,存 储 器,(1)IP和CS不能出现 (2)存储器之间不能传送 (3)段寄存器之间不能传送 (4)立即数和段寄存器之间 不能传送,3、MOV的 “4不能”,19,非法传送种种,两个操作数的类型不一致 例如源操作数是字节,而目的操作数是字;或相反 两个操作数不能都是存储器 传送指令很灵活,但主存之间的直接传送却不允许 段寄存器的操作有一些限制 段寄存器属专用寄存器,对他们的操作能力有限,示例,示例,示例,20,两个操作数的类型要一致,绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令 MOV AL,0

8、50AH ;非法指令:050AH为字,而AL为字节 寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型 对于存储器单元与立即数同时作为操作数的情况,必须显式指明;ByTE PTR指示字节类型,WORD PTR指示字类型,21,两个操作数不能都是存储器,8086指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现 MOV AX,BUFFER1 ;AXBUFFER1(将BUFFER1内容送AX) MOV BUFFER2,AX ;BUFFER2AX ;这里BUFFER1和BUFFER2是两个字变量 ;实际表示直接寻址方式,22,要小心段寄

9、存器的操作,不允许立即数传送给段寄存器 MOV DS,100H ;非法指令:立即数不能传送段寄存器 不允许直接改变CS值 MOV CS,SI ;不允许使用的指令 不允许段寄存器之间的直接数据传送 MOV DS,ES ;非法指令:不允许段寄存器间传送,23,2.交换指令XCHG(EXCHANCGE),把两个地方的数据进行互换,寄存器与寄存器之间对换数据 寄存器与存储器之间对换数据 不能在存储器与存储器之间对换数据,XCHG,XCHG reg,reg/mem ;reg reg/mem,例题2,例题1,例1:寄存器间交换,MOV AX,1234H ;AX=1234H MOV BX,5678H ;BX

10、=5678H XCHG AX,BX ;AX=5678H,BX=1234H XCHG AH,AL ;AX=7856H,XCHG,例2:寄存器与存储器交换,XCHG AX,2000H ;字交换 ;等同于 XCHG 2000H,AX XCHG AL,2000H ;字节交换 ;等同于 XCHG 2000H,AL,XCHG,26,执行XLAT时,会执行“(BX)+(AL)=EA”,EA为某一元素的代码存放地址,然后将(EA)放入AL中。 该指令对标志位没有影响。,3.查表(代码)转换指令XLAT(TRANSLATE),指令的操作数都是隐含的,事先在BX中存放某一内存表格的首地址;在AL中为表中某一元素项

11、与表格首地址之间的偏移量。,XLAT,XLAT ;ALDS:BX+AL,例题3,该指令也是累加器专用传送指令。,例3:代码转换,MOV BX,100H MOV AL,03H XLAT,换码指令没有显式的操作数,但使用了BX和AL;因为换码指令使用了隐含寻址方式采用默认操作数,XLAT,4. 堆栈操作指令,堆栈是一个“后进先出FILO”(或说“先进后出FILO”)的主存区域,位于堆栈段中;SS段寄存器记录其段地址 堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定 栈顶是地址较小的一端(低端),栈底不变,29,堆栈和队列,堆栈:按照后进先出(LIFO)的原则组织的存储器空间(栈) 队列:按照

12、先进先出(FIFO)的原则组织的存储器空间,30,堆栈的操作,堆栈只有两种基本操作:压栈和出栈,对应两条指令PUSH和POP,PUSH ;压栈指令先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部,POP ;出栈指令把栈顶的一个字传送至指定的目的操作数,然后堆栈指针SP加2,压栈指令PUSH,PUSH AX PUSH 2000H,PUSH r16/m16/SECG ;SPSP2 ;SS:SPr16/m16/SECG,PUSH,出栈指令POP,POP DX POP 2000H,POP r16/m16/SECG ;r16/m16/SECGSS:SP ;SPSP2,POP,33,堆栈的特点,堆栈操

13、作的单位是字,进栈和出栈只对字量 字量数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节 堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据 堆栈常用来 临时存放数据 传递参数 保存和恢复寄存器,例题4,例4:现场保护恢复,PUSH AX ;进入子程序后 PUSH BX PUSH DS . POP DS ;返回主程序前 POP BX POP AX,35,5. 标志寄存器传送指令,标志寄存器传送指令用来传送标志寄存器FLAGS的内容,方便进行对各个标志位的直接操作 有2对4条指令 低8位传送:LAHF和SAHF 16位传送:PUSHF和POPF,标志低字节进出AH

14、指令,LAHF ;AHFLAGS的低字节 LAHF指令将标志寄存器的低字节送寄存器AH SF/ZF/AF/PF/CF状态标志位分别送入AH的第7/6/4/2/0位,而AH的第5/3/1位任意,SAHF ;FLAGS的低字节AH SAHF将AH寄存器内容送FLAGS的低字节 用AH的第7/6/4/2/0位相应设置SF/ZF/AF/ PF/CF标志,37,标志寄存器传送指令,设置标志指令(LAHF/SAHF),标志寄存器压/出堆栈指令,PUSHF ;SPSP2 ;SS:SPFLAGS PUSHF指令将标志寄存器的内容压入堆栈,同时栈顶指针SP减2,POPF ;FLAGSSS:SP ;SPSP2 P

15、OPF指令将栈顶字单元内容送标志寄存器,同时栈顶指针SP加2,例题5,例5:置位单步标志,PUSHF ;保存全部标志到堆栈 POP AX ;从堆栈中取出全部标志 放到AX中 OR AX,0100H ;设置D8=TF=1, ;AX其他位不变 PUSH AX ;将AX压入堆栈 POPF ;FLAGSAX ;将堆栈内容取到标志寄存器,40,标志寄存器堆栈操作指令(PUSHF/POPF),0FFFFFH,000000H,SS: 0000H,SP,堆栈段,64K,FH,FL,指令 PUSHF 执行后:,41,6. 地址传送指令,地址传送指令将存储器单元的逻辑地址送至指定的寄存器 有效地址传送指令 LEA

16、 指针传送指令 LDS和LES 注意不是获取存储器单元的内容,42,有效地址传送指令LEA(LOAD EA),将存储器操作数的有效地址传送至指定的16位寄存器中,例题6,LEA r16,mem ;r16mem的有效地址EA,LEA,例6:获取有效地址,MOV BX,0400H MOV SI,3CH LEA BX,BX+SI+0F62H ;BX0400H003CH0F62H139EH,获得主存单元的有效地址;不是物理地址,也不是该单元的内容 可以实现计算功能,LEA,指针传送指令,LDS r16,mem ;r16mem, ;DSmem+2 LDS指令将主存中mem指定的字送至r16,并将mem的下一字送DS寄存器,LES r16,mem ;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号