3.4数据传输指令全解.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.4数据传输指令全解

复习 :3大类寻址方式 立即数寻址方式 寄存器寻址方式 存储器寻址方式 3.3 与转移地址有关的寻址方式 本节内容放到3.8节 8086/8088指令系统(3.4~3.9节) 可分成如下6类: 数据传送指令(Data Transfer) 算术运算指令(Arithmetic) 逻辑运算和移位指令(Logic) 串操作指令(String manipulation) 程序控制指令(Program Control) 处理器控制指令(Input/Output) 3.4 数据传送指令 可实现 存储器 寄存器 I/O接口 (1) MOV dst,src; dst←src 1) 寄存器送(段)寄存器或主存 2)立即数送寄存器或主存 4) 主存送(段)寄存器 MOV指令使用规则: 1) 立即数、CS 不允许作为目的操作数 几个不能传送的解决办法:用AX作桥梁 存储器←存储器: MOV AX,MEM1 MOV MEM2,AX (2) 堆栈操作指令 堆栈和队列 堆栈:按照后进先出(LIFO)的原则组织的存储器空间(栈) 队列:按照先进先出(FIFO)的原则组织的存储器空间 规定由SS指示堆栈段的段地址,堆栈指针SP始终指向堆栈的顶部,SP的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。数据有入栈和出栈操作,操作后栈顶位置会发生变化,即堆栈指针SP发生变化。 PUSH src ; src为16位操作数 例:PUSH AX ;将AX内容压栈 执行操作: (SP)-1←高字节AH (SP)-2←低字节AL (SP)←(SP)- 2 注意进栈方向是高地址向低地址发展 POP dst 例:POP BX ;将栈顶内容弹至BX 执行操作: (BL)←(SP) (BH)←(SP)+1 (SP)←(SP)+2 堆栈指令使用时应注意: ①堆栈操作总是按字进行 ②不能从栈顶弹出一个字给CS ③堆栈指针为SS:SP,SP永远指向栈顶 ④SP自动进行增减量(-2,+2) (3)交换指令XCHG 例:设 DS=1000H,SS=2000H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H,SP=1352H,SI=1354H,求以下各指令执行后的值。 2. 地址传送指令 用途:用于传送操作数的地址 而不是获取存储器单元的内容 8086/8088指令系统提供把地址写入寄存器或寄存器对的地址传送指令(Address-Object Transfer),分别是LEA、LDS、LES。 (1)取有效地址指令LEA 指令格式及操作: LEA reg16,mem ; 16位通用寄存器 ←内存地址 指令功能: 把一个内存变量的有效地址送给指定的16位寄存器。 标志位不受影响。 注意LEA指令与MOV指令的区别 MOV指令传送的是操作数的内容,而LEA指令传送的是操作数的地址。 注意下面二条指令差别: LEA BX,BUFFER MOV BX,BUFFER 前者表示将符号地址为BUFFER的存储单元的偏移地址 取到 BX中;后者表示将BUFFER存储单元中的内容取到 BX中. 但是: MOV DI, OFFSET TABLE指令与 LEA DI, TABLE是等价的。指令中的OFFSET称为取偏移地址操作符。 (2)取段寄存器指令 指令格式及操作: LDS??reg16, mem32 ;DS←段基地址 LES? reg16, mem32 ?;ES←段基地址 功能:将源操作数的有效地址所对应的4 B内存单元中的第一个字送入指令指定寄存器,而第二个字则送入段寄存器DS(或ES),即将一个32位的远地址指针的偏移地址写入到指定的通用寄存器中,而该指针的段基值送至段寄存器DS(或ES)。 标志位:不受影响。 【例】假设当前(DS)=3000H,存储单元(30100H)=80H,(30101H)=20H,(30102H)=00H,(30103H)=25H,则执行LDS SI, [0100H] 指令后,各寄存器的值有什么变化? 【解】寄存器SI和DS的值将发生变化,(SI)=2080H(偏移地址),(DS)=2500H(段基值)。 地址传送类指令LEA、LDS、LES常用于串操作 时,建立初始的串地址

文档评论(0)

4411184 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档