数据传送.ppt

上传人:本田雅阁 文档编号:3184509 上传时间:2019-07-22 格式:PPT 页数:41 大小:315.51KB
返回 下载 相关 举报
数据传送.ppt_第1页
第1页 / 共41页
数据传送.ppt_第2页
第2页 / 共41页
数据传送.ppt_第3页
第3页 / 共41页
数据传送.ppt_第4页
第4页 / 共41页
数据传送.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《数据传送.ppt》由会员分享,可在线阅读,更多相关《数据传送.ppt(41页珍藏版)》请在三一文库上搜索。

1、1,3.2 8086/8088指令系统,Intel 8086指令系统共有117条基本指令,可分成6个功能组 数据传送类指令 算术运算类指令 逻辑运算与移位类指令(位操作类指令) 串操作类指令 控制转移类指令 处理器控制类指令,2,学习指令的注意事项,指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。 指令支持的寻址方式该指令中的操作数可以采用何种寻址方式。 指令对标志位的影响该指令执行后是否对各个标志位有影响,以及如何影响。 其他方面该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等。,3,指令操作数的符号说明,通用寄存器

2、 reg, reg8/reg16 段寄存器 sreg 存储单元 mem , mem8/mem16 立即数 imm , imm8/imm16 操作数 OPRD 目的操作数 OPRD1 , 源操作数 OPRD2,4,一、数据传送类指令,数据传送是计算机中最基本、最重要,最常使用的一种操作。 传送指令把数据从一个位置传送(复制)到另一个位置 除标志寄存器传送指令外,均不影响标志位 重点掌握: MOV / PUSH / POP 特别熟悉: XCHG/XLAT/LEA 一般了解: LAHF/SAHF/PUSHF/POPF/LDS/LES 以后展开: IN / OUT,包括如下指令 通用数据传送: MOV

3、 、PUSH、POP、XCHG、XLAT 目标地址传送: LEA、LDS、LES 标志位传送: LAHF、SAHF、PUSHF、POPF I/O数据传送: IN、OUT,5,1、通用数据传送 1) 传送指令MOV,格式:MOV OPRD1,OPRD2 功能:把一个字节或字的源操作数传送给目标操作数. OPRD2 OPRD1 操作数的形式(寻址方式):,6,MOV并非任意传送,MOV mem/reg , im MOV mem/reg, reg MOV reg ,mem/reg MOV mem/reg , sreg MOV sreg, mem/reg ;(除CS 以外),7,注意事项: 两操作数类

4、型要一致 立即数和CS不能为目标操作数 在源操作数是立即数时,目标操作数不能是段寄存器 两个操作数不能同时为段寄存器 两个操作数不能同时为存储器操作数 IP、FLAG不能为MOV指令操作数,8,绝大多数双操作数指令,除非特别说明,目的操作数与源操作数类型必须一致,否则为非法指令 mov al ,cl mov al ,bx mov dh ,value mov cx ,value 寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型 对于存储器操作数与立即数同时作为操作数的情况,必须显式指明存储器操作数的类型,立即数范围不能超过存储器操作数的类型 byte ptr 指示字节类

5、型, word ptr 指示字类型 通用寄存器与立即数同时作为操作数的情况,立即数范围不能超过寄存器的类型,两个操作数的类型要一致,9,mov si+2,ax ;字传送 mov byte ptrsi,0ah ;byte ptr 说明是字节操作 mov word ptrsi+2,0bh ;word ptr 说明是字操作 mov cx,0ffh ;cx00ffh,字传送 mov sp,3200h ;si3200h,字传送 mov al,4 ;al4,字节传送,10,两个操作数不能都是存储器操作数,8086指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现 m

6、ov ax,buffer1 ;axbuffer1(将buffer1内容送ax) mov buffer2,ax ;buffer2ax ;这里buffer1和buffer2是两个字变量, 实际表示直接寻址方式,11,要小心段寄存器的操作,不允许立即数传送给段寄存器 MOV DS , 100H 不允许直接改变CS值 MOV CS , SI 不允许段寄存器之间的直接数据传送 MOV DS , ES mov ax ,es ;axes mov ds ,ax ;dsax,12,练习: 1、交换AL,BL的内容。 2、交换数据段内有效地址为2000H 和2001H字节单元的内容。 3、分析异同 MOV AX,

7、 2000H MOV AL ,2000H MOV AH, 2001H MOV AX ,0126H MOV AX, 0126H MOV AX, BX MOV AX, BX,MOV AL ,30H MOV AH ,30H MOV BL ,30H MOV BH ,30H MOV AL ,30H MOV AH ,AL MOV BL ,AL MOV BH ,AL,13,判断下列指令的正确性: MOV AL,BX MOV AX,SI+05H MOV BXBP,BX MOV DS,1000H MOV DX,09H MOV 1200,SI,14,2)、数据交换指令 XCHG OPRD1 , OPRD2,功能:

