第4讲_80868088指令系统.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4讲_8086amp;8088指令系统.ppt

第4讲 8086/8088 指令系统 苏 放 sufang@bupt.edu.cn 北京邮电大学 信息与通信工程学院 8086/8088的指令系统 8086/8088的指令系统可分为以下六类: 数据传送指令 算术运算指令 逻辑运算指令 移位指令,串操作指令 控制转移指令 处理器控制指令。 数据传送指令 数据传送指令用来实现cpu的 内部寄存器之间,cpu和存储器之间以及cpu和i/o端口之间的数据传送 可分为以下四种: 通用传送指令 累加器专用传送指令 地址传送指令 标志传送指令 通用传送指令 通用传送指令包括: 基本的传送指令mov 堆栈操作指令push和pop 数据交换指令xchg 基本的传送指令 mov dst,src; 本指令把一个字节或字操作数从源送到目的。 具体: mov men/reg1,mem/reg2 NB:必须有一个操作数为寄存器。。 mov reg,data mov mem/reg,data mov ac,mem mov mem,ac mov segreg,mem/reg NB:此处段寄存器不能使用cs寄存器 mov mem/reg,segreg 注意 传送指令不影响标志位 基本传送指令mov,不能直接实现两个存储单元之间的数据传送,可以用 cpu内部寄存器为桥梁来完成这样地传送 cs和ip两个寄存器不能作为目的操作数 不允许立即数送段寄存器,也不允许在两个段寄存器之间直接传送数据。 假如我们想把地址送至段寄存器ds和es中,可利用寄存器如ax作桥梁来进行传送: mov ax,5000h mov ds,ax mov es,ax 例 以下的指令对吗? MOV 52, AH MOV CS,AX MOV [DI], [SI] MOV [1000H],[SI] MOV IP, BX MOV DS,ES MOV DS, 1000H 例 从0100H开始将100个字节传送到2000H开始的区域。 DS=3000H MOV AX,3000H MOV DS,AX ;置DS MOV SI,0100H ;源首地址 MOV DI,2000H ;目的首地址 MOV CX,100 ;计数器 NT: MOV AL,[SI] MOV [DI],AL INC SI ;源地址加1 INC DI ;目的地址加1 DEC CX ;计数器减1 JNE NT ;CX≠0,转移到NT位置 INT 20H ;返回DOS 堆栈操作指令 堆栈-在内存储区中开辟若干单元作为栈去按先进后出方式工作。 堆栈操作便于实现子程序调用和中断处理。 8086/8088指令系统规定堆栈操作设置在ss内,只有一个出入口,要求堆栈指针始终指向堆栈的顶部 堆栈是由高地址向低地址发展 8086/8088指令系统提供了堆栈专用操作指令: 推入堆栈操作指令push 弹出堆栈指令pop。 入栈指令push 入栈:PUSH 源 SP←SP-2; [SP]←源; 如:PUSH AX 若:AX=1234H SP=FFEEH 出栈指令pop 堆栈操作指令 出栈:POP 目的 目的← [SP] ; SP ←SP+2; 如:POP AX 若:SP=FFECH 堆栈数据如图 出栈指令pop 堆栈操作指令 出栈:POP 目的 目的← [SP] ; SP ←SP+2; 如:POP AX 若:SP=FFECH 堆栈数据如图 结果:AX=5432H 堆栈操作指令 堆栈操作指令都隐含了一个操作数:SP所指的栈顶数据; 堆栈操作的另一个操作数一定是16位操作数:可以是寄存器操作数,也可以是存储器操作数,但不能是立即数; 由于一定是16位操作数,因此存储器操作数也不必用算符来说明位数了,如 PUSH [DI] 是正确表示的指令,当然,也可以写为: PUSH WORD PTR[DI] 堆栈操作指令 虽然不能随意地用POP指令将数据弹出到CS寄存器,但POP CS指令是系统可以执行的指令,不会产生系统的错误信息。 堆栈在系统操作中有许多用途;用户也可以通过堆栈暂存一些数据。这时,要注意堆栈先入后出的特点。 交换指令 格式:XCHG 操作数1,操作数2 这时两个操作数都要发生变化,不好说哪个是源,哪个是目的; 仍然不允许两个操作数都是存储器操作数,即两个存储器操作数仍然不能直接交换; 不能在交换指令中使用段寄存器,用一个也不

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档