数据传送指.ppt

上传人:s****8 文档编号:67315128 上传时间:2022-12-24 格式:PPT 页数:46 大小:294.50KB
返回 下载 相关 举报
数据传送指.ppt_第1页
第1页 / 共46页
数据传送指.ppt_第2页
第2页 / 共46页
点击查看更多>>
资源描述

《数据传送指.ppt》由会员分享,可在线阅读,更多相关《数据传送指.ppt(46页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、复习:寻址方式复习:寻址方式l立即数立即数寻址方式寻址方式l寄存器寄存器寻址方式寻址方式l存储器存储器寻址方式寻址方式直接寻址方式直接寻址方式寄存器间接寻址方式寄存器间接寻址方式变址寻址方式变址寻址方式基址变址寻址方式基址变址寻址方式11.下列指令中SRC和DST的寻址方式MOVSI,CMOVBX+3,AXXCHGBXSI,ALADDCX,DS:10HMOVDL,BP+DIMOVBX,AX2DSESSSCSIP数据暂存器数据暂存器PSW执行部件控制电路执行部件控制电路指令译码器指令译码器AHBHCHDHSIDIBPSPALBLCLDL通用寄存器组通用寄存器组指指令令队队列列总线总线接口接口控制

2、控制电路电路运运算算器器地地址址加加法法器器MOV操作码操作码0020-CS=1000H,IP=100HDS=3000H,BX=1000HMOV BX,2000H10010H10011H10012H31001H31000H1000H3000H0100H10 00H00H20H0103H3AH AX ALBH BX BLCH CX CLDH DX DLSPBPDISIIPFLAGSCSDSESSSFSGS32位名称位名称EAXEBXECXEDXESPEBPEDIESI8位名称位名称16位名称位名称EIPEFLAGS 名称名称累加器累加器基址变址基址变址计数计数数据数据堆栈指针堆栈指针基址指针基址

3、指针目的变址目的变址源变址源变址指令指针指令指针标志标志代码代码数据数据附加附加堆栈堆栈32位位16位位注意:注意:286以以下下绿绿色色区区域域不不可可用用;FS、GS 无专用名称;无专用名称;41 1汇编程序采用分段结构汇编程序采用分段结构,每一段有若干语句组成。,每一段有若干语句组成。2 2语句分类语句分类:a.a.指令性语句,即符号指令指令性语句,即符号指令通知通知CPUCPU进行某种操作的命进行某种操作的命令,由硬件完成其功能。令,由硬件完成其功能。符号指令的书写格式:符号指令的书写格式:标号:标号:符号指令符号指令;注释;注释 b.b.指示性语句,即伪指令指示性语句,即伪指令提供编

4、译信息、链接信息,其提供编译信息、链接信息,其功能由相应的软件完成。功能由相应的软件完成。伪指令的书写格式:伪指令的书写格式:变量名变量名 伪指令伪指令;注释;注释 注:版本不同,伪指令的种类也略有不同。注:版本不同,伪指令的种类也略有不同。汇编程序的语句类型 5PDB10,4,10HP1DW100P2DD320,0FFFDH P+0 0AHP+0 0AH +1 04H +1 04H +2 10H +2 10H P1+0 64HP1+0 64H +1 00H +1 00H P2+0 3CH P2+0 3CH +1 00 +1 00 +2 00 +2 00 +3 00 +3 00 +4 0FDH

5、 +4 0FDH +5 0FFH +5 0FFH +6 00 +6 00 +7 00 +7 0010410H100600FFFDH例例73.2 8086/80883.2 8086/8088指令系统指令系统可分成如下可分成如下6 6类类:n 数据传送指令数据传送指令n 算术运算指令算术运算指令n 逻辑运算和移位指令逻辑运算和移位指令n 串操作指令串操作指令n 程序控制指令程序控制指令n 处理器控制指令处理器控制指令83.2.1 数据传送指令l 可实现可实现 存储器存储器 寄存器寄存器 I/OI/O接口接口 l 数据传送指令又可分为如下四种:数据传送指令又可分为如下四种:n 通用传送通用传送:MO

6、V PUSH/POP XCHG:MOV PUSH/POP XCHGn 目标地址传送目标地址传送 LEALEAn 标志传送标志传送n 输入输出输入输出 IN OUTIN OUT10(1)(1)MOVdst,src;dstsrc 传传送送的的是是字字节节还还是是字字取取决决于于指指令令中中涉涉及的寄存器是及的寄存器是8 8位还是位还是1616位。位。1.通用传送指令111 1)寄存器送(段)寄存器或主存寄存器送(段)寄存器或主存mov ax,bx;axbx,字传送字传送mov ah,al;ahal,字节传送字节传送mov ds,ax;dsax,字传送字传送mov bx,al;bxal,字节传送字节

