汇编语言程序设计32教室课件_第1页
汇编语言程序设计32教室课件_第2页
汇编语言程序设计32教室课件_第3页
汇编语言程序设计32教室课件_第4页
汇编语言程序设计32教室课件_第5页
已阅读5页,还剩224页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、苏州科技学院电子学院赵梅制作苏州科技学院电子学院赵梅制作汇编语言程序设计汇编语言程序设计课程简介课程简介引用引用概述 汇编语言是计算机提供给用户的最汇编语言是计算机提供给用户的最快最有效的语言,也是利用计算机所有快最有效的语言,也是利用计算机所有硬件特性并能直接控制硬件的唯一语言。硬件特性并能直接控制硬件的唯一语言。因而在对于程序的空间和时间要求很高的场合,因而在对于程序的空间和时间要求很高的场合,汇编语言是必不可少的。汇编语言是必不可少的。很多需要直接控制硬件的应用场合,很多需要直接控制硬件的应用场合,更是非用汇编语言不可。更是非用汇编语言不可。特点汇编语言汇编语言是介于计算机能直接理解的是

2、介于计算机能直接理解的机器语言与机器语言与使用使用者容易理解的者容易理解的高级语言之间高级语言之间的一种语言。它除有与代的一种语言。它除有与代码指令一一对应的码指令一一对应的符号指令符号指令外,还增加了专用于定义外,还增加了专用于定义变量、常量、符号、过程、分配存贮空间、定位程序变量、常量、符号、过程、分配存贮空间、定位程序起始地址等一系列称之为起始地址等一系列称之为伪指令伪指令的符号指令。的符号指令。同高级语言比较同高级语言比较,它更接近机器语言,更能全面地,它更接近机器语言,更能全面地反映计算机硬件的功能特点。反映计算机硬件的功能特点。同机器语言比较同机器语言比较,它,它易于阅读,编写和修

3、改程序。因此,易于阅读,编写和修改程序。因此, 使用汇编语言使用汇编语言可编写出运行速度快、占存储空间少、能充分利用可编写出运行速度快、占存储空间少、能充分利用硬件资源、发挥计算机效能并能进行精确控制的程硬件资源、发挥计算机效能并能进行精确控制的程序。序。应用高级语言编译程序的编高级语言编译程序的编制;编辑、调试,链接制;编辑、调试,链接装配、磁盘驱动和磁盘装配、磁盘驱动和磁盘读写等实用程序的编制;读写等实用程序的编制;控制、指挥和监测等实控制、指挥和监测等实时处理程序的编制;计时处理程序的编制;计算机系统的开发。算机系统的开发。 汇编语言是面向机器的汇编语言是面向机器的语言,故它将因计算机语

4、言,故它将因计算机机型的不同而异。但用机型的不同而异。但用汇编语言进行程序设计汇编语言进行程序设计的基本概念、基本技巧的基本概念、基本技巧和基本方法是普遍适用和基本方法是普遍适用的。我们选择目前国内的。我们选择目前国内最广泛使用的最广泛使用的 IBM PC 作作为基础讲授。其它机型为基础讲授。其它机型同学们定可触类旁通。同学们定可触类旁通。 学习汇编语言程序设计汇编语言程序设计第第1章章 汇编语言基础知识汇编语言基础知识第第2章章 8086的指令系统的指令系统第第3章章 汇编语言程序格式汇编语言程序格式第第4章章 基本汇编语言程序设计基本汇编语言程序设计第第1 1章章 汇编语言基础知识汇编语言

5、基础知识1.1 计算机系统概述计算机系统概述1.2 数据表示数据表示1.3 Intel80 x86系列微处理器系列微处理器1.4 微型计算机系统微型计算机系统1.5 8086微处理器微处理器1.6 8086的寻址方式的寻址方式1.1 计算机系统概述计算机系统计算机系统计算机硬件计算机硬件计算机软件计算机软件中央处理器中央处理器存储器存储器外部设备外部设备运算器运算器控制器控制器寄存器寄存器系统软件系统软件应用软件应用软件主存储器主存储器辅助存储器辅助存储器输入设备输入设备输出设备输出设备中央处理器中央处理器CPU总线控制逻辑存储器存储器接口接口接口接口大容量大容量存储器存储器I/O设备设备系统

6、总线系统总线I/O子子系系统统计算机结构计算机结构磁盘、磁磁盘、磁带、光盘带、光盘外存外存数据总线、地址总数据总线、地址总线、控制总线线、控制总线系统总线系统总线1.1 计算机系统概述计算机程序设计语言计算机程序设计语言机器语言机器语言汇编语言汇编语言高级语言高级语言0或或1组成的代码组成的代码使用指令集编写程序的规则使用指令集编写程序的规则B8 64 0005 00 01一种符号语言一种符号语言用助记符表示操作码用助记符表示操作码MOV AX,100ADD AX,256接近于人类自然语言的语法接近于人类自然语言的语法习惯及数学表达形式习惯及数学表达形式1.2 数制表示 数制的基数与权数制的基

