- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 8
8086CPU指令小结
所有指令:
(1)立即数不能作为目的操作数。
(2)不能在2个存储单元之间直接进行操作(串操作除外)。
(3)MOV指令和堆栈指令是惟一能对段寄存器进行操作的指令。
(4)源和目的操作数的数据类型必须匹配,都是8位,或都是16位。
(5) CS 、IP不能直接作为操作数。
(6)指令中至少要有一项明确说明传送的是字节还是字,如果没有,可通过PTR进行设置。
一、传送指令
(1)6种指令:通用传送指令、堆栈操作指令、交换操作指令、I/O操作指令、目的地址传送指令和标志传送指令。
(2)对标志位的影响:除标志传送(SAHF、POPF)外,均不影响标志位。
(3)操作数表示方法:立即数——data,存储器单元地址——mem,
寄存器——reg, 段寄存器——segreg。
1. 通用传送指令:完成数据传送
(1)指令格式:MOV OPRD1,OPRD2 ;[目的操作数OPRD1]← [源操作数OPRD2]
(2)源OPRD2: data、mem、reg、segreg。
(3)目的OPRD1: mem、reg、segreg。
(4)通用传送指令MOV和堆栈指令是唯一允许以段寄存器(代码段寄存器CS和指令指针IP除外,即CS 、IP不能作为直接操作数)作为操作数的指令,不允许通过MOV指令直接以立即数方式给段寄存器赋值,不允许直接在两个段寄存器之间直接进行传送。
(5)8位/16位操作。
2. 堆栈操作指令:将数据压入/弹出堆栈
(1)指令格式:
入栈:PUSH OPRD;先修改堆栈指针SP-2,然后将数据压入堆栈。
;SP =SP-1,[SP]=操作数高8位; SP =SP-1,[SP]= 操作数低8位。
出栈:POP OPRD; 先将数据弹出堆栈,然后修改堆栈指针SP+2。
;(操作数低8位)←[SP],SP =SP+1;(操作数高8位)←[SP],SP =SP+1。
(2)操作数:mem、reg、segreg。操作数不能是立即数data。
(3)仅能进行字运算(16位操作)。
(4)堆栈存取原则为后进先出,只有一个入/出口SS:SP, SP始终指向栈顶,SP是自动修改的,SP在初始化中需要设置。
(5)PUSH、POP指令必须成对使用。
3. 交换操作指令:XCHG——数据交换;XLAT——完成一个字节的换码转换
(1)指令格式:
交换操作指令: XCHG OPRD1,OPRD2;[OPRD1]←→ [OPRD2]
累加器换码指令(表转换指令、查表指令):XLAT;(AL)← ((DS)×16+(BX)+(AL))
(2)XCHG:段寄存器和立即数不能作为一个操作数,8位/16位操作。
(3)XLAT:表首地址在BX中,AL的内容作为某一项到表首的偏移量(256字节的表的下标),转换后的结果存放在AL中。
4. I/O操作指令:累加器(AX/AL)与I/O端口之间的数据传送
(1)指令格式:
输入指令:IN AL/ AX,PORT;(AL/ AX)← [PORT]
IN AL/ AX,DX ;(AL/ AX)← [DX]
输出指令:OUT PORT,AL/ AX ;[PORT]←(AL/ AX)
OUT DX ,AL/ AX ;[DX]←(AL/ AX)
(2)当端口地址≤ 255时,使用PORT(8位端口直接地址);当端口地址≥255时,必须用DX( 16位端口直接地址)作桥梁。DX作端口寻址最多可寻找64K个端口。
(3)PORT为直接寻址,8位/16位操作。
5. 目的地址传送指令
(1)取有效地址指令:LEA OPRD1,OPRD2
或: LEA reg,[add] ;( reg)← add, add为有效地址
把存储器的有效地址EA(源操作数的地址偏移量)送入一个寄存器reg;常用于将一个16位的通用寄存器作为地址指针。传送的是有效地址EA。
(2)将双地址指针装入DS和另一个寄存器指令LDS指令:
LDS OPRD1,OPRD2
或: LDS reg,[add] ;(reg)← (add+1)(add), (DS)←(add+3)(add +2)
(3)将双地址指针装入ES和另一个寄存器指令LES指令:
LES OPRD1,OPRD2
或: LES reg,[add] ;(reg)←(add+1)(add), (ES)←(add+3)(add +2)
① 从源操作数指定的存储单元中取出4字节的地址指针(包括2字节的段地址和2字节的偏移量)传送到DS/ES和reg。指定将段地址送入DS
文档评论(0)