资源预览内容
第1页 / 共179页
第2页 / 共179页
第3页 / 共179页
第4页 / 共179页
第5页 / 共179页
第6页 / 共179页
第7页 / 共179页
第8页 / 共179页
第9页 / 共179页
第10页 / 共179页
亲,该文档总共179页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第3章 指令系统 3.1 概述 3.2 80486寻址方式 3.3 80486标志寄存器 3.4 汇编语言语法规则之一 3.5 80486基本集指令3. 概述 1.指令:通知 CPU执行某种操作的“命令”, CPU全部指令的集合,称为指令系统2.指令的书写格式 目标指令(机器指令)用一串0,1代码书写注意:硬件只能识别,存储,运行目标指令 符号指令:用规定的助记符,规定的书写格式 书写的指令大多数指令由操作码和地址码2部分组成 操作码:通知CPU执行什么操作(唯一) 地址码:指令的操作对象所存放的位置(根 据操作对象的多样性其表现形式很多)教材上把地址码称为操作数3.指令的组成相应的编码规则对指令进行编码 操作码的编码 地址码的编码80486符号指令与机器指令对照表 操作 80486符号指令 80486机器指令 1234HAX MOV AX, 1234H B8 34 12 AX+BXAX ADD AX, BX 03 C3 CX-DXCX SUB CX, DX 2B CA返回调调用程序 RET C3MOV: MOVE传送 ADD:加 SUB:减 RET:RETURN 返回4.目标程序的生成 汇编 源程序编辑、汇编、链接可执行的机器指令 程序(目标程序)5.指令长度486指令长度(机器指令长度)为116字节 规定:多字节指令占用连续的内存单元,存放指 令第一字节的内存地址,称为“指令地址”。CPU只能识别,存储,运行目标指令,而用机 器指令编程非常困难。于是早期的专家们发明了 符号指令,再经过软件把符号指令机器指令。 图示如下:6.指令存放 如:12345H单元中有一条指令 MOV AX,6789H67H89HB8H12345H:操作码操作数6789HMOV AX,6789H先写操作码,再写操作数。多字节操作数连续 存放。存放规律: 低位字节存放在低地址单元, 高位字节存放在相邻的高地址单元7. 符号指令的 书写格式标号: 操作码助记符 空格 操作数助记符 ;注释 如:NEXT: ADD AX , BX ;AX+BX AXINC SI ;SI+1 SI 标号:以字母开头,后跟字母,数字,下划线,长度 31字符标号又称符号地址,代表该指令的逻辑地址。 可有可无,设置是为了程序的转向注解:以“ ;”开头,不执行,打印程序清单时照 原样打印,“系统保留字”不能做标号。3.2 486寻址方式 操作数是指令的操作对象,寻址方式与地址 码有密切关系。形成操作数地址码的过程就是 寻址。“寻址方式”:通俗的讲,就是通知CPU本条 指令的操作数在哪儿?或者说用什么方式才能得 到操作数。微机系统有3类操作数: 立即数:操作数包含在本条指令中,是指令的一部分。 寄存器操作数:CPU内部的通用寄存器,段寄存器内容。 内存操作数:操作数在存储单元中。486有3类7种寻址方式 立即寻址方式:获得立即数 寄存器寻址方式:获得寄存器操作数 存储器寻址方式:获得存储器操作数(内存操 作数)学习重点:怎样在符号指令中,正确的描述各 种寻址方式1.立即寻址操作数包含在本条指令中,是指令 的一部分,完整地取出该条指令,也就获得了 操作数。 操作码34H12H代 码 段低高DXDLDHDX3412例:MOVDX,1234H015立即寻址方式示意图如:MOVEAX,12345678HMOVBL,10101010B ;AAH BLMOV CL, 4;FCH CLMOVDL,A;41H DLADD AL,0C8HMOVSI,3*5;15 SI 上例源操作数即为立即寻址, 立即数书写规定: 立即数以数字开头,以开头的16进制数,必须 前缀0。程序员可以按自己的习惯书写立即数,各种合法的立即数经 汇编后,一律自动转换成等值的二进制数,负数用补码表示。立即数的数制用后缀表示,B表示二进制数,H表示十六 进制数, D或缺省为十进制数,单引号括起来的字符编 译成相应的ASCII码 。 可以用+ * / 组成立即数表达式2. 寄存器寻址操作数在CPU的某个寄存器中, 符号指令中直接写出寄存器名称。如: MOV AX , DS ;DS内容 AX INC SI ;SI+1 SI (Increase 增量)DEC DI ;DI 1 DI (Decrease 减量 )如:下述条指令,目标操作数即为寄存器寻址MOV EAX,12345678HMOV BL,10101010B ;AAH BLMOV CL, 4;FCH CLMOV DL,5;35H DLADD AL,0C8HMOV SI,3*5;15 SI3.存储器操作数寻址方式重申: 在读写内存操作数之前,CPU必须知道相关存 储单元的物理地址。 程序员的责任仅在于正确的书写逻辑地址表达式 ,然后由CPU自动运算以求出物理地址。 由于CPU对存储器采用分段管理, 因此指令格式 中只能写出存放操作数的内存单元的“逻辑地址” 。 存储单元逻辑地址表达式的一般形式段寄存器:偏移地址有5种寻址方式段超越前缀助记符,访问约定的逻辑段可以省略 实模式下,物理地址=段寄存器24 +偏移地址(1) 直接寻址 地址表达式的格式1:段寄存器:偏移地址 地址表达式的格式2: 段寄存器:变量名用变量名代表存储单元的有效地址 如:MOVAL, ES:2CH从ES附加段偏移地址为2CH的单元取数AL 如:MOV AX, DS:1234H从数据段偏移地址为1234H的单元取一字 AX这种格式很少使用, 通常情况下,程序员不 知道某单单元的偏移地址(本书仅在P349有过一 次应用) 操作码34H 12H50H 30H代 码 段低高DS 0050AXALAH例: MOV AX, DS:1234H直接寻址方式示意图50000H050000H + 1234H51234H51234H数 据 段设数据段XX字节单元的内容为11HES附加段YY字单元的内容为2233HMOV AL, DS:XX ;取数据段XX字节单元的内容AL或 MOV AL, XX ; AL=11HMOV AX, ES:YY ;取ES附加段YY字单元的内容AX或 MOV AX, YY ; AX=2233H说明: 汇编语言允许为某单元起一个“名字”,这个名 字就称为该单元的“变量名”,经汇编之后,变 量名有段基址和偏移量两种属性。 变量名是唯一的,程序中不能有重复的变量名 , “段寄存器:”可以省略。 (2)寄存器间接寻址 寄存器间接寻址又称间接寻址,间址什么是间接寻址?操作数在内存单元,该单元的段基址在段寄存器中 有效地址在间址寄存器中,CPU首先进行地址计算 间接寻址的地址表达式段寄存器:间址寄存器某单元的物理地址=段寄存器内容16+间址寄存器 访问约定的逻辑段,间接寻址的地址表达式 简化为: 间址寄存器某单元的物理地址=约定的段寄存器内容16+ 间址寄存器操作码30H代 码 段低高DS 5 0 0 030例: MOV AX , BX 间接寻址方式示意图50000H051000H数 据 段1 0 0 0 HH5 1 0 0 0 HBX+50H50AX 间址寄存器 和约定访问的逻辑段 486规定:间间址寄存器约约定访问访问 的逻辑逻辑 段 BP堆栈栈段 16位寻寻址方式BX,SI,DI数据段EBP,ESP堆栈栈段 32位寻寻址方式EAX EDX,ESI,EDI数据段举例:设数据段BUF字节单元的内容为55H,取出该 数 AL 解1:用BX间址MOV AX , 数据段段基址MOV DS , AXMOV BX , BUF单元的有效地址MOV AL , DS:BX ;AL=55H 等价于: MOV AL , BX 由于BX间址,约定访问的是数据段,“DS:”可省解2:用BP间址MOV AX , 数据段段基址MOV DS , AXMOV BP , BUF单元的有效地址MOV AL , DS:BP ;AL=55H不能写成: MOV AL , BP 由于BP间址约定访问的是堆栈段,“DS:”不可省 解3:用变量名直接寻址MOV AX,数据段段基址MOV DS,AXMOV AL, BUF ;AL=55H(3)基址寻址在基址寻址中,有效地址由两部分组成。 一部分在基址寄存器中,另一部分为常量 。 基址寻址的地址表达式:段寄存器:基址寄存器+位移量 物理地址=段寄存器内容16+基址寄存器+位移量 访问约定的逻辑段,简化的地址表达式:基址寄存器+位移量 物理地址=约定的段寄存器内容16+基址寄存器+位移量操作码30H代 码 段低高DS 5 0 0 0AL例: MOV AL,BX+2基址寻址方式示意图50000H051002H数 据 段1 0 0 0 HH5 1 0 0 2 H+BX02H0 2 +H 基址寄存器和约定访问的逻辑段基址寄存器约约定访问访问 的逻辑逻辑 段 BP堆栈栈段 16位寻寻址方式BX数据段EBP,ESP堆栈栈段 32位寻寻址方式EAX EDX,ESI,EDI数据段 举例 设数据段BUF单元依次有:78H,56H,34H,12H 则:MOVAX , 数据段段基址 MOV DS , AX MOV BX , BUF单元有效地址 MOV DH , BX+1 ;DH=56H MOV DX , BX+2 ;DX=1234H12H34H56H78HBUF(4) 变址寻址 有比例因子的变址寻址其地址表达式为 段寄存器:比例因子*变址寄存器+位移量物理地址=段寄存器16+比例因子变址寄存器+位移量 没有比例因子的变址寻址其地址表达式为: 段寄存器:变址寄存器+位移量访问约定的逻辑段可简化为 : 变址寄存器+位移量物理地址=约定的段寄存器16+变址寄存器+位移量 变址寄存器与约定访问的逻辑段 变变址寄存器约约定访问访问 的逻辑逻辑 段适用于SI,DI数据段无比例因子,16 位寻寻址 EBP堆栈栈段有比例因子,32 位寻寻址EAX EDX,ESI,EDI数据段说明:比例因子只能是1、2、4、8因此:MOV AL, 8*SI+15;非法,16位寻址不能使用比例因子 MOV AL , 10*ESI+5 ;非法指令,比例因子错了MOV AL , ES:SI ;访问附加段MOV AL , SI ;访问数据段 (5) 基址加变址寻址存储单元的有效地址由3部分组成有比例因子的基址加变址的地址表达式为:段寄存器:基址寄存器+比例因子*变址寄存器+位移量访问约定逻辑段其地址表达式简化为:基址寄存器+比例因子*变址寄存器+位移量操作码30H代 码 段低高DS 5 0 0 0AL例: MOV AL,BX+SI+0250H基址+变址寻址方式示意图50000H053250数 据 段2 0 0 0 H H5 3 2 5 0 H+SI50H0 2 5 0 +H1 0 0 0 H+BX02H无比例因子基址加变址 地址表达式:段寄存器:基址寄存器+
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号