版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3.3 8086/8088指令系统可分成如下6类: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令13.3.1 数据传送指令 可实现 存储器 寄存器 I/O 数据传送指令又可分为如下四种: 通用传送 目标地址传送 标志传送 输入输出21. 通用传送指令(1) MOV dest,src; destsrc 传送的是字节还是字取决于指令中涉及的寄存器是8位还是16位。 具体来说可实现: MOV mem/reg1,mem/reg2 指令中两操作数中至少有一个为寄存器 例: MOV CL,DL MOVAX,BX MOVSI,CX MOVCL,BX+53 MOV
2、reg,data ;立即数送寄存器 MOV mem,data ;立即数送存储单元 MOV acc,mem ;存储单元送累加器 MOV mem,acc ;累加器送存储单元 MOV segreg,mem/reg ;存储单元/寄存器送段寄存器 MOV mem/reg,segreg ;段寄存器送存储单元/寄存器4MOV指令使用规则:1) IP不能作目的寄存器2) 不允许memmem3) 不允许segregsegreg4) 立即数不允许作为目的操作数5) 不允许segreg立即数6) 源操作数与目的操作数类型要一致5几个不能传送的解决办法:用AX作桥梁存储器存储器: MOV AX,MEM1 MOV ME
3、M2,AX段寄存器段寄存器: MOV AX,DS MOV ES,AX段寄存器立即数: MOV AX,DATA MOV DS,AX67应用举例:将1000H开始的100个存储单元 全部填充为ASCII码2AH(*)。 程序段如下: MOV DI,1000H MOV CX,64H MOV AL,2AH AGAIN: MOV DI,AL INC DI DEC CX JNZ AGAIN HLT8上程序段存放在代码段中,設(CS)=109EH,则各条指令存放地址如下: CS : IP 指令109E : 0100 MOV DI,1000H109E : 0103 MOV CX,64H109E : 0106
4、MOV AL,2AH109E : 0108 MOV DI,AL109E : 010A INC DI109E : 010B DEC CX109E : 010C JNZ 0108109E : 010E HLT109E : 01109 写入2AH(*)后,数据段中相应存储单元的内容改变如下:DS:1000 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2ADS:1010 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2ADS:1020 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
5、2A 2A 2ADS:1030 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2ADS:1040 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2ADS:1050 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2ADS:1060 2A 2A 2A 2A(2) 堆栈操作指令10什么是堆栈? 按“后进先出(LIFO)”方式工作的存储区域。堆栈以字为单位进行压入弹出操作。 为什么要设置堆栈? 为什么要按 “后进先出”方式工作?参见下图11主程序IP继续执行主程序执行子程
6、序转子程序压栈弹出返回主程序主程序IPIP(下)继续执行主程序转子程序1返回主程序IP执行子程序 2转子程序2返回子程序1IP(下)执行子程序1继续执行子程序1(a)(b)子程序调用示意图(a) 主程序调子程序; (b) 子程序嵌套示意图压栈弹出IP(下) 规定由SS指示堆栈段的段基址,堆栈指针SP始终指向堆栈的顶部,SP的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。 12SPSS堆栈段进栈方向退栈方向栈底栈顶 压栈指令 PUSH src ; src为16位操作数 src 即 source 例:PUSHAX;将AX内容压栈 执行操作: (SP)- 1高字节AH (SP)- 2低字节AL
7、(SP)(SP)- 213堆栈指针是先减,再压入要暂存的内容14设(AX)=10 20H,执行示意图如图:低地址存储区(SS段)执行前(AX)=1020(SP)存储区(SS段)进栈方向执行后2010(AL)(AH)PUSH AX指令执行示意图(SP) - 2(SP)高地址低地址高地址(SP) - 1注意进栈方向是高地址向低地址发展。压栈指令的格式为: PUSH reg PUSH mem/reg PUSH segreg例如: PUSH AX PUSH BX PUSH DS 15 弹出指令 POPdest ;dest destination (目的)例: POPBX;将栈顶内容弹至BX 执行操作:
8、1)(BL)(SP)后 SP=SP+1 2)(SP)(SP)后 SP=SP+1 所以 最终的SP=原来的SP+216先弹出暂存的内容,然后堆栈指针才加17POP BX 的执行示意图如下图所示:低地址存储区(SS段)出栈方向执行前2010POP BX指令执行示意图(SP)存储区(SS段)执行后(BX)=1020(SP)(SP)+1(SP)+2BX2010高地址低地址高地址堆栈指令使用时应注意几点:堆栈操作总是按字进行不能从栈顶弹出一个字给CS堆栈指针为SS:SP,SP永远指向栈顶SP自动进行增减量(-2,+2)18(3)交换指令XCHG格式:XCHG reg,mem/reg功能:交换两操作数的内
9、容。 要求:两操作数中必须有一个在寄存器中; 操作数不能为段寄存器和立即数; 源和目地操作数类型要一致。举例: XCHGAX,BX XCHG2000H,CL19Exchange values of two operands (4)查表指令XLAT 执行的操作: AL(BX)+(AL) 又叫查表转换指令,它可根据表项序号查出表中对应代码的内容。执行时先将表的首地址(偏移地址)送到BX中,表项序号存于AL中。 例如:内存数据段有一张16进制数的ASCII码表,设首地址为2000H,如欲查出表中第11个代码(代码序号从0开始)即十六进制数B的ASCII码。ASCII表在DS段中,并假设(DS)=40
10、00H。见右图。20303132.394142.4546.42000H+042000H+0BH0129ABEF十六进制数ASCII码表存储器Translate byte from table21则可用如下几条指令实现:MOV BX,2000H ;(BX)表首地址MOV AL,0BH ;(AL)序号XALT ; 查表转换执行后得到:(AL)= 42H = B注意:转换表长度最大为256个表项(字节)。(5)字节- 字转换指令格式:CBW ;把AL的符号位复制到AH CWD ;把AX的符号位复制到DX用途:用于有符号数的除法。例如:(AL) = A7H,则执行CBW后,AH的内容为FFH。22CB
11、W : Convert byte into wordCWD : Convert Word to Double word2. 输入输出(I/O)指令 只限于用累加器AL或AX来传送信息。功能: (累加器)I/O端口(1)输入指令IN格式: IN acc,PORT ;PORT端口号0255 IN acc,DX ;DX表示的端口范围达64K例: IN AL,80H ;(AL)(80H端口) IN AL,DX ;(AL)(DX)23当端口号大于255时,一定要用DX作间接寻址。(2) 输出指令OUT格式:OUT port, acc OUT DX, acc例:OUT 68H,AX ;(69H,68H)(
12、AX) OUT DX,AL ;(DX)(AL) 在使用间接寻址的IN/OUT指令时,要事先用传送指令把I/O端口号设置到DX寄存器,如: MOV DX,220H IN AL,DX ;将220H端口内容读入AL24当端口号大于255时,一定要用DX作间接寻址。3. 地址传送指令 共有三条:格式:LEA reg,mem ; 将指定存储器的16位偏移地址送指定寄存器 LDS reg, mem32; DS :reg(mem开始的四个内存单元) LES reg, mem32; 同上,但DS改为ES 要求源操作数必须是一个内存操作数,目的操作数必须是一个16位的通用寄存器。25Load Effective
13、 AddressLoad memory double word into word register and DSLoad memory double word into word register and ES例:LEA BX,SI+10H设:(SI)=1000H则执行该指令后,(BX)=1010H注意以下两条指令差别: LEA BX,BUFFER MOV BX,BUFFER 前者表示将符号地址为BUFFER的存储单元的偏侈地址取到 BX中;后者表示将BUFFER存储单元中的内容取到 BX中.2627下面两条指令等效: LEA BX,BUFFER MOV BX, OFFSET BUFFER
14、其中OFFSET BUFFER表示存储器单元BUFFER的偏移地址。 二者都可用于取存储器单元的偏移地址,但LEA指令可以取动态的地址,因为它是指令,在执行的过程中取有效地址。OFFSET只能取静态的地址,因为它是伪指令,是在编译的过程中实现的。284.标志传送指令共有四条:(1)读标志指令LAHF LAHF把标志寄存器低8位中的5个标志位传送到AH中的指定位,如下图所示:AHOFDFIFTFSFZFAFPFCFLAHF指令的功能FLAGLoad AH from 8 low bits of Flags register29(2)设置标志指令SAHF SAHF的功能与LAHF的功能正好相反,用图来示意,只要将上图中5个箭头方向反一下即可。OFDFIFTFSFZFAFPFCFAHSAHF指令的功能FLAGStore AH register into low 8 bits of Flags register (3)把标志寄存器推入栈顶指令PUSHF 执行的操作:(SP)-1标志寄存器高8位 (SP)-2标志寄存器低8位 (SP)(SP)-2(4)从栈顶弹出标志寄存器指令POPF 执行的操作:标志寄存器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026燃气灶和烤箱行业市场现状供需分析及投资评估规划分析研究报告
- 伊宁县曲鲁海乡中心小学一年级数学加减法练习题
- 任丘市出岸镇王家务小学一年级数学加减法练习题
- 餐饮店员工劳动合同
- 广东省珠海市2026届高考压轴卷历史试卷含解析
- 大专财经考试题目及答案
- 挑战武举考试题及答案大全
- 山东菏泽定陶区2026-2027学年物理八上期末质量检测模拟试题含解析
- 航空证书考试题目及答案
- 四川省师大一中学2026-2027学年八上数学期末达标检测试题含解析
- 福建省泉州市重点学校初一入学数学分班考试试题及答案
- 2026年招考幼师笔试试题及答案
- 《AQ 3067-2026 化工和危险化学品生产经营企业重大生产安全事故隐患判定准则》解读课件
- 2026-2030中国迷你电脑主机行业产销规模预测与未来经营规划报告
- X线诊断报告书写规范
- 2026年户外运动鞋服消费趋势报告-数字100-202602
- 2026年水发派思燃气股份有限公司社会招聘备考题库及1套参考答案详解
- 公立医院与医疗旅游机构的合作质量协议
- 2025年全国设备监理师设备工程质量管理与检验新版真题附答案
- 2025年邮政内部竞聘考试题及答案
- (正式版)DB15∕T 3413-2024 《住宅小区和商业用房供配电设施规范》
评论
0/150
提交评论