




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.数据交换指令(XCHG),格式:XCHG DST , SRC ;DST SRC,功能:该指令是完成寄存器与寄存器或寄存器与存储单元之间内容交换的。该指令要求两个操作数之一必须是寄存器,允许两个操作数都是寄存器,但不允许是段寄存器。,注:段REG和立即数不能参加交换。,一、数据传送类指令,例 合法指令有: XCHG AX, BX ;(AX) (BX) XCHG CX, DI ;(CX) (DI) XCHG DX, VAR1;(DX) (VAR1),一、数据传送类指令,例.若(CX)=9A8BH,试将CX的高 8位与低8位互相交换。,XCHG CH , CL 指令执行后,(CX)=?,一、数据
2、传送类指令,取有效地址指令LEA LDS指令 取地址指针指令 LES指令,3.地址传送指令,一、数据传送类指令,LEA(取有效地址指令),将源操作数SRC 的有效地址(偏移地址)送入通用寄存器REG 格式: LEA REG,MEM 相当于 MOV REG,OFFSET MEM 指令要求源操作数必须是一个存储器操作数,目标操作数是通常寄存器,不能是段寄存器,一、数据传送类指令,比较下列指令: LEA SI,DATA1 MOV SI,DATA1 MOV AX,BX LEA AX,BX,符号地址,BX=1100H,一、数据传送类指令,LDS、LES (取地址指针指令),LDS reg,MEM32 ;
3、 高地址送DS LES reg,MEM32 ; 高地址送ES 指令中源操作数是存储器某4个连续单元的偏移地址,目标操作数是间址寄存器,BX、BP、SI和DI。,注:REG不允许为段寄存器,源操作数的寻址方式不允许是立即数和寄存器方式。,一、数据传送类指令,LDS指令举例 LDS DI,1200H MOV AX,DI DI = 1234H AX = 2233H,12H,34H,00H,60H,1200H,数据段 1,DS,DI,数据段2,33H,22H,61234H,34H,12H,00H,60H,一、数据传送类指令,LES 指令举例,LES DI,1200H MOV AX,ES:DI,12H,
4、34H,00H,60H,1200H,数据段,ES,DI,附加段,33H,22H,61234H,34H,12H,00H,60H,一、数据传送类指令,隐含操作数AH,LAHF ;将FLAGS的低8位装入AH SAHF ;执行与LAHF相反的操作,SF,PF,AF,ZF,CF,.,AH,FLAGS,D15,D0,D7,D0,4.标志传送指令(LAHF,SAHF),源操作数和目的操作数的寻址方式均为隐含寻址方式。,一、数据传送类指令,指令格式:XLAT 该指令的寻址方式是隐含的,其有效地址为EA=(BX)+(AL),指令的功能是将EA为偏移地址所对应的内存单元中的一个字节内容送入AL寄存器,从而实现了
5、AL中的字节变换。 例. 求某数(09 之间)的平方。在DS 段定义以下变量: DAT1 DB 04H ;被求平方的数 TABLE DB 0,1,4,9,16,25,36, 49,64,81,5.字节交换指令(XLAT),一、数据传送类指令,堆栈是按先进后出的的原则在内存中组织的一个存储区域。,段基址由堆栈段寄存器SS指定,栈顶位置由堆栈指示器SP指定。,8086的堆栈是向上生成方向。,6.堆栈操作指令,一、数据传送类指令,注意以下几点: 8086的堆栈操作指令只能按字操作,不能为立即数寻址。 CS的内容可压入堆栈,但不可从堆栈中弹出一个字到CS寄存器中。 堆栈中的内容是按先进后出的次序传送的
6、。 指令对标志寄存器没有影响。,一、数据传送类指令,说明: 压入堆栈指令PUSH(Push word onto stack)将先修正堆栈指针SP的内容,然后再将SRC的内容送入堆栈。SRC必须是字型的,它可以是通用寄存器和段寄存器,也可以是某种寻址方式所指定的存储单元,但不能是立即数。,例如: PUSH AX;将(AX)压入堆栈 PUSH DS;将(DS)压入堆栈,一、数据传送类指令,一、数据传送类指令,例 设(SP)00A0H,执行下列指令 PUSH AX PUSH VAR1 后,(SP) 。 解:每向堆栈压入一个字,SP的内容减2,因此指令执行后(SP) 009CH 。,一、数据传送类指令
7、,说明: 弹出堆栈指令POP(Pop word off stack)可以取出堆栈的内容送入DST所指定的寄存器、存储单元,然后修正SP的内容。DST也必须是字型的,它可以是通用寄存器、段寄存器(CS除外),也可以是存储单元,但不能是立即数。,例如: POP BX;从堆栈弹出一个字,送给(BX) POP ES;从堆栈弹出一个字,送给(ES),一、数据传送类指令,应用举例 利用堆栈操作指令可以方便地完成某些复杂操作,例如当需要交换DS和ES的内容时,可以采用: PUSH DS PUSH ES POP DS POP ES,一、数据传送类指令,另外,在子程序设计时,需要从子程序返回时尽量保持通用寄存器
8、不变,例如为保持AX、 BX、 CX、 DX的内容不变,则在子程序入口处排入指令: PUSH AX PUSH BX PUSH CX PUSH DX,然后在子程序返回指令之前,排入指令: POP DX POP CX POP BX POP AX,一、数据传送类指令,应该注意:在程序设计时,PUSH、POP必须配对使用,以保证堆栈操作的正常次序,这也是子程序能够正常返回的前提条件。,一、数据传送类指令,PUSHF,POPF,针对FLAGS的堆栈操作指令 将标志寄存器压栈或从堆栈弹出,PUSHF;将(PSW)压入堆栈 POPF;从堆栈弹出一个字,送给(PSW),一、数据传送类指令,一、数据传送类指令,
9、总结:,加法指令与减法指令 增量和减量指令 比较指令 符号扩展指令 乘法指令与除法指令 BCD数调整指令,二、算术运算类指令, 只要ALU涉及到运算,就不能使用段REG; 只要ALU涉及到运算,其运算结果会影响状态标志位。,普通加法指令ADD 带进位的加法指令ADC,加法指令对操作数的要求与MOV指令相同,1.加法指令与减法指令,二、算术运算类指令,1)加法指令,不带进位的加法指令 ADD,格式: ADD DST,SRC 操作: (DST) + (SRC) (DST),ADD指令的执行对全部6个状态标志位都产生影响,二、算术运算类指令,带进位的加法指令 ADC,指令格式、对操作数的要求、对标志
10、位的影响与ADD指令完全一样。 指令的操作: OPRD1+OPRD2+CF OPRD1 ADC指令多用于多字节数相加,使用前要先将CF清零。,二、算术运算类指令,例如,设变量VAR1为字型变量,VAR2为字节变量,则有 ADD AX, 56A0H;(AX) (AX)+56A0H ADC VAR1, 127FH;(VAR1)(VAR1)127FH(CF) ADC AX, BX ;(AX) (AX)+(BX) (CF) ADD AX, VAR1 ;(AX) (AX)+(VAR1) ADD BX, VAR1DI ;(BX) (BX)+(VAR1)+(DI)) ADD BL, VAR2 ;(BL) (
11、BL)+(VAR2) ADD BYTE PTR VAR1, AL ;(VAR1的低位字节)(VAR1的低位)(AL),二、算术运算类指令,普通减法指令SUB 考虑借位的减法指令SBB 求负指令NEG,减法指令对操作数的要求与对应的加法指令相同,二、算术运算类指令,2)减法指令,减法指令 SUB,格式: SUB OPRD1,OPRD2 操作: OPRD1- OPRD2 OPRD1 对标志位的影响与ADD指令相同,二、算术运算类指令,带进位减法 SBB,指令格式、对操作数的要求、对标志位的影响与SUB指令完全一样 指令的操作: OPRD1- OPRD2- CF OPRD1,二、算术运算类指令,例如
12、,设VAR1为字型变量,VAR2为字节变量,则有 SUB AL, 2CH;(AL) (AL)2CH SBB AX, BX ;(AX) (AX)(BX)(CF) SUB AX, VAR1;(AX) (AX)(VAR1) SUB VAR1, 2184H ;(VAR1) (VAR1)2184H SBB DL, VAR2SI ;(DL)(DL)-(VAR2)(SI)-(CF),二、算术运算类指令,NEG,格式: NEG DST 操作: 0 - DST DST,8/16位寄存器或存储器操作数,*特殊的减法操作,其被减数一定为0,二、算术运算类指令,DST可以取通用寄存器和存储单元。求负数的补码表示可以直
13、接利用NEG指令完成。NEG指令将正常影响PSW中的6个状态标志位.,例如,设VAR1为字型变量,则有下列指令: NEG BX;(BX)0(BX) NEG VAR1;(VAR1)0(VAR1) NEG BYTE PTR 2BX ;(BX)2)0(BX)2),二、算术运算类指令,格式: CMP DST, SRC ;(DST)(SRC),并设置PSW中的状态标志位 说明: CMP指令与减法指令类似,完成DST的内容减去SRC的内容,设置PSW中的状态标志位(简称FLAG),但其结果不保存到DST。指令中的SRC、DST的说明与ADD指令相同。,用于比较两个数的大小,2.比较指令CMP,二、算术运算
14、类指令,当两个无符号数进行比较时,如果CF0、ZF0,则表示(DST)(SRC);如果CF1,则表示(DST)(SRC), 当OF SF1时,(DST)(SRC)。,二、算术运算类指令,例 两个无符号数(AL)49H、(BL)28H进行大小比较。 解:指令段为: MOVAL, 49H MOV BL, 28H CMPAL, BL 执行后,CF0,说明49H28H。 如果采用CMP BL,AL语句,则CF1,说明28H49H。,二、算术运算类指令,例 两个有符号数104、113进行大小比较。 解:当采用8位补码表示时,这两个有符号数分别为98H和8FH。程序段为: MOVAL, 104 MOV B
15、L, 113 CMPAL, BL 执行后,OF0,SF0,说明104113。如果采用CMP BL,AL语句,则OF0,SF1,这说明 113104。,二、算术运算类指令,例 两个有符号数57、113进行大小比较。 解:当采用8位补码表示时,这两个有符号数分别为39H和8FH。程序段为: MOVAL, 57 MOV BL, 113 CMPAL, BL 执行后,OF1,SF1,说明57113。如果采用CMP BL,AL语句,则OF1,SF0,这说明11357。,二、算术运算类指令,二、算术运算类指令,3.增量INC 和减量DEC,二、算术运算类指令,格式: INC DST ; (DST) (DST
16、)1 DEC DST ; (DST) (DST)1 说明: INC为增量指令,每次对DST的内容增加1;DEC为减量指令,每次对DST的内容减去1。 DST可以取通用寄存器和存储单元。 INC和DEC指令可以正常影响PSW中的5个标志位:AF、OF、 SF、ZF和PF,但它们不会影响CF位。,例如,设VAR1为字型变量,则有 DEC AX ;(AX) (AX) 1 INC DL ;(DL) (DL)1 INC VAR1 ;(VAR1) (VAR1)1 DEC WORD PTR BX ;(BX) (BX)1,二、算术运算类指令,指令为零操作数指令,采用隐含寻址,隐含的操作数为AX及AX,DX,二、算术运算类指令,4. 符号扩展指令 CBW,CWD(字位扩展指令),格式: CBW ;将AL中的符号扩展到AH中,形成一个字AX CWD ;将AX中的符号扩展到DX中, 形成双字(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宠物驯养师岗位面试问题及答案
- 2025届浙江省丽水、湖州、衢州市高二下化学期末教学质量检测试题含解析
- 河北省雄安新区博奥高级中学2025年化学高二下期末质量检测试题含解析
- 公司房车使用管理办法
- 杭州建筑拆除管理办法
- 公墓资金使用管理办法
- 农民工权益保障与工资支付法规解析
- STM32虚拟仿真综合实验平台设计与应用研究
- 儿童文学的内涵与外延探究
- 体育舞蹈课程教学体系构建与技能评价标准研究
- 【用Zemax设计开普勒望远镜的目镜浅析7900字(论文)】
- 患者出院随访统计分析报告
- 设备采购售后服务方案
- 《不宁腿综合征》课件
- CST仿真技术交流
- 部编版道德与法治小升初一二三四五六年级全册复习简答题100道汇编(附答案)
- 幼儿园课程审议下的主题活动实施
- 商业保理行业营销策略方案
- 《扫描电子显微镜》课件
- 水利水电工程施工截流设计说明书
- 变速箱厂总平面布置设计设施规划与物流分析课程设计
评论
0/150
提交评论