7、传送MOVreg/mem/seg,reg122 2)立即数送寄存器或主存立即数送寄存器或主存moval,4;al4,字节传送字节传送movsi,200H;si0200H,字传送字传送movbyteptrsi,0aH;byteptr说明是字节操作说明是字节操作movwordptrsi+2,0bH;wordptr说明是字操作说明是字操作注意立即数是字节量还是字量注意立即数是字节量还是字量明确指令是字节操作还是字操作明确指令是字节操作还是字操作MOV reg/mem ,imm133 3)段寄存器送寄存器或主存段寄存器送寄存器或主存movsi,dsmovax,es;axesmovds,ax;dsaxe

8、sMOV reg/mem ,seg144 4)主存送(段)寄存器主存送(段)寄存器moval,bxmovdx,bp;dxss:bpmoves,si;esds:siMOV reg/seg ,mem15MOV指令使用规则:1)1)立即数不允许作为目的操作数立即数不允许作为目的操作数2)2)不允许不允许 memmem3)3)不允许不允许 segseg 4)4)不允许不允许 seg 立即数立即数5)5)CS、IP不能作目的寄存器不能作目的寄存器6)6)源操作数与目的操作数类型要一致源操作数与目的操作数类型要一致16几个不能传送的解决办法:用AX作桥梁l存储器存储器存储器:存储器:MOVAX,MEM1

9、MOVMEM2,AXl段寄存器段寄存器段寄存器:段寄存器:MOVAX,DS MOVES,AXl段寄存器段寄存器立即数:立即数:MOVAX,DATA MOVDS,AX17什么是堆栈?什么是堆栈?按按“后后进进先先出出(LIFO)(LIFO)”方方式式工工作作的的存存储储区域。堆栈区域。堆栈以以字字为单位为单位进行压入弹出操作。进行压入弹出操作。为什么要设置堆栈?为什么要设置堆栈?为什么要按为什么要按 “后进先出后进先出”方式工作?方式工作?(2)(2)堆栈操作指令堆栈操作指令18主程序IP继续执行主程序执行子程序转子程序压栈弹出返回主程序主程序IPIP(下)继续执行主程序转子程序1返回主程序IP

10、执行子程序 2转子程序2返回子程序1IP(下)执行子程序1继续执行子程序1(a)(b)子程序调用示意图(a)主程序调子程序;(b)子程序嵌套示意图压栈弹出IP(下)19规规定定由由SSSS指指示示堆堆栈栈段段的的段段基基址址,堆堆栈栈指指针针SPSP始始终终指指向向堆堆栈栈的的顶顶部部,SPSP的的初初值值规规定定了了所所用用堆堆栈栈区区的的大小。堆栈的最高地址叫栈底。大小。堆栈的最高地址叫栈底。SPSS堆栈段堆栈段进栈方向进栈方向退栈方向退栈方向栈底栈底栈顶栈顶堆栈堆栈21l.STACK200Hl 就是对堆栈的定义,即就是在内存中划分出200H字节作为堆l栈区,其地址为SS:0000HSS:

11、01FFH,那么堆栈指针SP的初值l为0200H,如图3.11所示。程序中的堆栈操作语句有:lPUSH AXl;SP01FEH,SS:01FE(AL),SS:01FF(AH),l堆栈变化如图3.12所示。llPOP AXl;AL(SS:01FE),AH(SS:01FFH),SP0200H,l堆栈变化如图3.13所示。2223PUSHsrc;src为为16位操作数位操作数例:例:PUSHAX;将;将AX内容压栈内容压栈执行操作:执行操作:(SP)(SP)-2(SP)-1高字节高字节AH(SP)-2低字节低字节AL 压栈指令压栈指令24设(设(AXAX)=10102020H H低地址低地址存储区存

12、储区(SS段)段)执行前执行前(AX)=1020(SP)存储区存储区(SS段)段)进栈方向进栈方向执行后执行后2010(AL)(AH)PUSH AX指令执行示意图指令执行示意图(SP)-2(SP)高地址高地址低地址低地址高地址高地址(SP)-125压栈指令的格式为:压栈指令的格式为:PUSH regPUSH mem/regPUSH seg例如:例如:PUSHAXPUSHBXPUSHDS注意进栈方向是注意进栈方向是高地址高地址向向低地址低地址发展发展26 POPdst例:例:POP BX;将栈顶内容弹至将栈顶内容弹至BX执行操作:执行操作:(BL)(SP)(BH)(SP)+1(SP)(SP)+2