8、将源操作数与目的操作数的内容(8/16)互换 。 操作数的寻址方式: OPRD1 OPRD2 r8/16 mem mem r8/16 reg reg 例: XCHG AX,BX MOV AL,0401H XCHG AL, 0400H MOV 0401H ,AL,注:1. 两个存储器操作数之间不能实现直接交换。 2. sreg和立即数不能作为操作数。,15,3)、堆栈操作指令,堆栈是按照LIFO原则组织的一段内存区域。(“先进后出”,或说“后进先出” ) 80X86规定堆栈设置在堆栈段内。用SS段寄存器记录其段地址 用SP始终指向堆栈的顶部。 栈顶:堆栈的顶部。即最后推入堆栈的信息所在的单元。

9、栈顶随着数据出栈、入栈而变化。 生长方向:栈顶的变化方向。分向下生长和向上生长两种。 8086中的堆栈是向下生长的。即栈顶向地址码小的方向生长。,向上生长,向下生长,低地址,高地址,低地址,高地址,16,空栈:在进行堆栈操作前,为空栈。此时SP应预置一个初值。该值为堆栈空间的大小。 SP初值=堆栈空间的最大容量 例:SP=0008H。则最大容量为8个字节。 SP指向当前的栈顶。 入栈、出栈两种 操作对应两个指令 PUSH 、POP,低,高,ss,堆栈段,sp,空栈,17,入栈 PUSH OPRD2,功能:把长度为一个字(16位)的数据OPRD2传送到堆栈的顶部。 操作数的形式: PUSH r1

10、6/m16/seg 源:r16 seg mem (各种寻址方式 ) 目的:隐含寻址方式 ss:sp 指令执行过程: SP2 SP r16/m16/seg SS:SP,18,例:AX=0543H,SP=0008H PUSH AX ;执行后 SP=0006H,0543H入栈 push AX push 2000H,低,高,ss,堆栈段,sp,空栈,低,高,ss,入栈,43 05,43 05,0006H,0004H,19,功能:把栈顶的一个字传送至指定的目的操作数OPRD1,然后堆栈指针SP加2 操作数的形式: 源:ss:sp 目的: r16/m16/ seg(除 CS外) 指令的执行过程 r16/m

11、16/segSS:SP SPSP2,低,高,ss,出栈,43 05,43 05,例:POP DX POP 2000h POP DS POP CS,0543,DX,出栈 POP OPRD1,20,堆栈的特点,按字进行操作 PUSH AH 和 POP BL 是错误的 字量数据从栈顶压入和弹出时,都符合小端对齐方式。 堆栈操作遵循先进后出原则。 程序中有一个PUSH,必有一个对应的POP。 但也可用存储器寻址方式随机存取堆栈中的数据,21,堆栈用于在子程序调用或处理中断时,保存当前的断点地址(在8086/8088中为CS和IP)和现场数据,以便子程序执行完毕后,正确返回到主程序。,堆栈的作用,堆栈是

12、为中断、子程序调用和参数传递设置的。,22,push ax ;进入子程序后 push bx push ds . pop ds ;返回主程序前 pop bx pop ax,例1: PUSH AX PUSH BX POP AX POP BX,例2:现场保护恢复,23,4)、换码指令 XLAT(杂项指令),0,1,2,3,将BX+AL做为有效地址EA,在一个表格中找出相应单元内容放入AL。此指令常用来将一种代码转换为另一种代码。,24,功能 :完成一个字节的查表转换。 执行的操作:AL DS:BX+AL 将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给AL,注:1.代码表须预先建立在数据

13、段。 2.代码表长度不超过256字节。 3.执行指令前,BX 表首偏移地址 AL 查找对象在表中距首址的 偏移量(下标)。 4.XLAT中的操作数隐含,也可为码表首地址的名称。 例: MOV BX,OFFSET MYTABLE MOV AL,4 XLAT ;XLAT MYTABLE,25,MOV BX ,0800H MOV AL ,4 XLAT,BX,BX+0,BX+1,BX+3,BX+2,40H,79H,24H,30H,DS段首地址,例:P102 将数字09的BCD码转换为7段LED显示器的显示代码。,数字09的BCD码对应的7段LED显示代码为: 40H,79H,24H,30H,19H,1

14、2H,02H,78H,00H,18H。 将它们依次存放在偏移地址为0800H开始的内存区域。 则实现BCD码0100B转换的程序段为:,26,2、输入输出指令(IN 、OUT),8086通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(Port)即I/O地址 8086用于寻址外设端口的地址线为16条,端口最多为21665536(64K)个,端口号为0000HFFFFH 每个端口用于传送一个字节的外设数据。 16位数据要占两个连续的端口。 指令中端口设计有两种寻址方式 直接寻址:当端口地址256时,该地址可以直接出现在指令中。只用于寻址00HFFH前256个端口,操作数i8表示端口号

