微机原理第3章 8086的指令系统b.ppt

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

3.4 8086的指令集 8086指令系统按功能可分为6大类型: 数据传送指令:目的操作数←源操作数 算术运算指令:加、减、乘、除 位操作指令:与、或、非、异或、移位 串操作指令:串寻址,需先设置DF 程序控制转移指令:程序跳转、调子程序、中断等 处理器控制指令:暂停、等待、封锁总线、标志位置1/清0等 指令中出现的符号及含义 符号 来源 含义 FR flag register 标志寄存器 reg register 通用寄存器组 src source 源操作数 dest destination 目的操作数 data data 立即数 mem memory 存储器单元 [ ]、( ) 指令、注释 存储单元的内容 oprd operation data 操作数 seg segment 段寄存器(CS、DS、ES、SS) port port 8位端口号(00H~0FFH) target target 目标地址 3.4.1 数据传送指令 数据传送指令又可以分成4种: 通用数据传送指令 累加器专用传送指令 目标地址传送指令 标志寄存器传送指令 数据传送指令的特点: 指令的操作结果不会影响FR(POPF和SAHF除外)。 指令中至少有两个操作数,执行过程为: 目的操作数 源操作数 若只列出一个操作数,则另一操作数隐含。 一、通用数据传送指令 1. 传送指令MOV (move) 格式:MOV dest, src 功能:把src中的字节或字传送到dest中。 dest和src的不同组合有以下4种: (1)MOV reg1, reg2 或 MOV seg, reg 或 MOV reg, seg 本指令完成CPU内部寄存器(IP、FR除外)之间的数据传送。 注意:CS不能作目的操作数;参与操作的两个寄存器位数必须一致。 例:MOV AL, CL MOV ES, AX MOV AX, DS (2)MOV reg, data 本指令完成将立即数data传送至CPU通用寄存器(赋初值)。 注意:两个操作数的位数必须一致。 例:MOV CL, 16 MOV SP, 8000H (3)MOV mem, data 本指令完成将立即数data传送至存储单元mem(赋初值)。 注意:指令中应指明存储器操作数的类型(字/字节)。 例:MOV WORD PTR [BX], 68H MOV BYTE PTR [SI+6000H], 68H PTR是类型指定符,WORD PTR表示按照字类型访问存储单元,BYTE PTR表示按照字节类型访问存储单元。 (4)MOV reg/mem, mem/reg 或 MOV seg/mem, mem/seg 本指令完成将CPU内部寄存器(IP、FR除外)与存储单元之间的数据传送。 注意:CS不能作目的操作数;两个操作数位数必须一致。 例:MOV [SI], AL MOV ES, [BP+DI] [MOV指令传送途径小结] [练习1]试编程完成将寄存器AX和BX的内容进行交换。 解:MOV CX, AX MOV AX, BX MOV BX, CX [练习2]试编程完成将内存数据段中两存储单元1000H和1010H的内容进行交换。 解:MOV AL, [1000H] MOV AH, [1010H] MOV [1000H], AH MOV [1010H], AL 2. 进栈指令PUSH (push) 格式:PUSH src 功能:把src指定的寄存器或存储单元中的字数据压入堆栈顶部。 步骤:修改指针SP←(SP)?2;数据入栈(SP+1),(SP)←(src) 例:(SS)=1000H (SP)=2000H (AX)=786AH (BX)=2538H 原状态 PUSH AX PUSH BX 3. 出栈指令POP (pop) 格式:POP dest 功能:把堆栈顶部的字数据弹出到dest指定的寄存器或存储单元中。 步骤:数据出栈dest←((SP+1),(SP));修改指针SP←(SP)+2 例:堆栈区如下图所示, 原状态 POP AX POP BX 最终(AX)=2538H、(BX)=7

文档评论(0)

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

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

1亿VIP精品文档

相关文档