




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Page1 Let sgo Page2 第3章教学内容 3 1基本概念 3 2寻址方式 3 3指令系统重点 7种操作数寻址方式 各指令格式和应用难点 寻址方式 各指令格式的使用方法 Page3 第一部分8086 8088指令系统概述 A分类 91种共115个基本指令 可分6个功能组1 数据传送 Datatransfer 2 算术运算 Arithmetic 3 逻辑运算和移位指令 Logic Shift 4 控制转移 ControlTransfer 5 串操作 Stringmanipulation 6 处理器控制 ProcessorControl Page4 B指令系统常用的符号 不区分大小写 ac 指AL 8位 或者AX 16位 reg R8 AH AL BH BH BL CH CL DH DL R16 AX BX CX DX SP BP SI DI SP 堆栈指针IP PC 指令指针Seg SegReg 段寄存器 CS DS ES SS Mem M 存储器操作数src dst dest 源操作数 目的操作数port I O端口disp 8 16位偏移量data Im 立即数 n8位 nn16位 nnnn32位 存储单元的内容 寄存器或者存储单元的内容 Page5 C 8086 8088指令助记符表 自学 Page6 8086 8088指令助记符表 续 Page7 第二部分8086 8088指令系统一 数据传送指令功能 负责把数据 地址或立即数传送到寄存器或存储单元 特点 计算机最基本 最重要的一种操作 使用比例最高 分类 一 通用传送指令 MOV XCHG PUSH POP XLAT 二 输入输出指令 IN OUT 三 地址传送指令 LEA LDS LES 四 标志传送指令 LAHF SAHF PUSHF POPF注 除SAHF和POPF指令外 其余指令对标志位没有影响 Page8 一 通用传送指令 GeneralPurposeTransfer 8088提供方便灵活的通用的传送操作 适用于大多数操作数 该组指令 除XCHG外 是唯一允许以段寄存器为操作数指令 通用传送指令包括 1 数据传送指令MOV Movement 2 数据交换指令XCHG Exchange 3 堆栈操作指令PUSH Pushwordintostack POP Popwordoffstack 4 查表转换指令XLAT Translate Page9 1 数据传送指令MOVMOVdest src将源操作数传送至目的操作数 dest src 执行后 src 内容不变 dest 内容被改写 相当于将 src 复制一次 可以实现右图各寄存器 储存器之间的数据传送 具体有下列指令格式 Page10 立即数传送至CPU内部通用寄存器组和内存单元R AX BX CX DX BP SP SI DI Mem 用于给寄存器 存储单元赋初值 Im只能为源数不能直接给段寄存器赋值 需R作为中介 例 MOVCL 04H 立即数 8位寄存器MOVAX 03FFH 立即数 16位寄存器MOVWORDPTR SI 057BH 立即数 存储器MOVBYTEPTRMEM 5 立即数 存储器思考 WORDPTR BYTEPTR不加行吗 Page11 判断正误 MOVAL 1MOV12H AHMOVAL 0A12HMOVDS 12H 答案 Im只做源数 bit不匹配 需中介R MOVAL 12HMOVDS AX Page12 CPU内部寄存器之间的数据的任意传送R8 R8R16 R16CS和IP只能为源操作数 不能为目标操作数两段寄存器之间不能直接传送 需R做中介例 MOVDL CH 8位寄存器 8位寄存器MOVAX DX 16位寄存器 16位寄存器MOVSI BP 通用寄存器 段寄存器MOVDS BX 通用寄存器 段寄存器MOVAX CS 段寄存器 通用寄存器 Page13 判断正误 MOVAX IPMOVCS AXMOVDS BLMOVDS 12HMOVIP BX 答案 CS只做源数 bit不匹配 需中介R MOVAL 12HMOVDS AX IP只做源数 Page14 CPU内部寄存器与存储器之间数据传送 R8 MemR16 MemCS和IP不做目标操作数存储单元之间不能直接传送 需中介寄存器例 MOVMEM AX 累加器 存储器 直接寻址MOVMEM DS 段寄存器 存储器 直接寻址MOVDISP BX CX 寄存器 存储器 变址寻址MOVAX DISP SI 存储器 累加器 变址寻址MOVDS MEM 存储器 段寄存器 直接寻址MOVCX DISP BX SI 存储器 累加器 相对基址加变址 Page15 判断正误 MOVAX DA WORDMOVK BYTE AXMOVDS MEMMOVMEM2 MEM1MOVCS MEM1 答案 bit不匹配 需中介R MOVAX MEM1MOVMEME2 AX CS只做源数 Page16 MOV指令应用实现将ARE1开始的100个数据传送到ARE2开始的单元 Page17 分析题意 可以用200条MOV指令来完成100个数据传送 指令操作重复 每个数据传送后的地址是变化的 可以利用循环 但每循环一次要修改地址 源地址和目的地址 必须把地址放在寄存器当中 用寄存器间接寻址来寻找操作数 得到如下程序段 MOVSI OFFSETARE1MOVDI OFFSETARE2MOVCX 100AGAIN MOVAL SI MOV DI ALINCSI 修改地址指针INCDI 修改地址指针DECCX 修改个数JNZAGAIN Page18 MOV指令的字节数 时钟周期数 CPU与内存间传送次数 Page19 计算EA需要的时钟数 若段超越 再加2个时钟周期 Page20 2 数据交换指令XCHG XCHGdest src 源操作数与目的操作数按位交换 dest src 8bit 8bit16bit 16bit 发生在 寄存器之间 寄存器和存储器之间 存储器之间不能直接交换 需中介R 两操作数必须至少一个在寄存器中 段寄存器不参与交换 允许字或字节操作 不影响标志位 Page21 判断正误 XCHGAX BPXCHGSI DA WORDXCHGCL BUFFER1XCHGCX BUFFER2XCHG2007 CLXCHG SI DI XCHGDS AX 答案 DA WORD是MEM BUFFER1为8bit BUFFER2为16bit 改为 2007 就是MEM 必须一个为Reg SegR不参与交换 Page22 如何将两存储器的内容交换 例如 需要交换BUF1和BUF2的内容MOVAX BUF1XCHGAX BUF2XCHGAX BUF1 或者MOVBUF1 AX Page23 3 堆栈操作指令PUSH POP 1 堆栈特点 在存储器中组织的一段内存区域 遵循先进后出 后进先出 FILO LIFO 原则规定堆栈设置在堆栈段内 是开口向上的容器栈底 栈顶 栈深度 空栈 满栈的概念随着推入 弹出堆栈内容增加 减少 SP的值减少 增加 每次操作SP值 2 2 存 取按照字WORD为单位 低8位在低地址字节 高8位在高地址字节 Page24 2 堆栈用途 存放CPU寄存器或存储器中暂时不使用的数据 使用数据时将其弹出 调用子程序 响应中断时都要用到堆栈 调用子程序 或过程 或发生中断时要保护断点的地址 子程序或中断返回时恢复断点 Page25 3 建栈设定堆栈区 SS 栈底和指针初值 SP 例 MOVAX 9000HMOVSS AXMOVSP 0FFFFH则 64KB深度堆栈段的物理地址范围为 90000H 9FFFFHMOVSP 0E200H栈顶的物理地址为 9E200H堆栈在内存中的情况如右图所示 一般 初始化的SP值就是栈底位置 P60图3 9 Page26 4 进栈 压栈 PUSHsrc 将CPU寄存器或存储器中暂时不用的数据存放在堆栈 SP SP 2 SP 1 SP src 已知 AX 1122H PUSHAX将1122H压入堆栈区 Page27 执行操作 SP SP 2 SP AH SP 1 AL 5 出栈 弹出 POPdest 将堆栈中的数据弹出到目标操作数中 dest SP 1 SP SP SP 2 接上例 POPBX 将1122H弹出到BX中 执行操作 BL SP BH SP 1 SP SP 2 Page28 Page29 6 注意PUSH POP指令的操作数不能为立即数 可有 寄存器 通用寄存器 地址指针 变址寄存器 段寄存器 PUSHCS合法 POPCS非法 存储器进栈SP先减2再存数 出栈先出数再SP加2 执行后SP总是指向栈顶PUSH POP指令应该成对使用 保持堆栈原有状态堆栈最大容量即为SS与SP的初值的差 Page30 7 应用举例 例2 用BP的基址指令代替POP指令 MOVBP SPPUSHAXPUSHBXPUSHCX MOVCX BP 6 MOVBX BP 4 MOVAX BP 2 ADDSP 6 例1 压入堆栈的内容与弹出内容顺序相反 PUSHAXPUSHBXPUSHCX POPCXPOPBXPOPAX Page31 例3 子程序嵌套 中断嵌套时断点地址压入和弹出情况 先进后出 Page32 练习 BX 012EH AX 0381H SS 0000H分析 MOVSP 2FCOH PUSHAX PUSHBX对堆栈的影响 答案 执行后 SP 2FCOH 执行后03H 02FBFH81H 02FBEH SP 2FBEH 执行后01H 02FBDH2EH 02FBCH SP 2FBCH Page33 4 查表转换指令XLAT XLATstr table 根据表中代码序号查出表中对应代码元素的内容 1 描述过程为 AL BX AL 该指令的操作数都是隐含的 所执行的操作是将BX为基地址 AL为位移量的字节存储单元中的数送AL 2 合法格式有 XLAT XLATsrc table XLATES src table 3 可用于不同数制和编码间的转换 Page34 XLAT指令使用方法 先建立一个字节表格 表格首偏移地址存入BX 需要转换代码的序号 相对与表格首地址位移量 存入AL 表中第一个元素的序号为0 执行XLAT指令后 表中指定序号的元素存于AL中 AL 为转换的代码 例1 建立数字0 7对应的格雷码表为 表地址序号格雷码十六进制值TABLE000000HTABLE 1100101HTABLE 2201103HTABLE 3301002HTABLE 4411006HTABLE 5511107HTABLE 6610105HTABLE 7710004H要求从键盘输入一位0 7的十进制数码 把它变成格雷码再输出到显示器上 输入5 查格雷码 111 的十六进制值 程序 MOVBX OFFSETTABLEMOVAL 5HXLATTABLE执行结果 AL 07H Page35 执行指令序列 MOVBX OFFSETHex tableMOVAL 0AHXLATHex table假设 DS F000H Hex table 0040H AL 0AH执行XLAT以后 AL 41H F004AH 即 A 的ASCII码 16进制数的ASCII码表 例2 内存的数据段中有一张十六进制数字的ASCII码表 首地址为 Hex table 欲查出表中第10个元素 A Page36 二 输入输出指令 InputandOutput 输入输出指令共两条 1 IN Inputbyteorword 输入指令用于CPU从外设端口接受数据2 OUT Outputbyteorword 输出指令用于CPU向外设端口发送数据 无论接受还是发送数据 必须通过累加器AX 字 或AL 字节 又称累加器专用传送指令 用来完成累加器 AX AL 与I O端口之间的数据传送功能 输入 输出指令不影响标志位 Page37 1 输入指令IN INac port 将端口内的字节 字送入AL AX acc port 具体形式有四种 INAL data8 端口地址8位 输入一个字节INAX data8 端口地址8位 输入一个字INAL DX 端口地址16位 输入一个字节INAX DX 端口地址16位 输入一个字必须通过累加器AX 字 或AL 字节 输入数据 Page38 2 输出指令OUT OUTport ac 将AL AX中的数据输出到端口 port acc 具体形式有四种 OUTdata8 AL 端口地址8位 输出一个字节OUTdata8 AX 端口地址8位 输出一个字OUTDX AL 端口地址16位 输出一个字节OUTDX AX 端口地址16位 输出一个字必须通过累加器AX 字 或AL 字节 输出数据 Page39 注解Port可以是8bit端口地址 能寻址0 255个端口 Port可以是16bit端口地址 能寻址0 65535个端口 可以直接端口地址寻址 如 INAL 80H AL 80HOUT 20H AX 20H AL 21H AH 可以间接端口地址寻址 如 INAX DX AL DX AH DX 1OUTDX AX DX AL DX 1 AH Page40 例1 端口 29H 28H 的数据 存入 DATA WORD INAX 28HMOVDATA WORD AX例2 从端口3FCH送一个字到AX寄存器MOVDX 3FCHINAX DX AL 3FCH AH 3FDH 例3 实现将 AL 05H 端口OUT5 AL 05H AL Page41 三 目的地址传送指令该组指令共三条 可以将地址指针写入指定寄存器或寄存器对 1 LEA LoadEffectiveAddress 2 LDS LoadpointerusingDS 3 LES LoadpointerusingES Page42 1 取有效地址指令LEA LEAreg src 把存储器操作数有效地址装入指定的寄存器 EA reg16 例 设 BX 0400H SI 003CHLEABX BX SI 0F62H 执行指令后 EA BX SI 0F62H 0400H 003CH 0F62H 139EH BX 139EH Page43 1 LEA指令中的目标寄存器必须是16位的通用寄存器 源操作数src必须是一个存储器 2 设 DS 3000HBUFFER 1000H 31000H 0040H区别 LEABX BUFFER BX 1000HMOVBX BUFFER BX 0040H等价 LEABX BUFFER BX 1000HMOVBX OFFSETBUFFER BX 1000H Page44 2 装入地址指针指令LDS LDSreg src 将指令指定mem32单元的前两个单元内容 16位偏移量 装入指定16bit通用寄存器 把后两个单元内容 段地址 装入到DS段寄存器 reg16 EA DS EA 2 用于写远地址指针 Page45 例 假设 DS C000H指令 LDSSI 0010H 执行指令后 SI 0180H DS 2000H Page46 3 装入地址指针指令LES LESreg src 将指令指定mem32单元的前两个单元内容 16位偏移量 装入指定通用寄存器 把后两个单元内容 段地址 装入到ES段寄存器 reg16 EA ES EA 2 用于写远地址指针 Page47 例 假设 DS B000H BX 080AH指令 LESDI BX 执行指令后 DI 05A2H ES 400
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年夏季交通安全测试题含答案
- 2025年安全生产三违安全激励及答案解析
- 物理电磁转换进展课件
- 探寻我的人生意义-如果生命有形状(说课稿)2025-2026学年初三下学期教育主题班会
- 供暖服务合同续签条款
- 2025年安全员安全防护用品验收规范题及答案
- 2024-2025学年新教材高中物理 第十三章 电磁感应与电磁波初步 第三节 电磁感应现象及应用说课稿 新人教版必修3
- 合作市场环境分析协议
- 科学位置与运动教学课件
- 音乐节推广合同
- 《体育游戏》课程标准
- 制程能力管理办法实用文档
- GB/T 451.3-2002纸和纸板厚度的测定
- GB/T 1303.2-2009电气用热固性树脂工业硬质层压板第2部分:试验方法
- 子痫前期子痫课件
- 部编版《县委书记的榜样-焦裕禄》课件1
- 基础教育改革与发展中的热点问题课件
- 流动式起重机械检验记录表
- 汽车保养基础知识优秀课件
- 青少年运动员 运动损伤的预防 课件
- 2022年十部经典的三级片电影
评论
0/150
提交评论