资源预览内容
第1页 / 共56页
第2页 / 共56页
第3页 / 共56页
第4页 / 共56页
第5页 / 共56页
第6页 / 共56页
第7页 / 共56页
第8页 / 共56页
第9页 / 共56页
第10页 / 共56页
亲,该文档总共56页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章 8086指令系统及汇编语言 8086微处理器的各种寻址方式 8086指令系统 8086汇编语言程序基本格式 8086汇编语言程序设计方法 1010 0000 0001 0111 0000 0100 0000 1010 1010 0010 0001 1000 10H 11H 12H 13H 14H 15H 16H MOV AL, (n) n ADD AL, OAH 0AH MOV (n), AL n 存储器地址号汇编语言 二进制机器指令 3.1 8086指令系统概述 指令是计算机执行某种操作的命令。从计算机组 成的层次结构来说,计算机的指令有微指令、机 器指令和宏指令。 机器指令简称指令,完成某一种操作 微指令-执行某个最基本动作的控制命令,解释执行 机器指令 宏指令由若干条机器指令组成的软件指令,完成 某一特定功能。 指令系统是计算机所有指令的集合,表征一台计 算机的重要因素。它的格式和功能不仅直接影响 计算机的硬件结构,也直接影响到系统软件,影 响到机器的适用范围。 一、指令格式 计算机的指令由操作码和操作数两部分组成 操作码字段 表示指令的功能或操作的性质做什么,助记符表示 操作数字段 指令操作的对象或对象的位置对谁做,操作数 操作的对象怎么寻找和确定寻址方式 操作码 指令的操作码表示该指令应进行什么性质的操作。组成 操作码字段的位数一般取决于计算机指令系统的规模 固定长度操作码:便于译码,扩展性差 可变长度操作码:能缩短指令的平均长度 操作数(地址码) 操作数字段一般有一个、两个或三个,多个操作数之间 用“,”分隔。 源操作数指令执行前后值不变 目的操作数指令执行后值改变 指令种类 零地址指令:指令的指令字中只有操作码,没有地址码 一地址指令:指令中只给出一个操作数地址A,另一个操作数 地址和目的操作数的地址均隐含(指定累加器AC) (AC) OP(A)-AC 二地址指令:指令中给出两个地址码字段,分别指明参与操 作的两个数在内存中或运算器通用寄存器的地址,其中地址 A1兼做存放操作结果的地址 (A1) OP(A2)-A1 三地址指令:指令中有两个源操作数地址,A1,A2和一个目标 操作数地址A3 (A1) OP (A2)-A3 根据操作数存放的位置,操作数有三种: (1)立即数指令的操作数字段为操作数本身(数值 ) (2)寄存器操作数操作数包含在CPU的一个内部寄 存器中 (3)内存操作数操作数在内存单元,操作数字段包 含内存单元地址。 可做目的操作数:除立即数外的寄存器、内存操作数 可做源操作数:立即数、寄存器、内存操作数 8086中,任何内存地址由两部分组成: 段的基地址:单元所在段的基地址 段内偏移量:此单元与段基地址的距离 有效地址EA(Effective Address) 段内偏移量为适应各种数据结构的需要,可以有几部分 组成,所以称为有效地址EA. 不同EA的求法就构成了不同的寻址方式。 二、机器字长与指令长度 机器字长 计算机能直接处理的二进制数的位数,它决定运算精度 指令字长指令的字节数 单字指令-指令字长度等于机器字长度的指令 半字长指令 指令长度等于半个机器字长度的指令 双字长指令指令字长度等于两个机器字长度 指令编码:等长和变长编码格式 3.2 8086指令寻址方式 指令系统设计了多种操作数的来源 寻找操作数的过程就是操作数的寻址 把寻找操作数的方式叫做操作数的寻址方式 寻址方式分两大类: 操作数的寻址方式与数据有关,8种 转移地址的寻址方式与程序转移有关,4种 操作数采取哪一种寻址方式 会影响处理器执行指令的速度和效率 对程序设计也很重要 指令的组成 操作码:说明计算机要执行哪种操作,如传送、运算 等操作,它是指令中不可缺少的组成部分 操作数:是指令执行的参与者,即各种操作的对象 操作码操作数 例: MOV AX,CX ;将CX的内容送入AX中。 指令的助记符格式 操作数2,被称为源操作数src,它表示参与指令操 作的一个对象. 操作数1,被称为目的操作数dst,它不仅可以作为 指令操作的一个对象,还可以用来存放指令操作的结 果. 分号后的内容是对指令的解释 操作码 操作数1,操作数2 ;注释 操作数的来源 指 令 寄 存 器 内 存 I/O设备或端口 操作数 指令中的操作数直接存放在机器代码中,紧跟在操作码之后( 操作数作为指令的一部分存放在操作码之后的主存单元中),这 种操作数被称为立即数imm。 可以是8位数值(00HFFH) 也可以是16位数值(0000HFFFFH) 立即数寻址方式常用来给寄存器赋值 MOV AX, 0102H;AX0102H MOV AL, 02H;AL02H 3.1.1 操作数的寻址方式 1、立即寻址 格式: 操作码 数字表达式 MOV AX, F58AH ; (字操作) F58AH称为立即 数 助记符 目的 源 (16位操作数) H表示 为十六进制数 dst src 完成的操作: AX F58AH MOV AH, F5H (字节操作) F5H称为立即数(8位操作数 ) MOV AL, 8AH (字节操作) 8AH称为立即数 完成的操作: AH F5H , AL 8AH 立即寻址操作过程 3456H 3457H AL=8A 字寻址方式 存储器 CS段 8A F5 操作码 AL=8A AH=F5 存储器 CS段 8A F5 操作码 AH=F5 操作码 字节寻址方式 MOV AX,F58AH MOV AH,F5H MOV AL,8AH 指令对立即数格式的要求 8086/8088指令对立即数的格式有三种: 1)立即数可以是16进制的数 MOV AL,57H 2)立即数可以是10进制的数,但指令运行后CPU自动把 10进制数转换为16进制数,然后完成给定功能的操作。 MOV AL,57 ;指令执行后将AL 39H 3)立即数可以是2进制的数 MOV AL,01010111B ;指令执行后将AL 57H 为十进制数时,数后不加H,2进制数时,数后加B,CPU以此来辨别 是那种类型的数据。 2、 直接寻址方式 直接寻址方式的有效地址在指令中直接给出,默认的段地址 在DS段寄存器,可使用段超越前缀改变段。 中括号包含有效地址,表达存储单元的内容 MOV AX, 2000H;AXDS:2000H MOV AX, ES: 2000H ;AXES:2000H MOV AX,BUFFER ; BUFFER:符号地址 指令格式: 操作码 寄存器(16位) , 地址表达式 直接寻址方式的操作数的16位偏移地址(有直接地址值和 标号两种形式)直接包含在指令中,它与操作码一起存放在 代码段中的操作码之后。 段地址DS隐含,也可指定其它段,必须需在指令中指 明。 存储器物理地址地址为:DS:偏移地址 或 ES:偏移地 址。 例: MOV AX,ES:2000H (读数据,RD线为低 电平) 将ES:2000H单元内容送入AX。 例: MOV AX,LABLE 或 MOV AX, LABEL 将标号为LABLE(存放操作数单元的符 号地址) , 即DS:LABLE中的内容送入AX。 LABLE必须在段定义中指明。 例:MOV AX,(2000H); 字操作 MOV AL,(2000H); 字节操作 MOV AH,(2001H); 字节操作 此两条指令的功能与字操作指令的功能相同! 16位段内偏移地址直接包含在指令中。 直接寻址 存储器 DS段 8A F5 XX AL=8A AH=F5 存储器 CS段 操作码 代码段 数据段 00 20 DS:2000 DS:2001 字寻址方式 存储器 DS段 8A F5 XX AL=8A AH=F5 存储器 CS段 操作码 代码段 数据段 00 20 DS:2000 DS:2001 字节寻址方式 操作码 01 20 MOV AX,(2000H ) MOV AL,(2000H ) MOV AH,(2001H ) 3、寄存器寻址方式 操作数存放在CPU的内部寄存器reg中 1)8 位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL 2)16 位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP 3)4个段寄存器seg: CS、DS、SS、ES 寄存器名表示其内容(操作数) MOV AX, BX;AXBX 格式: 操作码 寄存器,寄存器 MOV AX,BX ;AX BX MOV BX,AX ;BX AX MOV AL,BH ;AL BH MOV AH,AL ;AH AL MOV DS,AX ;DS AX MOV SI,AX ;SI AX 注意:目的和源寄存器的 位数必须相同,不同 位数寄存器之间 不能传送数据处理 如: MOV BX,AH p如果要将数据送入段寄存器(CS、DS、ES、SS),必须先将这个 数送入一个非段寄存器,然后再送到段寄存器 段寄存器写入方法: MOV CS,3000H ; 错! MOV AX,3000H ; (该指令不影响RD和WR控制 线均为高电平) MOV CS,AX ;正确(但在使用中不允许 随便修改CS的内容!) MOV SS,1000H ;错! MOV DI,1000H MOV SS,DI ;正确 , (该指令不影响RD 和WR控制线均为高电平) 4、 寄存器间接寻址方式 MOV AX, BX;AXDS:BX MOV AX, ES:BX;AXES:BX MOV AH,DS:BP MOV ES:DI,AL 格式:操作码 寄存器,(寄存器) 有效地址存放在基址寄存器BX、BP或变址寄存器SI、DI中; 对于BX、SI、DI,默认的段地址在DS段寄存器,可使用段 超越前缀改变; 对于BP,默认的段地址在SS段寄存器,可使用段超越前缀 改变 注意:寄存器间接寻址要用方括号或圆号括起来,以便与寄存器操作数相区别。 例: MOV AX,BX;将由BX决定的存储单元的内 容送到AX寄存器,要求对BX事前定义。 间接寻址 AX 0000 0001 0002 0003 BB AA TAB: AH AL AA BB 数据段 0001H BX= (BX) (SI) (DI) (BP) 段寄存器为DS 段寄存器为SS 有效地址 = 操作数在存储器中,指令中寄存器内容作为操作 数所在单元的有效地址。 物理地址计算方法: 物理地址 = (DS)16 + (BX)或(SI)或(DI) 物理地址 = (SS) 16 + (BP) 例:已知:(DS)=2100H,(DI)=2000H 指令:MOV AX,DI;(AX) (DI) 物理地址=(DS)16 +(DI) =2100H 16 + 2000H =21000H+2000H =23000H 指令
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号