收藏 分销(赏)

汇编语言程序设计32教室版.pptx

上传人:a199****6536 文档编号:4289428 上传时间:2024-09-03 格式:PPTX 页数:229 大小:1.37MB
下载 相关 举报
汇编语言程序设计32教室版.pptx_第1页
第1页 / 共229页
汇编语言程序设计32教室版.pptx_第2页
第2页 / 共229页
点击查看更多>>
资源描述
苏州科技学院电子学院赵梅制作苏州科技学院电子学院赵梅制作汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计主讲:赵主讲:赵 梅梅课程简介课程简介引用引用概述概述 汇编语言是计算机提供给用户的最汇编语言是计算机提供给用户的最快最有效的语言,也是利用计算机所有快最有效的语言,也是利用计算机所有硬件特性并能直接控制硬件的唯一语言。硬件特性并能直接控制硬件的唯一语言。因而在对于程序的空间和时间要求很高的场合,因而在对于程序的空间和时间要求很高的场合,汇编语言是必不可少的。汇编语言是必不可少的。很多需要直接控制硬件的应用场合,很多需要直接控制硬件的应用场合,更是非用汇编语言不可。更是非用汇编语言不可。特点特点汇编语言汇编语言是介于计算机能直接理解的是介于计算机能直接理解的机器语言与机器语言与使用使用者容易理解的者容易理解的高级语言之间高级语言之间的一种语言。它除有与代的一种语言。它除有与代码指令一一对应的码指令一一对应的符号指令符号指令外,还增加了专用于定义外,还增加了专用于定义变量、常量、符号、过程、分配存贮空间、定位程序变量、常量、符号、过程、分配存贮空间、定位程序起始地址等一系列称之为起始地址等一系列称之为伪指令伪指令的符号指令。的符号指令。同高级语言比较同高级语言比较,它更接近机器语言,更能全面地,它更接近机器语言,更能全面地反映计算机硬件的功能特点。反映计算机硬件的功能特点。同机器语言比较同机器语言比较,它,它易于阅读,编写和修改程序。因此,易于阅读,编写和修改程序。因此,使用汇编语言使用汇编语言可编写出运行速度快、占存储空间少、能充分利用可编写出运行速度快、占存储空间少、能充分利用硬件资源、发挥计算机效能并能进行精确控制的程硬件资源、发挥计算机效能并能进行精确控制的程序。序。应用应用高级语言编译程序的编高级语言编译程序的编制;编辑、调试,链接制;编辑、调试,链接装配、磁盘驱动和磁盘装配、磁盘驱动和磁盘读写等实用程序的编制;读写等实用程序的编制;控制、指挥和监测等实控制、指挥和监测等实时处理程序的编制;计时处理程序的编制;计算机系统的开发。算机系统的开发。汇编语言是面向机器的汇编语言是面向机器的语言,故它将因计算机语言,故它将因计算机机型的不同而异。但用机型的不同而异。但用汇编语言进行程序设计汇编语言进行程序设计的基本概念、基本技巧的基本概念、基本技巧和基本方法是普遍适用和基本方法是普遍适用的。我们选择目前国内的。我们选择目前国内最广泛使用的最广泛使用的 IBM PC 作作为基础讲授。其它机型为基础讲授。其它机型同学们定可触类旁通。同学们定可触类旁通。学习学习汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计第第1章章 汇编语言基础知识汇编语言基础知识第第2章章 8086的指令系统的指令系统第第3章章 汇编语言程序格式汇编语言程序格式第第4章章 基本汇编语言程序设计基本汇编语言程序设计第第第第1 1 1 1章章章章 汇编语言基础知识汇编语言基础知识汇编语言基础知识汇编语言基础知识1.1 计算机系统概述计算机系统概述1.2 数据表示数据表示1.3 Intel80 x86系列微处理器系列微处理器1.4 微型计算机系统微型计算机系统1.5 8086微处理器微处理器1.6 8086的寻址方式的寻址方式1.1 1.1 计算机系统概述计算机系统概述计算机系统计算机系统计算机硬件计算机硬件计算机软件计算机软件中央处理器中央处理器存储器存储器外部设备外部设备运算器运算器控制器控制器寄存器寄存器系统软件系统软件应用软件应用软件主存储器主存储器辅助存储器辅助存储器输入设备输入设备输出设备输出设备中央处理器中央处理器CPU总线控制逻辑存储器存储器接口接口接口接口大容量大容量存储器存储器I/O设备设备系系统统总总线线I/O子子系系统统计算机结构计算机结构磁盘、磁磁盘、磁带、光盘带、光盘外外存存数据总线、地址总数据总线、地址总线、控制总线线、控制总线系系统统总总线线1.1 1.1 计算机系统概述计算机系统概述计算机程序设计语言计算机程序设计语言机器语言机器语言汇编语言汇编语言高级语言高级语言0或或1组成的代码组成的代码使用指令集编写程序的规则使用指令集编写程序的规则B8 64 0005 00 01一种符号语言一种符号语言用助记符表示操作码用助记符表示操作码MOV AX,100ADD AX,256接近于人类自然语言的语法接近于人类自然语言的语法习惯及数学表达形式习惯及数学表达形式1.2 1.2 数制表示数制表示 数制的基数与权数制的基数与权基数:数制所使用的数码个数基数:数制所使用的数码个数例:十进制数使用例:十进制数使用09十个数,所以它的基数是十个数,所以它的基数是10权:数制每一权:数制每一位置位置所具有的值所具有的值例:例:6 8 4 5千千 百百 十十 个个103 102 101 100十进制数各位的权十进制数各位的权是以是以10为底的幂为底的幂二进制数使用二进制数使用0、1两个数,两个数,它的它的“基基”?各各位的位的“权权”又又是是多少呢?多少呢?由由0、1二个数码构成,二个数码构成,基数基数为为2,第,第i位的位的权权为为2i,运算规则:逢二进一、借一作二运算规则:逢二进一、借一作二 二进制数(二进制数(二进制数(二进制数(Binary Binary)101011B=125+024+123+022+121+120=43D一个二进制数按权展开求和就转换成了对应的十进制数一个二进制数按权展开求和就转换成了对应的十进制数8 4 2 1牢记!牢记!1 0 1 1 B23 22 21 20例:一个二进制数例:一个二进制数各位的权各位的权基数说明符基数说明符 十六进制数(十六进制数(十六进制数(十六进制数(HexadecimalHexadecimalHexadecimalHexadecimal)14AFH=1163+4162+10161+15160=5295D 由由0、1、29、A、B、C、D、E、F十六个十六个数码构成。基数为数码构成。基数为16,第,第i位的权为位的权为16i运算运算 规则:逢十六进一、借一作十六规则:逢十六进一、借一作十六十六进制数是汇编语言的书写工具十六进制数是汇编语言的书写工具 数制转换(数制转换(数制转换(数制转换(1 1)1.非十进制数转换成十进制数非十进制数转换成十进制数按权展开求和按权展开求和2.十进制数转换成非十进制数十进制数转换成非十进制数整数部分与整数部分与小数部分小数部分分别转换分别转换例例1:57D=111001B=39H57281222221407031110116 5716 3903除基数取余数除基数取余数高高低低2 数制转换(数制转换(数制转换(数制转换(2 2)例例2:十进制数转换成非十进制数(小数部分):十进制数转换成非十进制数(小数部分)0.625D=0.101B=0.AH0.625*2=1.251 0.25*2=0.50 0.5*2=110.625*16=10A乘基数取整数乘基数取整数57.625D=111001.101B=39.AH高高低低 数制转换(数制转换(数制转换(数制转换(3 3)3.二、十六进制数之间的转换二、十六进制数之间的转换二进制数二进制数 十六进制数十六进制数 四位一组四位一组分组时如位数不够,分组时如位数不够,整数部分在最左边整数部分在最左边补零,小数部分在补零,小数部分在最右边补零最右边补零十六进制十六进制二进制二进制一位对应换成二进制数四位一位对应换成二进制数四位1100100.11011B=.010001101101 1000=64.D8H46D8 编码编码编码编码 ASC码:码:美国信息交换标准码,一般用美国信息交换标准码,一般用7bit 二进制编码二进制编码 来表示数字来表示数字、英文字母、符号等、英文字母、符号等例:例:0 的的ASCII是是 30H 9 的的ASCII是是 39Ha 的的ASCII是是 61HA的的ASCII是是 41HASCII值小于值小于20H的是不可显示字符的是不可显示字符BCD码:码:1位十进制数用位十进制数用4位二进制编码表示位二进制编码表示 有符号数的表示法有符号数的表示法有符号数的表示法有符号数的表示法机器数:机器数:连同一个符号位在一起作为一个数叫机器数连同一个符号位在一起作为一个数叫机器数连符号一起数连符号一起数字化了的数字化了的数 机器数机器数正数的符号位用正数的符号位用0表示,负数符号位用表示,负数符号位用1表示表示原码原码最高有效位为符号位最高有效位为符号位例:设机器字长为例:设机器字长为8位,二进制数位,二进制数+10010和和-100001 其原码为:其原码为:00010010,10100001真值真值反码:对于二进制正数,反码等于该数原码反码:对于二进制正数,反码等于该数原码 对于二进制负数,符号位为对于二进制负数,符号位为1,其余各位取反,其余各位取反例:设机器字长为例:设机器字长为8位,二进制数位,二进制数+1100101和和-1010001 其反码为:其反码为:01100101,10101110真值真值 有符号数的表示法有符号数的表示法有符号数的表示法有符号数的表示法补码:对于二进制正数,补码等于该数原码补码:对于二进制正数,补码等于该数原码 对于二进制负数,符号位为对于二进制负数,符号位为1,其余各位取反,末位加,其余各位取反,末位加1例:设机器字长为例:设机器字长为8位,二进制数位,二进制数+1100101和和-1010001 其补码为:其补码为:01100101,10101111 有符号数的表示法有符号数的表示法有符号数的表示法有符号数的表示法1.3 Intel 80X861.3 Intel 80X86微处理器微处理器型号型号808680888028680386发布发布年份年份1978197919821986字长字长(位位)16163216晶体管数晶体管数(万个)(万个)2.92.913.427.5 主频主频(MHz)4.774.7762012.533数据数据总线总线宽度宽度(位位)16161632外部外部总线总线宽度宽度(位位)地址地址总线总线宽度宽度(位位)寻址寻址空间空间高速高速缓存缓存1681632202024321M1M16M4G无无无无无无有有型号型号80486Pentium(586)发布发布年份年份1989199319951997字长字长(位位)32323232 晶体晶体 管数管数(万个万个)120160310330550750 主频主频(MHz)2510060166150200233333数据数据总线总线宽度宽度(位位)32646464外部外部总线总线宽度宽度(位位)地址地址总线总线宽度宽度(位位)寻址寻址空间空间高速高速缓存缓存32646464323236364G4G64G64G8KB8KB数数据据8KB指令指令PentiumPro(P6)Pentium II8KB数数据据8KB指令指令256KB二级高二级高速缓存速缓存32KB512KB二级高速二级高速缓存,有独立封缓存,有独立封装和独立总线装和独立总线1.4 1.4 微型计算机(微型计算机(微型计算机(微型计算机(PCPCPCPC)系统)系统)系统)系统1981年,年,IBM公司,公司,8088CPU,IBM PC个人计算机个人计算机扩展型扩展型PC/XT,增强型,增强型IBM/AT(80286)各种各种32位位PC采用采用32位位Intel 80 x86CPU现在人们谈论的现在人们谈论的PC机是以机是以80 x86CPU构成的微型计算机系统构成的微型计算机系统主主存存空空间间的的分分配配复制复制ROM HMA(64KB)系统系统ROM128KB系统系统RAM640KB显示显示RAM128KB扩展扩展ROM128KBFFFFFFFF00100000000E0000000C0000000A000000000000常常规规主主存存扩扩展展主主存存32位位PC主存主存(4GB)PC/XT 主存主存(1MB)系统系统RAM640KB显示显示RAM128KB扩展扩展ROM128KB系统系统ROM128KB实方式主存实方式主存 UMA(384KB)上位主存上位主存区区高端主高端主存区存区复制复制BIOS只能在保护方只能在保护方式使用式使用PCPCPCPC软件软件软件软件汇编语言的运行环境汇编语言的运行环境DOS操作系统操作系统Windows 的的MS-DOS环境环境汇编语言程序设计主要利用的一些软件:汇编语言程序设计主要利用的一些软件:编辑软件:编辑软件:EDIT;记事本;记事本;Turbo C编辑器等编辑器等汇编程序:汇编程序:MASM 5.X;MASM 6.X;Turbo ASM 等等连接程序:连接程序:LINK.EXE调试程序:调试程序:DEBUG、Turbo Debugger等等1.5 80861.5 8086微处理器微处理器地址总线地址总线20位位控控制制总总线线数据总线数据总线16AHBHCHDHALBLCLDLSPBPSIDICSDSSSESIP内部暂存寄存器内部暂存寄存器暂存寄存器暂存寄存器FREU控制系统1 2 3 4 5 6总总线线控控制制逻逻辑辑数据总线数据总线16ALU通通用用寄寄存存器器8088指令队列指令队列8088/8086外部总线外部总线数据总线数据总线地址总线地址总线20位位执执行行部部件件EU总总线线接接口口部部件件BIU16位位控制总线EU控制系统ALUEU控控制制系系统统ALU数据总线数据总线16地址总线地址总线20位位控制总线AXBXCXDXSPBP 8086的寄存器的寄存器AHALBHBLCHCLDHDLAXBXCXDX15 0通通用用寄寄存存器器累加器累加器基地址寄存器基地址寄存器计数器计数器数据寄存器数据寄存器8086/8088堆栈指针堆栈指针基址指针基址指针源变址源变址目的变址目的变址DISI 通用寄存器通用寄存器通用寄存器通用寄存器 专用寄存器专用寄存器IP指令指针寄存器指令指针寄存器标志寄存器标志寄存器用来存放代码段的偏移地址,用来存放代码段的偏移地址,总是指向下一条指令的首地址总是指向下一条指令的首地址FLAGS15 0OF DFIFTF SF ZFAFPFCF15 11 10 9 8 7 6 5 4 3 2 1 0进进位位标标志志奇奇偶偶标标志志半半进进位位标标志志零零标标志志符符号号标标志志中中断断标标志志单单步步标标志志溢溢出出标标志志方方向向标标志志 存储器组织与段寄存器存储器组织与段寄存器存储器组织与段寄存器存储器组织与段寄存器1 0字节字节7 6 5 4 3 2 1 00003H0002H0001H0000H12H40H35H18H(0002H)=40H(0000H)=18H 字:字:2个字节组成一个字(个字节组成一个字(16位)位)0003H0002H0001H0000H字字字字12H40H35H18H注意:注意:机器内部访问存储器字单元机器内部访问存储器字单元时是以偶地址开始的,如果时是以偶地址开始的,如果以奇地址访问字单元,需要以奇地址访问字单元,需要访问两次存储器访问两次存储器12H15H14H13H双字:双字:4个字节组成双字(个字节组成双字(32位)位)双字双字地址为地址为0002H字字单元的内容为:单元的内容为:(0002H)=1240H例:地址为例:地址为0002H的单元内容为的单元内容为 (0002H)=40H同一个地址既可看作字节单元的地址,又可看作同一个地址既可看作字节单元的地址,又可看作字单元、双字单元或字单元、双字单元或4字单元的地址字单元的地址存储器的分段管理存储器的分段管理8086CPU有有20条地址线条地址线 寻址能力寻址能力地址范围地址范围220=1M字节字节 指令指针寄存器指令指针寄存器IP16位位和地址有关的寄存和地址有关的寄存器器SP、BP、SI、DI16位位算术逻辑单元算术逻辑单元ALU16位位分段分段 每一段可以从每一段可以从1M空间的任空间的任一个能被一个能被16除尽的地址开始。除尽的地址开始。段内地址是段内地址是16位的位的00000FFFFFH00003H00002H00001H00000H 物理地址的形成物理地址的形成四个专门存放段地址的寄存器四个专门存放段地址的寄存器 CS:代码段寄存器:代码段寄存器 DS:数据段寄存器:数据段寄存器 SS:堆栈段寄存器:堆栈段寄存器 ES:附加段寄存器:附加段寄存器每一个段寄存器可以确定每一个段寄存器可以确定一个段的起始地址一个段的起始地址16位段地址位段地址16位偏移地址位偏移地址15 015 020位物理地址位物理地址+19 00 0 0 0存放当前正在运行程序的段首地址存放当前正在运行程序的段首地址存放当前程序所用数据的段首地址存放当前程序所用数据的段首地址存放堆栈区域的段首地址存放堆栈区域的段首地址辅助数据区域的段首地址辅助数据区域的段首地址物理地址物理地址=段地址段地址16+偏移地址偏移地址 地址加法器地址加法器19 0物理地址物理地址加法器加法器段寄存器段寄存器 偏移地址偏移地址15 015 00000段地址段地址加法器加法器例:例:(CS)=4232H,(,(IP)=66H,物理地址的形成物理地址的形成00001H00000H42320H42386H(物理地址)(物理地址)偏移量偏移量66H下一条指令下一条指令CSIP1.6 1.6 1.6 1.6 8086808680868086的寻址方式的寻址方式的寻址方式的寻址方式寻址方式:寻找操作数的方式寻址方式:寻找操作数的方式指令系统:编制计算机程序的指令集合指令系统:编制计算机程序的指令集合指令指令操作码操作码操作数操作数程序:就是根据需要用指令编排出的操作顺序程序:就是根据需要用指令编排出的操作顺序机器指令机器指令 8B D9 8A 04 BF 00 20MOV BX,CXMOV AL,SIMOV DI,2000H汇编语言指令格式汇编语言指令格式汇编语言指令格式汇编语言指令格式标号:标号:指令助记符指令助记符操作数操作数;注释;注释,az、AZ、09或某些特殊符号(或某些特殊符号(,-,?),?)第一个字符必须是字母或某些特殊符号(第一个字符必须是字母或某些特殊符号(,-,?),?)?不能单独使用?不能单独使用标识符有效长度为标识符有效长度为31个字符个字符标识符标识符:例:例:MOV AL,80H1.立即数寻址立即数寻址 操作数就包含在指令当中操作数就包含在指令当中MOV AL,80H ;将;将80H送入送入ALMOV AX,1090H ;将;将1090H送入送入AXMOV EAX,12345678H源操作数源操作数目的操作数目的操作数例:例:立即数可以是立即数可以是8位、位、16位位、32位(位(386以后)以后)数值数值 立即数通常用来给寄存器赋值立即数通常用来给寄存器赋值 2.2.2.2.寄存器寻址寄存器寻址寄存器寻址寄存器寻址操作数在操作数在8位、位、16位(或位(或32位)寄存器中位)寄存器中INC CX ;将;将CX的内容加的内容加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.3.3.存储器寻址存储器寻址存储器寻址存储器寻址 操作数在存储器中,其有效地址(操作数在存储器中,其有效地址(EA)包)包含在指令中的寻址方式含在指令中的寻址方式注意:立即数寻址和直接寻址的书写格式,注意:立即数寻址和直接寻址的书写格式,直接寻址的地址要放在方括号中直接寻址的地址要放在方括号中ES:例:例:MOV AX,1070H ;DS段的段的1070H和和1071H 两单元的内容传送到两单元的内容传送到AX中中(1)直接寻址)直接寻址物物理理地地址址存储器存储器代代码码段段数数据据段段50000H51070HOP 70108967.00000H51071H假设假设DS=5000H,地址,地址为为51070H字存储单元字存储单元的内容是的内容是6789H。执行执行 MOV AX,1070H6789AXAH ALDS1650000H1070H+51070H内部地址加内部地址加法器完成法器完成有效地址(偏移地址)有效地址(偏移地址)例:例:MOV AX,VALUE 或或 MOV AX,VALUE符号地址符号地址MOV 1000H,AL例:例:(2 2 2 2)寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址 操作数在存储器中,操作数的有效地址是操作数在存储器中,操作数的有效地址是寄存器寄存器的内容。的内容。BX、BPSI、DI 之一之一注:如果没有特殊说明,用寄存器注:如果没有特殊说明,用寄存器BP寻址时,寻址时,段寄存器是段寄存器是SS,其余为数据段寄存器,其余为数据段寄存器DS。DS1650000H1234H+51234H内部地址加内部地址加法器完成法器完成例例1:假设(:假设(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偏移地址,偏移地址,BP的内容的内容物理地址物理地址8967(CX)=6789H(3 3 3 3)寄存器相对寻址寄存器相对寻址寄存器相对寻址寄存器相对寻址带位移量的寄存器间接寻址带位移量的寄存器间接寻址有效地址有效地址=BXBPSI DI+8位位移量位位移量16位位移量位位移量执行该指令后,(执行该指令后,(AX)=55AAH例:例:假设(假设(DS)=5000H,(,(DI)=3678H 548ACH字字存储单元的内容是存储单元的内容是55AAH50000H 3678H 1234H548ACH+带位移量的寄存器间接寻带位移量的寄存器间接寻址址寄存器相对寻址寄存器相对寻址MOV AX,1234H DI 执行执行 MOV AX,DI+1234H 寄存器间接寻寄存器间接寻址的物理地址址的物理地址单元是单元是548ACH(4 4 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 5 5)相对基址变址寻址相对基址变址寻址相对基址变址寻址相对基址变址寻址有效地址有效地址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 指令没有使用前缀。指令没有使用前缀。直接寻址:有效地址直接寻址:有效地址=物理地址物理地址=1B57H21000H+1B57H=22B57H 寄存器间接寻址(寄存器为寄存器间接寻址(寄存器为BX):):有效地址有效地址=物理地址物理地址=0158H21000H+0158H=21158H BX寄存器相对间接寻址:寄存器相对间接寻址:有效地址有效地址=物理地址物理地址=0158H+1B57H=1CAFH21000H+1CAFH=22CAFH 综合练习综合练习综合练习综合练习假设:假设:BX=0158H,DI=10A5H,位移量,位移量=1B57H,DS=2100H 指令没有使用前缀。指令没有使用前缀。变址寻址(寄存器为变址寻址(寄存器为DI):10A5H21000H+10A5H=220A5H10A5H+1B57H=2BFCH21000H+2BFCH=23BFCH有效地址有效地址=物理地址物理地址=DI寄存器相对变址寻址:寄存器相对变址寻址:有效地址有效地址=物理地址物理地址=综合练习综合练习综合练习综合练习 基址变址寻址(基址变址寻址(BX为基址寄存器,为基址寄存器,DI为变址寄存器)为变址寄存器)有效地址有效地址=物理地址物理地址=0158H+10A5H=11FDH21000H+11FDH=221FDH 相对的基址变址寻址(相对的基址变址寻址(BX为基址寄存器,为基址寄存器,DI为变址寄存器)为变址寄存器)有效地址有效地址=物理地址物理地址=0158H+10A5H+1B57H=2D54H21000H+2D54H=23D54H假设:假设:BX=0158H,DI=10A5H,位移量,位移量=1B57H,DS=2100H 指令没有使用前缀。指令没有使用前缀。寻址方式总结寻址方式总结寻址方式总结寻址方式总结操作数寻址操作数寻址立即数寻址立即数寻址寄存器寻址寄存器寻址存储器寻址存储器寻址直接寻址直接寻址寄存器间接寻址寄存器间接寻址寄存器相对寻址寄存器相对寻址基址变址寻址基址变址寻址相对基址变址寻址相对基址变址寻址数据段基址寻址数据段基址寻址堆栈段基址寻址堆栈段基址寻址变址寻址变址寻址作业:作业:1.11 1.15 1.17 1.19 1.20 1.22 1.24第第2 2章章 80868086的指令系统的指令系统2.1 数据传送类指令2.2 算术运算类指令2.3 位操作类指令2.4 控制转移类指令2.5 串操作类指令2.6 处理机控制类指令2.1 2.1 2.1 2.1 数据传送类指令数据传送类指令数据传送类指令数据传送类指令指令系统指令系统数据传送指令数据传送指令算术指令算术指令逻辑指令逻辑指令串处理指令串处理指令控制转移指令控制转移指令处理机控制指令处理机控制指令通用数据传送指令通用数据传送指令堆栈操作堆栈操作指令指令标志传送指令标志传送指令地址传送指令地址传送指令输入输出指令输入输出指令8位或位或16位通用寄存器位通用寄存器AX、BX、CX、DXBP、SP、SI、DI段寄存器段寄存器CS、DS、ES、SS存储器存储器立即数立即数MOV指令数据传送方向示意图指令数据传送方向示意图CS不能做目不能做目的操作数的操作数1.传送指令传送指令格式:格式:MOV DST,SRC目的目的源源功能:把一个字节或一个字从源操作数功能:把一个字节或一个字从源操作数SCR送至送至 目的操作数目的操作数DST,源操作数不改变。,源操作数不改变。注意:源和目的操作数的类型要一致,即同时为字节或同时为字注意:源和目的操作数的类型要一致,即同时为字节或同时为字段寄存器段寄存器CS、DS、ES、SS立即数立即数存储器存储器8位获位获16位通用寄存器位通用寄存器AX、BX、CX、DXBP、SP、SI、DIIPMOV指令不影指令不影响标志位响标志位2.1.1 2.1.1 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 DS,ESMOV AL,AHMOV DS,AXMOV SI,DIMOV 2SI,AX学习学习DEBUG2.交换指令交换指令XCHG格式:格式:XCHG OPRD1,OPRD2功能:操作数功能:操作数OPRD1的内容与操作数的内容与操作数OPRD2的的 内容交换内容交换OPRD1OPRD1和和OPRD2OPRD2可以是通用寄存器和存储单元可以是通用寄存器和存储单元(两个操作数不能同时为存储单元)可以采用(两个操作数不能同时为存储单元)可以采用各种存储器寻址方式各种存储器寻址方式注意:不允许使用段寄存器、立即数注意:不允许使用段寄存器、立即数例:例:XCHG AL,AH XCHG SI,BX XCHG SI+3,AL 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=2000H2009H51H40H31H24H19H10H09H04H01H00H.MOV BX,2000HBXXLATBX+AL09H主程序主程序子程序子程序1子程序子程序2CS:IPCS:IP需要一个具有需要一个具有“后进先出后进先出”特性的存储特性的存储区域来保护断点区域来保护断点堆栈堆栈2.1.2 2.1.2 2.1.2 2.1.2 堆栈操作指令堆栈操作指令堆栈操作指令堆栈操作指令00000H50000H52000H堆栈段堆栈段SP假设:假设:SS=5000H,SP=2000H格式:格式:PUSH SRC功能:把源操作数功能:把源操作数SRC 的的16位数据压入位数据压入 堆栈堆栈例:例:AX=8A9BH执行执行 PUSH AX SP自动减自动减2 将源操作数的内容传送到将源操作数的内容传送到 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可以是通用寄存器、段寄存器可以是通用寄存器、段寄存器(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 2.1.3 2.1.3 标志传送指令标志传送指令标志传送指令标志传送指令格式:格式:SAHF功能:寄存器功能:寄存器AH的内容对应的送至标志寄存的内容对应的送至标志寄存 器的低器的低8位位(2)AH送标志指令送标志指令SAHFFLAG OFDF IF TFSFZF AF PF CFxxxxxxxAHx70(3)标志进栈指令标志进栈指令PUSHF格式:格式:PUSHF功能:功能:SP-2,把标志寄存器的内容(,把标志寄存器的内容(16位)压入堆栈位)压入堆栈(4)标志出栈指令标志出栈指令POPF格式:格式:POPF功能:把当前栈顶的一个字传送到标志寄存器,功能:把当前栈顶的一个字传送到标志寄存器,SP+2指令格式指令格式功能功能说明说明CLCSTCCMCCLDSTDCLISTI清除进位标志清除进位标志置进位标志置进位标志取反进位标志取反进位标志清除方向标志清除方向标志置方向标志置方向标志清除中断标志清除中断标志置中断标志置中断标志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的内容为的内容为 BP+SI的值的值注意:注意:LEA 和和 MOV 的区别的区别2.1.4 2.1.4 2.1.4 2.1.4 地址传送指令地址传送指令地址传送指令地址传送指令格式:格式:LDS REG,SRC功能:源操作数功能:源操作数 SRC所指向的存储单元的内容所指向的存储单元的内容 送到目的寄存器送到目的寄存器REG中接下来存储单元中接下来存储单元 的内容送到的内容送到数据段寄存器数据段寄存器DS。2.2.指针送指令指针送指令LDS、LES例:例:LDS DI,2130H2130H2133H 56347812 执行后执行后 DS=DI=LES对应的段寄存为对应的段寄存为ES存储器存储器78563412HH1.1.输入指令输入指令ININ格式:格式:IN 累加器,端口地址累加器,端口地址功能:从一个端口读取一个字节或一个字,传功能:从一个端口读取一个字节或一个字,传 送到送到AL或或AX端口地址可以直接给出端口地址可以直接给出或由或由DX寄存器间接给出寄存器间接给出注意:外部设备最多可有注意:外部设备最多可有65536个个I/O端口端口(0000FFFFH),),只有前只有前256个端口地址可个端口地址可在指令中直接给出(在指令中直接给出(00FFH)2.1.5 2.1.5 2.1.5 2.1.5 输入输出指令输入输出指令输入输出指令输入输出指令例:例:IN AL,50H ;从;从50H端口读入端口读入8位数据到位数据到ALIN AX,70H ;从;从70H端口读入端口读入16位数据到位数据到AX直接寻址或长格式直接寻址或长格式间接寻址或短格式间接寻址或短格式IN AL,DX ;从;从DX所指的端口中读取一个字节所指的端口中读取一个字节IN AX,DX ;从;从DX所指的端口读取一个字所指的端口读取一个字2.2.输出指令输出指令OUTOUT格式:格式:OUT 端口地址,累加器端口地址,累加器功能:将功能:将AL中的一个字节或中的一个字节或AX中的一个字输出中的一个字输出 到指定端口到指
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服