13、 弹出指令弹出指令27POP BX POP BX 的执行示意图的执行示意图低地址低地址存储区存储区(SS段)段)出栈方向出栈方向执行前执行前2010(SP)存储区存储区(SS段)段)执行后执行后(BX)=1020H(SP)(SP)+1(SP)+2BX20201010高地址高地址低地址低地址高地址高地址28堆栈指令使用时应注意:堆栈指令使用时应注意:堆栈操作总是按堆栈操作总是按字字进行进行不能从栈顶弹出一个字给不能从栈顶弹出一个字给CSCS堆栈指针为堆栈指针为SS:SPSS:SP,SPSP永远指向栈顶永远指向栈顶SPSP自动进行增减量(自动进行增减量(-2-2,+2+2)29格式:格式:XCHG

14、 XCHG regreg ,memmem/regreg功能:交换两操作数的内容。功能:交换两操作数的内容。要求:两操作数中必须有一个在寄存器中;要求:两操作数中必须有一个在寄存器中;操作数不能为段寄存器和立即数;操作数不能为段寄存器和立即数;源和目地操作数类型要一致。源和目地操作数类型要一致。举例:举例:XCHGXCHGAXAX,BXBX XCHG XCHGByte ptr2000HByte ptr2000H,CLCL(3)(3)交换指令交换指令XCHGXCHG30(4)查表指令查表指令lXLAT;(AL)(BX)+(AL)lXLAT表首址表首址;(AL)(BX)+(AL)l指令功能:把待查表

15、格的一个字节内容送到指令功能:把待查表格的一个字节内容送到AL累加器中。累加器中。l在执行该指令前,应首先在数据段中建立一个在执行该指令前,应首先在数据段中建立一个长度小于长度小于256个字节的表格,将表的首地址先个字节的表格,将表的首地址先送至送至BX寄存器中,然后将欲查找对象与其在寄存器中,然后将欲查找对象与其在表格中距表首地址的位移量送表格中距表首地址的位移量送AL312.地址传送指令用途:用于传送操作数的地址用途:用于传送操作数的地址 而不是获取存储器单元的内容而不是获取存储器单元的内容l(1)(1)传送偏移地址传送偏移地址格式:格式:LEAreg,mem ;将指定内存单元的偏移地址将

16、指定内存单元的偏移地址 送到指定寄存器送到指定寄存器要求:要求:1)1)源操作数源操作数必须是一个必须是一个存储器操作数存储器操作数;2)2)目的操作数必须是一个目的操作数必须是一个1616位的通用寄存器。位的通用寄存器。32(2)取段寄存器指令取段寄存器指令lLDSreg16,mem32;l(reg16)EA(mem32),DSEA(mem32)+2lLESreg16,mem32;l(reg16)EA(mem32),ESEA(mem32)+2l指令功能:指令功能:将源操作数的有效地址所对应的将源操作数的有效地址所对应的4字节内存单字节内存单元中的第一个字送入指令指定寄存器,而第二个字则送入元