7、数与权基数:数制所使用的数码个数基数:数制所使用的数码个数例:十进制数使用例:十进制数使用09十个数,所以它的基数是十个数,所以它的基数是10权:数制每一权:数制每一位置位置所具有的值所具有的值例:例:6 8 4 5千千 百百 十十 个个103 102 101 100十进制数各位的权十进制数各位的权是以是以10为底的幂为底的幂二进制数使用二进制数使用0、1两个数,两个数,它的它的“基基”?各各位的位的“权权”又又是是多少呢?多少呢? 由由0、1二个数码构成,二个数码构成,基数基数为为2,第,第i位的位的权权为为2i,运算规则:逢二进一、借一作二运算规则:逢二进一、借一作二 二进制数(二进制数(

8、Binary )101011B=125+024+123+022+121+120=43D一个二进制数按权展开求和就转换成了对应的十进制数一个二进制数按权展开求和就转换成了对应的十进制数8 4 2 1牢记!牢记!1 0 1 1 B23 22 21 20例:一个二进制数例:一个二进制数各位的权各位的权基数说明符基数说明符 十六进制数(十六进制数(HexadecimalHexadecimal)14AFH=1163+4162+10161+15160=5295D 由由0、1、29、A、B、C、D、E、F十六个十六个数码构成。基数为数码构成。基数为16,第,第i位的权为位的权为16i运算运算 规则:逢十六进

9、一、借一作十六规则:逢十六进一、借一作十六十六进制数是汇编语言的书写工具十六进制数是汇编语言的书写工具 数制转换(数制转换(1)1. 非十进制数转换成十进制数非十进制数转换成十进制数按权展开求和按权展开求和2. 十进制数转换成非十进制数十进制数转换成非十进制数整数部分与整数部分与小数部分小数部分分别转换分别转换例例1:57D=111001B=39H57281222221407031110116 5716 3903除基数取余数除基数取余数高高低低2 数制转换(数制转换(2)例例2:十进制数转换成非十进制数(小数部分):十进制数转换成非十进制数(小数部分)0.625D=0.101B=0.AH0.6

10、25*2=1.251 0.25*2= 0.50 0.5*2= 110.625*16=10A乘基数取整数乘基数取整数57.625D=111001.101B=39.AH高高低低 数制转换(数制转换(3)3. 二、十六进制数之间的转换二、十六进制数之间的转换二进制数二进制数 十六进制数十六进制数 四位一组四位一组分组时如位数不够,分组时如位数不够,整数部分在最左边整数部分在最左边补零,小数部分在补零,小数部分在最右边补零最右边补零十六进制十六进制二进制二进制一位对应换成二进制数四位一位对应换成二进制数四位1100100.11011B= .010001101101 1000 =64. D8H46D8

11、编码编码 ASC码:码: 美国信息交换标准码,一般用美国信息交换标准码,一般用7bit 二进制编码二进制编码 来表示数字来表示数字 、英文字母、符号等、英文字母、符号等例:例:0 的的ASCII是是 30H 9 的的ASCII是是 39Ha 的的ASCII是是 61HA的的ASCII是是 41HASCII值小于值小于20H的是不可显示字符的是不可显示字符BCD码:码:1位十进制数用位十进制数用4位二进制编码表示位二进制编码表示有符号数的表示法有符号数的表示法机器数:机器数: 连同一个符号位在一起作为一个数叫机器数连同一个符号位在一起作为一个数叫机器数连符号一起数连符号一起数字化了的数字化了的数

12、 机器数机器数正数的符号位用正数的符号位用0表示,负数符号位用表示,负数符号位用1表示表示原码原码最高有效位为符号位最高有效位为符号位例:设机器字长为例:设机器字长为8位,二进制数位,二进制数+10010和和-100001 其原码为:其原码为:00010010,10100001真值真值反码:对于二进制正数,反码等于该数原码反码:对于二进制正数,反码等于该数原码 对于二进制负数,符号位为对于二进制负数,符号位为1,其余各位取反,其余各位取反例:设机器字长为例:设机器字长为8位,二进制数位,二进制数+1100101和和-1010001 其反码为:其反码为:01100101,10101110真值真值

13、有符号数的表示法有符号数的表示法补码:对于二进制正数,补码等于该数原码补码:对于二进制正数,补码等于该数原码 对于二进制负数,符号位为对于二进制负数,符号位为1,其余各位取反,末位加,其余各位取反,末位加1例:设机器字长为例:设机器字长为8位,二进制数位,二进制数+1100101和和-1010001 其补码为:其补码为:01100101,10101111有符号数的表示法有符号数的表示法1.3 Intel 80X86微处理器型号型号808680888028680386发布发布年份年份1978197919821986字长字长(位位)16163216晶体管数晶体管数(万个)(万个)2.92.913.

14、427.5 主频主频(MHz)4.774.7762012.533数据数据总线总线宽度宽度(位位)16161632外部外部总线总线宽度宽度(位位)地址地址总线总线宽度宽度(位位)寻址寻址空间空间高速高速缓存缓存1681632202024321M1M16M4G无无无无无无有有型号型号80486Pentium(586)发布发布年份年份1989199319951997字长字长(位位)32323232 晶体晶体 管数管数(万个万个)120160310330550750 主频主频(MHz)2510060166150200233333数据数据总线总线宽度宽度(位位)32646464外部外部总线总线宽度宽度(

15、位位)地址地址总线总线宽度宽度(位位)寻址寻址空间空间高速高速缓存缓存32646464323236364G4G64G64G8KB8KB数数据据8KB指令指令PentiumPro(P6)Pentium II8KB数数据据8KB指令指令256KB二级高二级高速缓存速缓存32KB512KB二级高速二级高速缓存,有独立封缓存,有独立封装和独立总线装和独立总线1.4 微型计算机(微型计算机(PCPC)系统)系统1981年,年,IBM公司,公司,8088CPU,IBM PC个人计算机个人计算机扩展型扩展型PC/XT,增强型,增强型IBM/AT(80286)各种各种32位位PC采用采用32位位Intel 8

16、0 x86CPU现在人们谈论的现在人们谈论的PC机是以机是以80 x86CPU构成的微型计算机系统构成的微型计算机系统复制复制ROM HMA(64KB)系统系统ROM128KB系统系统RAM640KB显示显示RAM128KB扩展扩展ROM128KBFFFFFFFF00100000000E0000000C0000000A000000000000常规主存常规主存扩展主存扩展主存32位位PC主存主存(4GB) PC/XT 主存主存(1MB)系统系统RAM640KB显示显示RAM128KB扩展扩展ROM128KB系统系统ROM128KB实方式主存实方式主存 UMA(384KB)上位主存上位主存区区高端

17、主高端主存区存区复制复制BIOS只能在保护方只能在保护方式使用式使用PCPC软件软件汇编语言的运行环境汇编语言的运行环境DOS操作系统操作系统Windows 的的MS-DOS环境环境汇编语言程序设计主要利用的一些软件:汇编语言程序设计主要利用的一些软件:编辑软件:编辑软件:EDIT;记事本;记事本;Turbo C编辑器等编辑器等汇编程序:汇编程序:MASM 5.X; MASM 6.X; Turbo ASM 等等连接程序:连接程序:LINK.EXE调试程序:调试程序:DEBUG、 Turbo Debugger等等1.5 8086微处理器地址总线地址总线20位位控制总线控制总线数据总线数据总线16

18、AHBHCHDHALBLCLDLSPBPSIDICSDSSSESIP内部暂存寄存器内部暂存寄存器暂存寄存器暂存寄存器FREU控制系统1 2 3 4 5 6总线控制逻辑总线控制逻辑数据总线数据总线16ALU通用寄存器通用寄存器8088指令队列指令队列8088/8086外部总线外部总线数据总线数据总线地址总线地址总线20位位执行部件执行部件EU总线接口部件总线接口部件BIU16位位控制总线EU控制系统ALUEU控制系统控制系统ALU数据总线数据总线16地址总线地址总线20位位控制总线AXBXCXDXSPBPAHALBHBLCHCLDHDLAXBXCXDX15 0通用寄存器通用寄存器累加器累加器基地

19、址寄存器基地址寄存器计数器计数器数据寄存器数据寄存器8086/8088堆栈指针堆栈指针基址指针基址指针源变址源变址目的变址目的变址DISI 专用寄存器专用寄存器IP指令指针寄存器指令指针寄存器标志寄存器标志寄存器用来存放代码段的偏移地址,用来存放代码段的偏移地址,总是指向下一条指令的首地址总是指向下一条指令的首地址FLAGS15 0OF DFIFTF SF ZFAFPFCF15 11 10 9 8 7 6 5 4 3 2 1 0进位标志进位标志奇偶标志奇偶标志半进位标志半进位标志零标志零标志符号标志符号标志中断标志中断标志单步标志单步标志溢出标志溢出标志方向标志方向标志 存储器组织与段寄存器存

20、储器组织与段寄存器1 0字节字节7 6 5 4 3 2 1 00003H0002H0001H0000H12H40H35H18H(0002H)=40H(0000H)=18H 字:字:2个字节组成一个字(个字节组成一个字(16位)位)0003H0002H0001H0000H字字字字12H40H35H18H注意:注意:机器内部访问存储器字单元机器内部访问存储器字单元时是以偶地址开始的,如果时是以偶地址开始的,如果以奇地址访问字单元,需要以奇地址访问字单元,需要访问两次存储器访问两次存储器12H15H14H13H双字:双字:4个字节组成双字(个字节组成双字(32位)位)双字双字地址为地址为0002H字

21、字单元的内容为:单元的内容为:(0002H)=1240H例:地址为例:地址为0002H的单元内容为的单元内容为 (0002H)=40H同一个地址既可看作字节单元的地址,又可看作同一个地址既可看作字节单元的地址,又可看作字单元、双字单元或字单元、双字单元或4字单元的地址字单元的地址8086CPU有有20条地址线条地址线 寻址能力寻址能力地址范围地址范围220=1M字节字节 指令指针寄存器指令指针寄存器IP16位位和地址有关的寄存和地址有关的寄存器器SP、BP、SI、DI16位位算术逻辑单元算术逻辑单元ALU16位位分段分段 每一段可以从每一段可以从1M空间的任空间的任一个能被一个能被16除尽的地

22、址开始。除尽的地址开始。段内地址是段内地址是16位的位的00000FFFFFH00003H00002H00001H00000H 物理地址的形成物理地址的形成四个专门存放段地址的寄存器四个专门存放段地址的寄存器 CS:代码段寄存器:代码段寄存器 DS:数据段寄存器:数据段寄存器 SS:堆栈段寄存器:堆栈段寄存器 ES:附加段寄存器:附加段寄存器每一个段寄存器可以确定每一个段寄存器可以确定一个段的起始地址一个段的起始地址16位段地址位段地址16位偏移地址位偏移地址15 015 020位物理地址位物理地址+19 00 0 0 0存放当前正在运行程序的段首地址存放当前正在运行程序的段首地址存放当前程序

23、所用数据的段首地址存放当前程序所用数据的段首地址存放堆栈区域的段首地址存放堆栈区域的段首地址辅助数据区域的段首地址辅助数据区域的段首地址物理地址物理地址=段地址段地址16+偏移地址偏移地址 地址加法器地址加法器19 0物理地址物理地址段寄存器段寄存器 偏移地址偏移地址15 015 00000段地址段地址例:例: (CS)=4232H,(,(IP)=66H, 物理地址的形成物理地址的形成00001H00000H42320H42386H(物理地址)(物理地址)偏移量偏移量66H下一条指令下一条指令CSIP1.6 1.6 80868086的寻址方式的寻址方式寻址方式:寻找操作数的方式寻址方式:寻找操

24、作数的方式指令系统:编制计算机程序的指令集合指令系统:编制计算机程序的指令集合指令指令操作码操作码操作数操作数程序:就是根据需要用指令编排出的操作顺序程序:就是根据需要用指令编排出的操作顺序机器指令机器指令 8B D9 8A 04 BF 00 20MOV BX,CXMOV AL,SIMOV DI,2000H汇编语言指令格式汇编语言指令格式标号:标号:指令助记符指令助记符操作数操作数;注释;注释, az、AZ、09或某些特殊符号(或某些特殊符号(,-,?),?) 第一个字符必须是字母或某些特殊符号(第一个字符必须是字母或某些特殊符号(,-,?),?) ?不能单独使用?不能单独使用 标识符有效长度

25、为标识符有效长度为31个字符个字符标识符标识符:例:例: MOV AL,80H1. 立即数寻址立即数寻址操作数就包含在指令当中操作数就包含在指令当中MOV AL,80H ;将;将80H送入送入ALMOV AX,1090H ;将;将1090H送入送入AXMOV EAX,12345678H源操作数源操作数目的操作数目的操作数例:例: 立即数可以是立即数可以是8位、位、16位位 、32位(位(386以后)以后)数值数值 立即数通常用来给寄存器赋值立即数通常用来给寄存器赋值 2. 2. 寄存器寻址寄存器寻址操作数在操作数在8位、位、16位(或位(或32位)寄存器中位)寄存器中INC CX ;将;将CX

26、的内容加的内容加1ROL AH,1 ;将;将AH中的内容循环左移一位中的内容循环左移一位MOV AX,BXMOV AX,1090H寄存器可以是寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP AH、AL、BH、BL、CH、CL、DH、DL 在一条指令中,可以对源操作数采用寄存器寻址,也可以对目在一条指令中,可以对源操作数采用寄存器寻址,也可以对目标操作数采用寄存器寻址,还可以两者都采用寄存器寻址方式标操作数采用寄存器寻址,还可以两者都采用寄存器寻址方式例:例:3. 3. 存储器寻址存储器寻址 操作数在存储器中,其有效地址(操作数在存储器中,其有效地址(EA)包含在指令中的寻址方式包含

27、在指令中的寻址方式注意:立即数寻址和直接寻址的书写格式,注意:立即数寻址和直接寻址的书写格式,直接寻址的地址要放在方括号中直接寻址的地址要放在方括号中ES:例:例:MOV AX,1070H ;DS段的段的1070H和和1071H 两单元的内容传送到两单元的内容传送到AX中中(1)直接寻址)直接寻址物物理理地地址址存储器存储器代代码码段段数数据据段段50000H51070HOP 70108967.00000H51071H假设假设DS=5000H,地址,地址为为51070H字存储单元字存储单元的内容是的内容是6789H。执行执行 MOV AX, 1070H6789AXAH ALDS1650000H

28、1070H+51070H内部地址加内部地址加法器完成法器完成有效地址(偏移地址)有效地址(偏移地址)例:例: MOV AX, VALUE 或或 MOV AX,VALUE符号地址符号地址MOV 1000H,AL例:例: 操作数在存储器中,操作数的有效地址是操作数在存储器中,操作数的有效地址是寄存器寄存器的内容。的内容。BX、BPSI、DI 之一之一注:如果没有特殊说明,用寄存器注:如果没有特殊说明,用寄存器BP寻址时,寻址时,段寄存器是段寄存器是SS,其余为数据段寄存器,其余为数据段寄存器DS 。 DS1650000H1234H+51234H内部地址加内部地址加法器完成法器完成例例1:假设(:假

29、设(DS)=5000H,(,(SI)=1234H, 51234H字单元的内容字单元的内容是是6789H 执行指令执行指令MOV AX,SI偏移地址,偏移地址,SI的内容的内容物理地址物理地址(AX)=6789H存储器存储器数数据据段段50000H51234H8967.00000H51235H例例2:假设(:假设(SS)=4000H,(,(BP)=1234H, (CX)=6789H执行该条指令执行该条指令MOV BP,CXSS1640000H1234H+41234H内部地址加内部地址加法器完成法器完成存储器存储器堆堆栈栈段段40000H41234H.00000H41235H偏移地址,偏移地址,B

30、P的内容的内容物理地址物理地址8967(CX)=6789H带位移量的寄存器间接寻址带位移量的寄存器间接寻址有效地址有效地址=BXBPSI DI+8位位移量位位移量16位位移量位位移量执行该指令后,(执行该指令后,(AX)=55AAH例:例: 假设(假设(DS)=5000H,(,(DI)=3678H 548ACH字字存储单元的内容是存储单元的内容是55AAH50000H 3678H 1234H548ACH+带位移量的寄存器间接寻带位移量的寄存器间接寻址址寄存器相对寻址寄存器相对寻址MOV AX,1234H DI 执行执行 MOV AX, DI+1234H 寄存器间接寻寄存器间接寻址的物理地址址的

31、物理地址单元是单元是548ACH(4 4) 基址变址寻址基址变址寻址 操作数的有效地址是一个基址寄存器的内容加上操作数的有效地址是一个基址寄存器的内容加上一个变址寄存器的内容一个变址寄存器的内容有效地址有效地址EA=+BXBPSIDI语句执行后(语句执行后(17000H)和()和(17001H)AX例:例: MOV AX,BX+SI假设假设(DS)=1000H,(,(BX)=5000H,(,(SI)=2000H则:有效地址为:(则:有效地址为:(BX)+(SI)= 7000H 物理地址为:物理地址为:10000H+7000H=17000HMOV AX, BX SI (5 5) 相对基址变址寻址

32、相对基址变址寻址有效地址有效地址EA=+带位移量的基址变址寻址带位移量的基址变址寻址+BXBPSIDI8位位移量位位移量16位位移量位位移量语句执行后(语句执行后(17002H)和()和(17003H)AX例:例: MOV AX,BX+SI+2假设假设(DS)=1000H,(,(BX)=5000H,(,(SI)=2000H则:有效地址为:(则:有效地址为:(BX)+(SI)+2 =7002H 物理地址为:物理地址为:10000H+7002H=17002HMOV AX,2BXSI综合练习综合练习假设:假设:BX=0158H,DI=10A5H,位移量,位移量=1B57H,DS=2100H 指令没有

33、使用前缀。指令没有使用前缀。 直接寻址:有效地址直接寻址:有效地址= 物理地址物理地址=1B57H21000H+1B57H=22B57H 寄存器间接寻址(寄存器为寄存器间接寻址(寄存器为BX):): 有效地址有效地址= 物理地址物理地址=0158H21000H+0158H=21158H BX寄存器相对间接寻址:寄存器相对间接寻址: 有效地址有效地址= 物理地址物理地址=0158H+1B57H=1CAFH21000H+1CAFH=22CAFH综合练习综合练习假设:假设:BX=0158H,DI=10A5H,位移量,位移量=1B57H, DS=2100H 指令没有使用前缀。指令没有使用前缀。 变址寻

34、址(寄存器为变址寻址(寄存器为DI) :10A5H21000H+10A5H=220A5H10A5H+1B57H=2BFCH21000H+2BFCH=23BFCH有效地址有效地址= 物理地址物理地址= DI寄存器相对变址寻址:寄存器相对变址寻址:有效地址有效地址= 物理地址物理地址=综合练习综合练习 基址变址寻址(基址变址寻址(BX为基址寄存器,为基址寄存器,DI为变址寄存器)为变址寄存器) 有效地址有效地址= 物理地址物理地址=0158H+10A5H=11FDH21000H+11FDH=221FDH 相对的基址变址寻址(相对的基址变址寻址(BX为基址寄存器,为基址寄存器,DI为变址寄存器)为变

35、址寄存器) 有效地址有效地址= 物理地址物理地址=0158H+10A5H+1B57H=2D54H21000H+2D54H=23D54H假设:假设:BX=0158H,DI=10A5H,位移量,位移量=1B57H, DS=2100H 指令没有使用前缀。指令没有使用前缀。寻址方式总结寻址方式总结操作数寻址操作数寻址立即数寻址立即数寻址寄存器寻址寄存器寻址存储器寻址存储器寻址直接寻址直接寻址寄存器间接寻址寄存器间接寻址寄存器相对寻址寄存器相对寻址基址变址寻址基址变址寻址相对基址变址寻址相对基址变址寻址数据段基址寻址数据段基址寻址堆栈段基址寻址堆栈段基址寻址变址寻址变址寻址作业:作业:1.11 1.15

36、 1.17 1.19 1.20 1.22 1.24第2章 8086的指令系统2.1 数据传送类指令2.2 算术运算类指令2.3 位操作类指令2.4 控制转移类指令2.5 串操作类指令2.6 处理机控制类指令2.1 2.1 数据传送类指令数据传送类指令指令系统指令系统数据传送指令数据传送指令算术指令算术指令逻辑指令逻辑指令串处理指令串处理指令控制转移指令控制转移指令处理机控制指令处理机控制指令通用数据传送指令通用数据传送指令堆栈操作指令堆栈操作指令标志传送指令标志传送指令地址传送指令地址传送指令输入输出指令输入输出指令8位或位或16位通用寄存器位通用寄存器AX、BX、CX、DXBP、SP、SI、

37、DI段寄存器段寄存器CS、 DS、ES、SS存储器存储器立即数立即数MOV指令数据传送方向示意图指令数据传送方向示意图CS不能做目不能做目的操作数的操作数1. 传送指令传送指令格式:格式: MOV DST,SRC目的目的源源功能:把一个字节或一个字从源操作数功能:把一个字节或一个字从源操作数SCR送至送至 目的操作数目的操作数DST,源操作数不改变。,源操作数不改变。注意:源和目的操作数的类型要一致,即同时为字节或同时为字注意:源和目的操作数的类型要一致,即同时为字节或同时为字段寄存器段寄存器CS、 DS、ES、SS立即数立即数存储器存储器8位获位获16位通用寄存器位通用寄存器AX、BX、CX

38、、DXBP、SP、SI、DIIPMOV指令不影指令不影响标志位响标志位2.1 .1 2.1 .1 通用数据传送指令通用数据传送指令例:例:MOV AX,1000HMOV AL,EMOV AX,2BPSI;立即数送到;立即数送到AX;立即数送到;立即数送到AL,E的的ASCII码码;存储单元的内容送到;存储单元的内容送到AX16(SS)+(BP)+(SI)+2如果如果BP换成换成BX?判断对错判断对错MOV 5,ALMOV BX,SIMOV DS,1000HMOV CS,AXMOV AX,DXMOV SI,SIMOV SI,AX判断对错判断对错MOV BX,ALMOV AX,DI+SIMOV D

39、S,ESMOV AL,AHMOV DS,AXMOV SI,DIMOV 2SI,AX2. 交换指令交换指令XCHG格式:格式:XCHG OPRD1,OPRD2功能:操作数功能:操作数OPRD1的内容与操作数的内容与操作数OPRD2的的 内容交换内容交换OPRD1OPRD1和和OPRD2OPRD2可以是通用寄存器和存储单元可以是通用寄存器和存储单元(两个操作数不能同时为存储单元)可以采用(两个操作数不能同时为存储单元)可以采用各种存储器寻址方式各种存储器寻址方式注意:不允许使用段寄存器、立即数注意:不允许使用段寄存器、立即数例:例:XCHG AL,AH XCHG SI,BX XCHG SI+3,A

40、L XCHG DX,DI+BX+3格式:格式:XLAT功能:完成一个字节的查表转换。功能:完成一个字节的查表转换。 把累加器把累加器AL中的值,转换成以中的值,转换成以BX 为表基址的表中值为表基址的表中值+BX AL3. 换码指令换码指令XLAT注意:表的长度不能超过注意:表的长度不能超过256个字节个字节BXBX+ALAL=XX换码指令的功能换码指令的功能TABLE.XX例:用查表法查求例:用查表法查求 3 的平方,假设数据表已的平方,假设数据表已经存放在经存放在2000H开始的内存中。开始的内存中。MOV BX,2000HMOV AL,3XLAT执行后执行后AL=2000H2009H51

41、H40H31H24H19H10H09H04H01H00H.MOV BX,2000HBXXLATBX+AL09H主程序主程序子程序子程序1子程序子程序2CS:IPCS:IP需要一个具有需要一个具有“后进先出后进先出”特性的存储特性的存储区域来保护断点区域来保护断点堆栈堆栈2.1 .2 2.1 .2 堆栈操作指令堆栈操作指令00000H50000H52000H堆栈段堆栈段SP假设:假设:SS=5000H,SP=2000H格式:格式: PUSH SRC功能:把源操作数功能:把源操作数SRC 的的16位数据压入位数据压入 堆栈堆栈例:例:AX=8A9BH执行执行 PUSH AX SP自动减自动减2 将

42、源操作数的内容传送到将源操作数的内容传送到 SP指向的单元指向的单元8A9B1. 1. 进栈指令进栈指令PUSH PUSH 00000H50000H52000H堆栈段堆栈段SP假设:假设:SS=5000H,SP=1FFEH2. 2. 出栈指令出栈指令POPPOP格式:格式: POP DST功能:从堆栈中弹出功能:从堆栈中弹出16位数据到目的操作数位数据到目的操作数DST , SP自动加自动加2例:例:执行执行 POP BX将将SP指向单元的内容传送到指向单元的内容传送到 目的操作数目的操作数SP自动加自动加28A9B9B8A执行后执行后 BX=H可以是通用寄存器、段寄存器可以是通用寄存器、段寄

43、存器(CS除外)和字存储单元除外)和字存储单元PUSH reg POP regPUSH mem POP memPUSH segreg POP segregPUSH data除除CS的所有的所有段寄存器段寄存器8086以后以后1. 标志寄存器传送标志寄存器传送(1) 标志送标志送AH指令指令LAHF格式:格式: LAHF功能:标志寄存器的低功能:标志寄存器的低8位对应的传送到寄存器位对应的传送到寄存器AHFLAG OFDF IF TFSFZF AF PF CFAH150702.1 .3 2.1 .3 标志传送指令标志传送指令格式:格式:SAHF功能:寄存器功能:寄存器AH的内容对应的送至标志寄存

44、的内容对应的送至标志寄存 器的低器的低8位位(2) AH送标志指令送标志指令SAHFFLAG OFDF IF TFSFZF AF PF CFxxxxxxxAHx70(3) 标志进栈指令标志进栈指令PUSHF格式:格式:PUSHF功能:功能: SP-2 ,把标志寄存器的内容(,把标志寄存器的内容(16位)压入堆栈位)压入堆栈(4) 标志出栈指令标志出栈指令POPF格式:格式: POPF功能:把当前栈顶的一个字传送到标志寄存器,功能:把当前栈顶的一个字传送到标志寄存器,SP+2指令格式指令格式功能功能说明说明CLCSTCCMCCLDSTDCLISTI清除进位标志清除进位标志置进位标志置进位标志取反

45、进位标志取反进位标志清除方向标志清除方向标志置方向标志置方向标志清除中断标志清除中断标志置中断标志置中断标志CF=0CF=1CF=CFDF=0DF=1IF=0IF=12. 标志位操作标志位操作1. 有效地址送指令有效地址送指令LEA格式:格式:LEA REG,SRC16位通用寄存器位通用寄存器功能:把源操作数的有效功能:把源操作数的有效地址地址传送到目的操传送到目的操 作数作数REG寄存器中寄存器中例:例:LEA AX,2728H ;将;将2728单元的有效地址送单元的有效地址送AX, 执行后,执行后,AX=2728H LEA BX,BP+SI ;指令执行后,;指令执行后,BX的内容为的内容为

46、 BP+SI的值的值注意:注意:LEA 和和 MOV 的区别的区别2.1 .4 2.1 .4 地址传送指令地址传送指令格式:格式: LDS REG,SRC功能:源操作数功能:源操作数 SRC所指向的存储单元的内容所指向的存储单元的内容 送到目的寄存器送到目的寄存器REG中接下来存储单元中接下来存储单元 的内容送到的内容送到数据段寄存器数据段寄存器DS。2.2. 指针送指令指针送指令LDS、LES例:例:LDS DI ,2130H2130H2133H 56347812 执行后执行后 DS= DI=LES对应的段寄存为对应的段寄存为ES存储器存储器78563412HH 输入指令输入指令ININ格式

47、:格式:IN 累加器,端口地址累加器,端口地址功能:从一个端口读取一个字节或一个字,传功能:从一个端口读取一个字节或一个字,传 送到送到AL或或AX端口地址可以直接给出端口地址可以直接给出或由或由DX寄存器间接给出寄存器间接给出注意:外部设备最多可有注意:外部设备最多可有65536个个I/O端口端口(0000FFFFH),), 只有前只有前256个端口地址可个端口地址可在指令中直接给出(在指令中直接给出(00FFH)2.1 .5 2.1 .5 输入输出指令输入输出指令例:例: IN AL,50H ;从;从50H端口读入端口读入8位数据到位数据到ALIN AX,70H ;从;从70H端口读入端口

48、读入16位数据到位数据到AX直接寻址或长格式直接寻址或长格式间接寻址或短格式间接寻址或短格式IN AL,DX ;从;从DX所指的端口中读取一个字节所指的端口中读取一个字节IN AX,DX ;从;从DX所指的端口读取一个字所指的端口读取一个字2.2. 输出指令输出指令OUTOUT格式:格式: OUT 端口地址,累加器端口地址,累加器功能:将功能:将AL中的一个字节或中的一个字节或AX中的一个字输出中的一个字输出 到指定端口到指定端口例:例: OUT 5,AL ;将;将AL寄存器的内容输出到端口寄存器的内容输出到端口5 OUT DX,AL ;将;将AL的内容输出到的内容输出到DX所指向的端口所指向

49、的端口OUT DX,AX ;将;将AX的内容输出到的内容输出到DX所指向的端口所指向的端口判断对错:判断对错:OUT 258,ALOUT DX,BLIN AL,1234HIN AL,BHOUT 120,ALOUT DX,ALIN AL,80HIN AL,DX 判断对错:判断对错:PUSH ALPOP CSXCHG DS,BXXCHG BX,SIPOP BHXCHG AX,1234H2.2 算数运算类指令1. 加法指令加法指令ADD格式:格式: ADD DST,SRC功能:两个操作数相加,结果送至目的操作数功能:两个操作数相加,结果送至目的操作数 DST,源操作数不变源操作数不变操作数可以是字节

50、、字操作数可以是字节、字例:例:ADD AL,50H ;AL的内容和的内容和50H相加,结果相加,结果AL中中;CX的内容和的内容和1000H相加,结果放相加,结果放 在在CX中中ADD CX,1000H;DI和和SI的内容相加,结果放在的内容相加,结果放在DI中中ADD DI,SI;BX+DI 连续两个存储单元的内容连续两个存储单元的内容 和和AX内容相加,结果放在内容相加,结果放在BX+DI 和和BX+DI+1所指的存储单元中所指的存储单元中ADD BX+DI,AX ADD AX,BX+2000H;BX+2000H所指的两个单元的所指的两个单元的内内 容和容和AX的内容相加,结果在的内容相

51、加,结果在AX 中中 加法指令对标志位的影响加法指令对标志位的影响 ZF 零标志零标志 结果为零结果为零ZF=1,否则,否则ZF=0 SF 符号标志符号标志 结果为负结果为负SF=1,否则,否则SF=0 CF 进位标志进位标志 结果最高有效位有进位结果最高有效位有进位 CF=1,否则,否则CF=0 AF 半进位标志半进位标志 低低4位向高位向高4位有进位位有进位AF=1,否则否则AF=0 PF 奇偶标志奇偶标志 低低8位位1的个数为偶数的个数为偶数PF=1,否,否则则PF=0对对OF SF ZF AF PF CF 六个标志产生影响六个标志产生影响 1 0 0 1 1 1 0 0+ 1 0 0

52、0 1 0 1 0 0 0 1 0 0 1 1 0CF=SF=AF=例:例:9CH+8AH=26H101ZF=0PF=0 溢出标志溢出标志OF溢出:超出数据位能表示的范围溢出:超出数据位能表示的范围8位二进制数位二进制数 0255(0 28) -128+127(-27+27-1)16位二进制数位二进制数 065535( 0 216) -32768+32767(-215215-1) 若两个操作数的符号相同,而结果的若两个操作数的符号相同,而结果的符号与之相反时,符号与之相反时,OF=1,否则,否则OF=0OF标志是根据操作数的符标志是根据操作数的符号变化来设置的号变化来设置的例:例: 1 0 0

53、 1 1 1 0 0 + 1 0 0 0 0 1 1 0 如果两个同符号数相加,结果符号位发生了如果两个同符号数相加,结果符号位发生了变化,则表示溢出变化,则表示溢出0 0 1 0 0 0 1 0OF=1符号位变化了,表示结符号位变化了,表示结果超出了果超出了8位二进制数表位二进制数表示的数据范围示的数据范围 0 0 0 0 1 0 0 1+ 0 1 1 1 1 1 0 01 0 0 0 0 1 0 1OF=1符号位变符号位变化了化了例例2: 0 0 0 0 1 0 0 1- 1 1 1 1 1 1 0 0例例3:0 0 0 0 1 1 0 1符号位没符号位没变变OF=0 1 0 0 0 1

54、0 0 1- 1 1 1 1 1 1 0 0OF=?2. 2. 带进位加法指令带进位加法指令ADCADC格式:格式: ADC DST,SRC功能:两个操作数相加再加上进位标志功能:两个操作数相加再加上进位标志CF,结果,结果 送至目的操作数送至目的操作数DST,源操作数不变源操作数不变操作数可以是字节、字操作数可以是字节、字AX=MOV SI,2000H MOV AX,SI MOV DI,3000H ADD AX,DI MOV SI ,AX MOV AX, SI+2 ADC AX, DI+2 MOV SI+2 ,AX 例:编写两个四字节的无符号数相加的程序段,两个数分别例:编写两个四字节的无符

55、号数相加的程序段,两个数分别 放在放在2000H、3000H开始的单元,要求结果放在开始的单元,要求结果放在2000H开始的单元开始的单元 563412F0DEBC9A782000H3000HSIMOV AX,SIHDIADD AX,DIMOV DI,3000HMOV SI,2000H56783568HCF=1AX=MOV SI,2000H MOV AX,SI MOV DI,3000H ADD AX,DI MOV SI ,AX MOV AX, SI+2 ADC AX, DI+2 MOV SI+2 ,AX 例:编写两个四字节的无符号数相加的程序段,两个数分别例:编写两个四字节的无符号数相加的程序

56、段,两个数分别 放在放在2000H、3000H开始的单元,要求结果放在开始的单元,要求结果放在2000H开始的单元开始的单元 563412F0DEBC9A782000H3000HSIMOV AX,SIDIADD AX,DIMOV DI,3000HMOV SI,2000HMOV SI ,AX56783568HCF=13568AX=MOV SI,2000H MOV AX,SI MOV DI,3000H ADD AX,DI MOV SI ,AX MOV AX, SI+2 ADC AX, DI+2 MOV SI+2 ,AX 例:编写两个四字节的无符号数相加的程序段,两个数分别例:编写两个四字节的无符号

57、数相加的程序段,两个数分别 放在放在2000H、3000H开始的单元,要求结果放在开始的单元,要求结果放在2000H开始的单元开始的单元 563412F0DEBC9A782000H3000HSIMOV AX,SI1234HDIADD AX,DIMOV DI,3000HMOV SI,2000HMOV SI ,AXMOV AX, SI+2 3568ADC AX, DI+2 CF=1ACF1H7856AX=MOV SI,2000H MOV AX,SI MOV DI,3000H ADD AX,DI MOV SI ,AX MOV AX, SI+2 ADC AX, DI+2 MOV SI+2 ,AX 例:

58、编写两个四字节的无符号数相加的程序段,两个数分别例:编写两个四字节的无符号数相加的程序段,两个数分别 放在放在2000H、3000H开始的单元,要求结果放在开始的单元,要求结果放在2000H开始的单元开始的单元 563412F0DEBC9A782000H3000HSIMOV AX,SI1234HDIADD AX,DIMOV DI,3000HMOV SI,2000HMOV SI ,AXMOV AX, SI+2 ADC AX, DI+2 CF=1ACF1HMOV SI+2 ,AXF1ACCF=03. 增量指令增量指令 INC格式:格式: INC OPR功能:操作数功能:操作数OPR的内容加的内容加

59、1,结果送回,结果送回OPR这条指令执行的结果不影响进位标志这条指令执行的结果不影响进位标志CF,但影响其它的五个状态标志但影响其它的五个状态标志例:例: INC AL ;AL的内容加的内容加1 INC CX ;CX的内容加的内容加1 操作数可以是字节、字操作数可以是字节、字1. 减法指令减法指令SUB格式:格式: SUB DST,SRC功能:功能: DST的内容减去的内容减去SRC的内容,结果送到目的内容,结果送到目 的操作数的操作数DST中,源操作数不变。中,源操作数不变。2. 带借位减法指令带借位减法指令SBB 格式:格式: SBB DST,SRC功能:操作数功能:操作数DST的内容减去

60、操作数的内容减去操作数SRC的内容,的内容, 同时还要减去借位(进位)标志同时还要减去借位(进位)标志CF的值,的值, 结果送目的操作数,源操作数不变。结果送目的操作数,源操作数不变。执行结果和加法指执行结果和加法指令一样影响标志位令一样影响标志位3. 减量减量 指令指令DEC格式:格式:DEC OPR功能:操作数功能:操作数OPR的内容减的内容减1,并把结果送回,并把结果送回OPR执行结果不影响执行结果不影响CF,但影响其它五个状态标志,但影响其它五个状态标志4. 求补指令求补指令NEG格式:格式:NEG OPR功能:对操作数取补码,将结果送回操作数功能:对操作数取补码,将结果送回操作数OP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论