汇编学习笔记之8086指令集.doc

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

8086/8088 指令系统 一 .分组 1. 数据传送指令 2. 算数运算指令 3. 逻辑运算指令 4. 串操作指令 5. 程序控制指令 6. 处理器控制指令 数据传送指令 1. 传送指令 mov (1)CPU 内部的寄存器之间的数据传送 例如 mov AH,AL MOV DL,BH MOV AX,CS 注意: 寄存器之间传送的寄存器不能同时为段寄存器; 代码段寄存器不能作为目的;指令指针IP既不能作为源,也不能作为Direction (2) 立即数送入通用寄存器或内存单元 例如 MOV AL,3 MOV SI,-5 MOV VARB, -2 ; VARB是变量名,代表一个内存单元 MOV VARW ,3456H ; VARW是一个字变量 MOV [SI] ,6543H 注意:立即数不能直接送入到段寄存器,立即数永远不能作为目的操作数 (3)寄存器与内存单元之间的数据传送 MOV AX,VARW ;VARW是一个字变量,存储器操作为直接寻址 MOV BH,[DI]; 内存操作数为寄存器间接寻址 MOV DI,ES:[SI+3];内存操作数为相对变址寻址,使用段超越前缀 MOV BP,[BX+SI+3];内存操作数为相对基址加变址寻址 MOV VARB,DL; VARB是一个字变量 MOV [BP],AX 使用SS 段寄存器 MOV DS:[BP],DL; 使用段超越前缀 MOV VARW,DS; VARW是一个字变量 MOV ES,VARW 注意: 除了串操作指令外,源操作数和目的操作数不能同时为内存单元操作数 2 交换指令 实现通用寄存器与通用寄存器或内存单元的数据交换 XCHG OPRD1,OPRD2 OPRD1 与 OPRD2可以是通用寄存器和内存单元,但不包括段寄存器,也不能同时为内存单元,还不能有立即操作数. 3 地址传送指令 (1) LEA (Load Effective Address) LEA 有效传送地址指令 格式如下: LEA REG , OPRD 该指令把OPRD操作数的地址传送到操作数REG里,操作数OPRD必须是一个内容单元操作数,REG必须是一个16位的通用寄存器.例如 LEA AX,BUFFER ;BUFFER 是变量名 LEA DX,[BX+3] LEA SI,[BP+DI+4] (2) LDS (Load pointer into DS) 段值和段内偏移构成32位的地址指针,该指令传送32位地址指针,格式如下 LDS REG , OPRD 该指令把操作数OPRD中所含的32位地址指针的段值部分送到数据段寄存器(DS),把偏移部分的地址送到指令给出的通用寄存器REG,操作数OPRD必须是一个32位的内存单元操作数,操作数REG可以是一个16位的通用寄存器,但实际使用的往往是变址寄存器或指针寄存器.例如 LDS DI,[BX] LDS SI,FARPOINTER ;FARPOINTER 是一个双字变量 32位地址的段值部分存储在FARPOINTER的高地址中,段偏移部分存储在FARPOINTER的低地址中. (3) LES( Load pointer to ES) LES REG , OPRD 32位地址的段值部分送入寄存器ES,段偏移部分送入REG 4 . 堆栈操作指令 (栈底端地址较大,栈顶端地址较小) (1) 进栈指令 PUSH PUSH SRC 源操作数SRC 可以是通用寄存器和段寄存器和内存字单元 操作流程: 先把堆栈指针寄存器SP的值减2 把操作数SRC送入SP所指的栈顶 (2) 出栈指令 POP DST 先把堆栈指针寄存器SP所指的字数据送至操作和数DST SP 值加2 注意: 操作数DST可以是通用寄存器和段寄存器,但CS例外.也可以是字存储单元 5. 标志操作指令 (1) LAHF (Load AH with Flags) 该指令把标志寄存器的低8位传送到寄存器AH的指定位 注意:该指令本身不影响这些标志和其他标志 (2) SAHF ( Store AH into Flags) 该指令把寄存器AH的指定位送至标志寄存器的低8位的SF,ZF,AF,PF,CF标志位 (3) PUSHF 该指令把标志寄存器的内容压入堆栈,即先把堆栈指针寄存器的值减2,然后把标志寄存器的内容送入由SP所指的堆栈 (4) POPF 该指令把当前堆栈的栈顶的一个字传送到标志寄存器,同时相应的修改堆栈指针SP,SP=SP+2 (5) 清进位标志指令 CLC(CLear Carry flag) 格式 : CLC 该指令 使进位标

文档评论(0)

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

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

1亿VIP精品文档

相关文档