15、 间接寻址:可用于寻址全部64K个端口,端口地址置于DX中,该并将DX 放在 指令中。 对地址大于FFH的端口只能采用间接寻址方式,指令格式: IN 累加器 , 端口地址 OUT 端口地址, 累加器,27,输入指令IN,将外设数据传送给CPU内的AL/AX IN AL,i8 ;字节输入:ALI/O端口(i8直接寻址) IN AL,DX ;字节输入:ALI/O端口(DX间接寻址) IN AX,i8 ;字输入:AXI/O端口(i8直接寻址) IN AX,DX ;字输入:AXI/O端口(DX间接寻址),28,例1:直接寻址,字节量输入 in al,21h mov ah,al in al,20h 例2

16、:直接寻址,字量输入 in ax,20h 例3:间接寻址,字量输入 mov dx,20h in ax,dx MOV DX,384H IN AL,DX,两段功能相同 字量数据传送实际上实现了连续的两个端口地址的字节量传送,29,输出指令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 DX,AX ;字输出:I/O端口AX(DX间接寻址),例:间接寻址,字节量输出 mov dx,3fch mov al,80

17、h out dx,al,30,注: 1. 所有I/O指令只能用累加器,不能用其他Reg. 2. IN/OUT指令有字/字节两种方式,选用那一种则取决于外设端口宽度。,31,1)、 有效地址传送指令LEA(load EA),将存储器操作数的有效地址传送至指定的16位寄存器中 LEA r16 , mem ;r16mem的有效地址EA 例: LEA AX,2728H ;AX=2728H LEA BX,BP+SI ;BX=EA=BP+SI的值。 LEA DI,TABLE MOV DI,TABLE MOV BX ,OFFSET TABLE LEA BX ,TABLE,获得存储单元的有效地址;不是物理地址

18、,也不是该单元的内容。 自动计算EA,3、地址目标传送指令 (指令中的源操作数都必须是mem操作数),注:MOV指令与LEA的不同: 前者传送操作数的内容,后 者传送操作数的地址。,注:两者效果一致,32,2)、指针传送指令LDS、 LES,LDS(LES) r16 , mem ;r16(mem) , ;DS(ES)(mem+2) 将由源操作数偏移地址决定的双字单元中的第一个字的内容送入指令指定的16位通用寄存器,第二个字的内容传送给段寄存器DS或ES。,33,例:,mem指定主存的连续4个字节的内容作为逻辑地址(32位的地址指针),送入DS:r16或ES:r16,LDS SI,2130H 2

19、130H,2131H SI 2132H,2133H DS,34,4、标志位传送指令,标志位传送指令专门用于对标志寄存器(FR)的内容进行传送。以实现保护、恢复或更新FR的操作。 有2对4条指令 低8位传送:LAHF和SAHF 16位传送:PUSHF和POPF 指令的操作数隐含。,35,标志低字节进出AH指令,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/

20、2/0位设置相应SF/ZF/AF/ PF/CF标志,(为8080/8085提供兼容性),36,标志寄存器进出堆栈指令,PUSHF ;SPSP2 ;SS:SPFLAGS PUSHF指令将标志寄存器的内容压入堆栈,同时栈顶指针SP减2,POPF ;FLAGSSS:SP ;SPSP2 POPF指令将栈顶字单元内容送标志寄存器,同时栈顶指针SP加2,在过程(子程序)调用和中断服务程序中,可用PUSHF和POPF指令 来保护和恢复标志位。 另外,这两条指令也可用来改变追踪标志 TF (入栈,修改,出栈)(8086无直接改变T标志的指令)。,37,除了SAHF和POPF指令外,其余指令执行后对标志位都没有

21、影响。,数据传送类指令共有14条指令,分为4组。,38,39,世代如落叶,勇将狄奥墨得斯,休问我主上是何人。 人类有百代,千树叶秋横, 一年一度秋风劲,吹落满地金。 待到春归重洒绿,枝叶复如新。 人间万代皆如此,一代虽死一代生! -荷马 (辜正坤译),40,千树中最娇,千树中最娇,如今樱桃 花蕊挂满枝条, 伫立于林间道旁, 披着复活节的白裳。 如今,我一甲子又十载, 二十年华不再来, 七十减却二十春 也只剩我五十年。 观赏世上花事 五十春天只一霎时, 我即往林间 春樱树白雪挂满。,-豪斯曼(1859-1936),41,霍普金斯,春与秋 吹响醒世音节!呀,西风, 若冬天已到,春岂会悄然长消歇?! 雪莱 ,西风颂 啊!心一天老一天, 看这样光景这渐渐冷漠了, 也不会嘀咕, 任他世界枯,叶模糊。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1