17、中的第一个字送入指令指定寄存器,而第二个字则送入段寄存器段寄存器DS(或(或ES),即将一个),即将一个32位的远地址指针的偏位的远地址指针的偏移地址写入到指定的通用寄存器中,而该指针的段基值送移地址写入到指定的通用寄存器中,而该指针的段基值送至段寄存器至段寄存器DS(或(或ES)33例:例:LEA BX,SI+10H设:(设:(SI)=1000H则执行该指令后,(则执行该指令后,(BX)=1010H例:例:LEA BX,SI则执行该指令后,(则执行该指令后,(BX)=1000H例:例:LEA BX,10H则执行该指令后,(则执行该指令后,(BX)=10H34 LEABX,BUFFER注意二条

18、指令差别:注意二条指令差别:MOVBX,BUFFER;取存储单元中的内容取存储单元中的内容 ;取存储单元的偏移地址取存储单元的偏移地址35LEABX,BUFFERMOVBX,OFFSETBUFFEROFFSET BUFFEROFFSET BUFFER表示存储器单元表示存储器单元BUFFERBUFFER的偏移地址。的偏移地址。两条等效指令:两条等效指令:363.输入输出输入输出(I/OI/O)指令指令l80868086通过通过I/OI/O指令与外设交换数据;呈现给指令与外设交换数据;呈现给程序员的外设是程序员的外设是端口端口(PortPort)即)即I/OI/O地址地址l80868086用于寻址

19、外设端口的地址线为用于寻址外设端口的地址线为1616条,条,端口最多为端口最多为2 216166553665536(64K64K)个,端口号个,端口号为为0000H0000HFFFFHFFFFHl每个端口用于传送一个每个端口用于传送一个字节字节的外设数据的外设数据只限于用累加器只限于用累加器ALAL或或AXAX来传送信息。来传送信息。功能功能:(:(累加器累加器)I/OI/O端口端口37输入输出寻址方式输入输出寻址方式l80868086的的端口有端口有64K64K个,无需分段,设计有两个,无需分段,设计有两种寻址方式种寻址方式v直接寻址直接寻址:只用于寻址只用于寻址00H00HFFHFFH前前

20、256256个端个端口,操作数口,操作数i8i8表示端口号表示端口号v间接寻址间接寻址:可用于寻址全部:可用于寻址全部64K64K个端口,个端口,DXDX寄存器的值就是端口号寄存器的值就是端口号l对大于对大于FFHFFH的端口只能采用间接寻址方式的端口只能采用间接寻址方式38INacc,PORT;PORT端口号端口号0255HINacc,DX;DX表示的端口范围达表示的端口范围达64K累加器累加器输出端口格式格式OUTport,accOUTDX,acc累加器累加器输入端口39例:输入字量1.直接寻址,字节量输入直接寻址,字节量输入inal,21hmovah,alinal,20h2.直接寻址,字

21、量输入直接寻址,字量输入inax,20h3.间接寻址,字量输入间接寻址,字量输入movdx,20hinax,dx功能相同功能相同字量数据传送字量数据传送实际上实现了连实际上实现了连续的两个端口地续的两个端口地址的字节量传送址的字节量传送41标志传送指令标志传送指令标志寄存器标志寄存器FLAG(FR)中的每一个状态标志位代表)中的每一个状态标志位代表CPU执行指令的执行指令的状态。许多指令的执行结果会影响状态。许多指令的执行结果会影响FR的某些状态标志位;同时有些的某些状态标志位;同时有些指令的执行也受指令的执行也受FR中某些位的控制。中某些位的控制。l(1)标志传送指令标志传送指令lLAHF;

22、AHFLAGS的低的低8位位lSAHF;FLAGS的低的低8位位AHlLAHF功能:功能:把标志寄存器的低把标志寄存器的低8位读出后传送给位读出后传送给AH寄存器,即寄存器,即把把SF、ZF、AF、PF、CF标志位分别送至标志位分别送至AH的第的第7、6、4、2、0位(位(AH的第的第5、3、1位是任意的)。位是任意的)。lSAHF功能:功能:把寄存器把寄存器AH中第中第7、6、4、2、0位的内容分别写入位的内容分别写入标志寄存器的标志寄存器的SF、ZF、AF、PF和和CF各标志位。各标志位。43(2)标志入栈、出栈指令标志入栈、出栈指令lPUSHF;SPSP-2,(SP+1)(SP)FLAG

23、SlPOPF;FLAGS(SP+1)(SP),SPSP+2lPUSHF功能:功能:把标志寄存器的内容(把标志寄存器的内容(16位)入栈,位)入栈,同时修改栈顶指针,指令执行后标志寄存器的内容不同时修改栈顶指针,指令执行后标志寄存器的内容不变。变。lPOPF功能:功能:将堆栈中当前栈顶的两个单元的内容将堆栈中当前栈顶的两个单元的内容弹出到标志寄存器中。弹出到标志寄存器中。44lLAHF指令操作示意图指令操作示意图45小结:数据传送指令小结:数据传送指令重点掌握:重点掌握:n 通用传送通用传送:MOV,PUSH,POP,XCHGn 目标地址传送目标地址传送:LEAn 标志传送标志传送n 输入输出输入输出:IN,OUT46

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com