第3章_指令系统与寻址方式2.pptVIP

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.3.1 数据传送指令 3.3.1 数据传送指令 8086/8088指令系统按其功能可分6类: 1. 数据传送指令 2. 算术运算指令 3. 逻辑指令 4. 串操作指令 5. 控制转移指令 6. 处理机控制指令 为表示方便,约定以下符号: 符号 含义 i8 一个8位的立即数 i16 一个16位的立即数 imm 一个8位或16位的立即数 r8 一个8位通用寄存器:AH、AL、BH、BL、CH、CL、DH、DL r16 一个16位通用寄存器:AX,BX,CX,DX,BP,SP,SI,DI reg 一个8位或16位通用寄存器 seg 一个段寄存器:DS,ES,SS,CS m8 一个8位存储器操作数(包括所有的内存寻址方式) m16 一个16位存储器操作数(包括所有的内存寻址方式) mem 一个8位或16位存储器操作数(包括所有的内存寻址方式) dest 目标操作数 src 源操作数 port I/O端口号 指令规则: (1)除MOV、PUSH、POP之外,段寄存器不允许作为段操作数。 (2)段寄存器不能直接用立即数赋值。 (3)CS和立即数不能作为目的操作数 (4)两个操作数不能同时为段寄存器。 (5)两个操作数不能同时为存储器操作数(除串指令) (6)指令中两个操作数类型(字节或字)必须一致。 (7)指令中至少要有一个操作数类型是明确的,否则需用操作符PTR临时指定操作数类型。 3.3.1 数据传送指令 1. 通用数据传送指令 2. 地址传送指令 3. 标志传送指令 4. 输入输出指令 1 通用数据传送指令 (1) 传送指令MOV (2) 堆栈操作指令 (3) 数据交换指令XCHG (4) 换码指令 XLAT 3.3.1 数据传送指令 (1) 数据传送指令MOV 格式:MOV dest,src 功能:将源操作数的内容传送给目标操作数,源操作数不变。即(dest) ← (src)。 其中: src可以为:mem,seg,imm dest可以为:mem,seg MOV可以实现一个字节或一个字的传送,但要求dest与src数据类型相同。 1 通用数据传送指令 注意: (1)段寄存器CS不能作为目标操作数,即不能给CS赋值; (2)源操作数与目标操作数不能同时为内存操作数。 (3)源操作数与目标操作数不能同时为段寄存器。 例:以下指令均为合法的传送指令,括号中为目标操作数与源操作数的寻址方式。 1) MOV AL,5 ;(寄存器,立即数) 2) MOV AX,BX ;(寄存器,寄存器) 3) MOV DS,AX ;(段寄存器,寄存器) 4) MOV AX,DS ;(寄存器,段寄存器) 5) MOV ES:VAR,12 ;(存储器,立即数) 6) MOV WORD PTR [BX],12 ;(存储器,立即数) 其中:VAR为符号地址;WORD PTR指明存储器的属性是字属性。 (2) 堆栈操作指令 堆栈存取原则是“先进后出”。好比货物堆放,先到的货物放在下面,后到的货物堆放在上面;取货物时,堆在上面的货物被先取走。 堆栈指针总是指向栈顶。堆栈指针的初值为栈底。把数据存入堆栈中,同时调整堆栈指针保持指向栈顶,这一操作称为入栈(或压入);把数据从堆栈中取出,同时调整堆栈指针保持指向栈顶,称为出栈(或弹出)。 1 通用数据传送指令 1) 进栈指令PUSH 格式: PUSH src src可以是:r16、seg、m16 功能:堆栈指针减2,并将寄存器、段寄存器或存储器中的一个字数据压入堆栈。 即:① SP ← SP - 2 ② (SP+1,SP) ← (src) 执行过程可描述为:先减后压 2) 出栈指令POP 格式: POP dest dest可以是:r16、seg (除CS外) 、m16 功能:将栈顶元素弹出送至某一寄存器、段寄存器(除CS外)或存储器,堆栈指针加2。 即: ① (dest) ← (SP+1,SP) ② SP ← SP + 2 执行过程可描述为:先弹后加 例:MOV AX,6688H PUSH AX POP BX 若执行入栈指令前,堆栈段寄存器SS = 2100H,堆栈指针SP=0010H;执行入栈指令后,字单元SS:000EH的内容(SS:000EH)=6688H;堆栈指针SP=000EH,指向

文档评论(0)

peace0308 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档