




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章 数据传送指令 教师:余有灵 博士 内容 u第一节 机器语言 u第二节 数据传送指令 u第三节 汇编程序 2021-7-27 第2页 2021-7-27第3页 为什么要机器语言指令? u幸运的是,我们不需要经常以十六进制形式编码 l使用汇编程序. l汇编程序将汇编代码翻译成机器语言 u机器语言是微处理器理解的本机二进制代码 u介绍机器语言指令的原因 l建立对指令编码方式的感觉 l了解不同的指令包含不同数目字节的原因 l有助于生成有效率的代码 2021-7-27 第4页 2021-7-27 Tongji University Page 5 Prerequest u回顾:内存管理模型 u回顾
2、:逻辑地址,有效地址,物理地址 u思考:如何从程序指令中的地址表示信息定位到 物理内存中的指定存储单元? l受实模式和保护模式的影响 2021-7-27 Tongji University Page 6 Fundamental Problems u问题:如何设计计算机指令? u问题:在设计计算机指令系统,应遵循何种原则 ? u问题:如何从程序(指令序列)中的形式地址确 定最终可硬件实现的物理地址(即寻址问题) 2021-7-27 Tongji University Page 7 Instruction 使用寄存器前缀 (Windows) MOV AX,BX ;使用寄存器前缀 2021-7-27
3、 第36页 指令格式 u机器语言指令 l从一个字节到多达13个字节 l超过100,000种变化形式 2021-7-27 第37页 操作码字节 u1-2 字节 u操作码 选择操作 l前6位,例如:100010MOV uD 指示数据流的方向 lD=0, 数据: REG R/M lD=1, 数据: R/M REG uW 指示数据是一个字节或一个字(双字) lW=0, 字节 lW=1, 字或双字,依赖于寄存器长度前缀(66H) 2021-7-27 第38页 The MOD/REG/(R/M) 字段 u字段 lREG包含寄存器 lR/M字段包含一个寄存器或一个存储器寻址方式,例如in BX u详细说明R
4、/M如何使用以及是否存在偏移量 l存储器 00: 00: 无偏移量无偏移量 01: 801: 8位位符号扩展符号扩展偏移量偏移量 10: 16/3210: 16/32位位有符号有符号偏移量,取决于地址长度超越前缀偏移量,取决于地址长度超越前缀(67H)(67H) l寄存器 11: R/M11: R/M是寄存器是寄存器 l举例 MOV AL,DIMOV AL,DI MOV AL,DI+2MOV AL,DI+2 MOV AL,DL+1000HMOV AL,DL+1000H 2021-7-27 第39页 寄存器分配 u寄存器 lREG字段 l当MOD=11时,R/M字段 2021-7-27 第40页
5、 代码代码W=0(字节字节)W=1(字字)W=1(双字双字) 000ALAXEAX 001CLCXECX 010DLDXEDX 011BLBXEBX 100AHSPESP 101CHBPEBP 110DHSIESI 111BHDIEDI The R/M Field uMOD=00, 无偏移量 uMOD=01, 8位符号扩展偏移量 uMOD=10, 16/32位有符号偏移量 2021-7-27 第41页 R/M代码代码16位存储器位存储器 寻址模式寻址模式 32位存储器位存储器 寻址模式寻址模式 000DS:BX+SIDS:EAX 001DS:BX+DIDS:ECX 010SS:BP+SIDS:
6、EDX 011SS:BP+DIDS:EBX 100DS:SI使用比例变址字节 101DS:DISS:EBP 110SS:BPDS:ESI 111DS:BXDS:EDI 寄存器分配 u两字节指令: 8BECH l100010 11 11 101 100 u16位指令模式,没有超越前缀 l操作码=100010 (MOV) lD=1 (R/MREG) lW=1 (字) lMOD=11 (R/M是寄存器) lREG=101 (BP) lR/M=100 (SP) l因此该指令为 MOV BP,SP 2021-7-27 第42页 寄存器分配 u两字节指令: 668BE8H l01100110 100010
7、 11 11 101 000 u16位指令模式,带66H l操作码=100010 (MOV) lD=1 (R/MREG) lW=1 (双字) lMOD=11 (R/M是寄存器) lREG=101 (EBP) lR/M=000 (EAX) l因此该指令为 MOV EBP,EAX 2021-7-27 第43页 R/M字段 uMOV DL, DI l操作码 100010 lD=1 (R/MREG) lW=0 (字节) lMOD=00 (无偏移量) lREG=010 (DL) lR/M=101 (DI) l因此机器语言指令为:8A15H 2021-7-27 第44页 R/M字段 uMOV DL, DI
8、+1 l操作码 100010 lD=1 (R/MREG) lW=0 (字节) lMOD=01 (8位符号扩展偏移量) lREG=010 (DL) lR/M=101 (DI) l偏移量=01 (偏移量) l因此机器语言指令为 8A5501H uMOV DL, DI+1000H 对应 8A950010H 2021-7-27 第45页 2021-7-27第46页 MOV指令 u操作码100010,但不局限于此 MOV AX,BX MOV AX,BX MOV AX,BX MOV CX, 23H 段MOV指令 u操作码 100011,并不是100010 u并不经常直接寻址段寄存器 u了解段寄存器MOV指
9、令的局限性非常重要. l立即数不能被移进段寄存器. lCS不能通过段寄存器MOV指令成功装入. lMOV CS, R/M 以及 POP CS 不允许. 2021-7-27 第48页 代码代码段寄存器段寄存器 000ES 001CS 010SS 011DS 100FS 101GS PUSH/POP u重要指令在 LIFO(后进先出) 堆栈存储器中存储 和取出数据 u六种形式 l寄存器 l存储器 l立即数 l段寄存器 l标志位 l所有寄存器 u16位或32位数据的函数. 2021-7-27 第49页 PUSH uPUSH l通过SS:SP起作用 l16/32位数据处理模式 l例: 图4-11 uP
10、USHA/PUSHAD (压入所有寄存器) l顺序: AX、CX、DX、BX、SP、BP、SI, DI (或者以相同顺序的32位寄存器) l需要16字节的堆栈存储空间 l见图4-12 u见表4-7 lPUSH reg16/reg32 lPUSH mem16/mem32 lPUSH seg lPUSH imm8/imm16 lPUSHD imm32 lPUSHF/PUSHFD 2021-7-27 第50页 POP uPOP l通过SS:SP起作用 l16/32位数据处理模式 l例: 图4-13 uPOPA/POPAD (弹出所有寄存器) l顺序: DI、SI、BP、SP、BX、DX、CX、AX
11、(或者以相同顺 序的32位寄存器) l从堆栈存储空间中移除16字节 u见表4-8 lPOP reg16/reg32 lPOP mem16/mem32 lPOP seg lPOPF/POPFD 2021-7-27 第51页 初始化堆栈 u当堆栈初始化时,应当加载SS与SP寄存器 lSS 堆栈段的栈底 lSP 堆栈的大小 l如果堆栈区域为10000H-1FFFFH,大小是FFFFH SSSS1000H1000H SPSP0000H0000H l顶部位置和底部位置是邻接的 l见图4-14 u可以由汇编语言或链接程序自动加载. l使用STACK段定义. 2021-7-27 第52页 装入有效地址 u装
12、入有效地址 lLEA u从存储区域中装入偏移地址和段的值 lLDS, LES, LSS, LFS, LGS 2021-7-27 第53页 LEA uLEA指令将一个存储器区域的有效地址装入一个 指针或变址寄存器. lLEA将偏移地址装入16位或32位寄存器 l有时我们用一个MOV和关键词OFFSET进行相同的操作 MOV BX,OFFSET FRED LEA BX,FRED 两个指令完成同样的任务. u见例4-3 2021-7-27 第54页 装入段和变址 uLDS、LES、LFS、LGS以及LSS将偏移地址装入一 个16位或32位寄存器,将相应的段地址装入DS、 ES、FS、GS或SS uL
13、DS、LES、LSS、LFG以及LGS允许段寄存器和指 针都从存储器装入. LDS BX,BOB 将存储在一个称为BOB的32位存储器区域的段地址和偏 移地址装入DS和BX. u见例4-4 2021-7-27 第55页 装入段和变址 2021-7-27 第56页 数据串传送指令 u数据串传送指令 lLODS、STOS、MOVS、INS以及OUTS. u这些指令使用方向标志位来选择指令执行以后指针 修改的方式 lD = 0 自动递增 lD = 1 自动递减. u这些指令很多都可以加一个REP (重复) 前缀来重复 执行该条指令,执行次数存储在CX寄存器中. 2021-7-27 第57页 数据串传
14、送指令 u方向标志位 lD=0, 自动递增 lD=1, 自动递减 uDI,SI lDI 和附加段ES lSI 和数据段DS, 可以段超越 u允许的带后缀的形式 lB, 字节 lW, 字 lD, 双字 uREP和CX uDX, INS/OUTS的I/O地址 2021-7-27 第58页 LODSW 2021-7-27 第59页 数据串传送指令 u默认DI访问附加段中的数据,SI访问数据段中的数据 uLODS将SI寻址的数据段中的数据装入AL、AX或EAX,然后增加 或者减少SI uSTOS将AL、AX或EAX存储到由DI寻址的附加段中,然后增加或 减少DI uREPS STOS 重复该条指令,执
15、行的次数存储在CX中,当CX=0 时终止 l见例4-5 uMOVS示唯一一条在存储区域内传送数据的指令 l见例4-6, 4-7, 4-8 uINS 指令将数据从I/O设备传送到由DI寻址的附加段中;I/O 地址位于DX寄存器中 uOUTS指令将由SI寻址的数据段存储器中的数据传送至由DX寻 址的I/O设备 2021-7-27 第60页 其他指令 XCHG将寄存器内容和任何其他寄存器或存储单元的内容交换 XLAT将AL寄存器中的内容转换成存储在存储表中的一个数字 lAL: 数字 lBX: 表的偏移地址 l见例4-11, 图4-17 2021-7-27 第61页 其他指令 IN和OUT指令执行I/
16、O操作 两种I/O寻址方式 : 固定端口与可变端口 l固定端口寻址时,端口地址出现在指令中,例如,当 使用ROM时 l可变端口寻址时,I/O地址在一个寄存器中 l两条I/O指令在I/O设备和累加器(AL、AX以及EAX)之间 传送数据. l16位I/O地址意味着一个系统中最多可能有多达64K个 I/O设备 2021-7-27 第62页 IN和OUT u见例4-12 2021-7-27 第63页 其他指令 MOVSX是传送及符号扩展;MOVZX是传送及零扩展 不同的寄存器操作 2021-7-27 第64页 其他指令 uBSWAP l在由小到大的格式和由大到小的格式之间转换 uCMOV l条件转移
17、 l取决于先前操作影响的最后的标志位 2021-7-27 第65页 段超越前缀 u段超越前缀可以附加到几乎任何指令的存储器寻 址方式前 uJMP和CALL指令可以与段超越前缀一起使用 u举例 lMOV AX, ES:DI lLODS ES:DATA1 2021-7-27 第66页 2021-7-27第67页 Assembler(汇编程序) uDirective(伪指令) lStoring Data in a memory segment (定义指令) DB, DB, 定义字节定义字节 DW, DW, 定义字,定义字,2 2字节字节 DD, DD, 定义双字,定义双字,4 4字节字节 DQ, D
18、Q, 定义四字,定义四字,8 8字节字节 DT, DT, 定义定义1010字节字节 lDUP (占位指令) ?, ?, 位置保留,初始化为位置保留,初始化为0 0 lALIGN (对齐指令) ALIGN 2ALIGN 2 ALIGN 4ALIGN 4 ALIGN 8ALIGN 8 2021-7-27 第68页 Assembler(汇编程序) uDirective(伪指令) lEQU, THIS, ORG, ASSUME TEN EQU 10TEN EQU 10 DATA1 EQU THIS BYTE DATA1 EQU THIS BYTE ORG 100H (ORG 100H (改变偏移地址改变偏移地址) ) ASSUME CS:CODE_SEGASSUME CS:CODE_SEG lPROC, ENDP u存储器组织 l模型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旺旺食品面试题及答案
- 育婴培训考试题及答案
- 2025年平面设计师专业能力测试卷:平面设计作品设计理念传播性试题
- 2025年高级帆船教练资质认证考试试题汇编
- 2025年电子商务师(中级)职业技能鉴定试卷:电子商务平台数据分析与客户行为分析试题
- 2025年电信网络优化工程师考试试题
- 2025年春季烟花爆竹安全作业特种作业操作证模拟试题备考攻略
- 2025年护士执业资格考试题库-急危重症护理学专项护理信息化管理试题
- 2025年美容师高级护理技能测试卷:美容师美容院经营管理知识试题
- 2025年危险化学品安全考试题库(危险化学品安全操作规范修订与培训效果)试题
- 生物膜技术革新:MBBR与IFAS工艺中功能性生物膜挂膜驯化的深入探讨
- 心肺复苏课件
- 2025至2030全球及中国企业文件共享和同步(EFSS)行业产业运行态势及投资规划深度研究报告
- 上海金山区属国有企业招聘笔试真题2024
- 2025至2030中国碳化硅陶瓷膜行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国生石灰行业市场深度调研及发展趋势与投资方向报告
- 河北省沧州市2023-2024学年七年级下学期期末数学试题(冀教版)
- 金属与石材幕墙工程技术规范-JGJ133-2013含条文说
- ASTM B344-20 电加热元件用拉制或轧制镍铬及镍铬铁合金标准规范
- 《石油化工企业储运罐区罐顶油气连通安全技术要求》
- 人教版七年级数学下册计算类专项训练卷【含答案】
评论
0/150
提交评论