汇编语言0145483.ppt

上传人:hyn****60 文档编号:70973614 上传时间:2023-01-31 格式:PPT 页数:119 大小:708.50KB
返回 下载 相关 举报
汇编语言0145483.ppt_第1页
第1页 / 共119页
汇编语言0145483.ppt_第2页
第2页 / 共119页
点击查看更多>>
资源描述

《汇编语言0145483.ppt》由会员分享,可在线阅读,更多相关《汇编语言0145483.ppt(119页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第 1 1 章章教学重点第第1章章是是用用汇汇编编语语言言进进行行程程序序设设计计所所需需要要了了解解的的基基本本知知识识。在在课课堂上,我们重点掌握几个内容:堂上,我们重点掌握几个内容:PC机软硬件系统机软硬件系统认识汇编语言认识汇编语言基础是熟悉寄存器组基础是熟悉寄存器组难点是各种寻址方式难点是各种寻址方式第 1 章1.1 计算机系统概述硬件硬件(Hardware)n中央处理单元中央处理单元CPUn控制器、运算器、寄存器控制器、运算器、寄存器n存储器存储器n主存储器:主存储器:RAM和和ROMn辅助存储器:磁盘、光盘、辅助存储器:磁盘、光盘、U盘盘n外部设备外部设备n输入设备和输出设备输

2、入设备和输出设备软件软件(Software)n系统软件系统软件n应用软件应用软件第 1 章微型计算机的系统组成I/O接接口口主存储器主存储器系统总线系统总线CPU寄存器寄存器控制器控制器运算器运算器辅助存储器辅助存储器输入设备输入设备输出设备输出设备第 1 章汇编语言程序员看到的硬件中央处理单元中央处理单元 CPU(Intel 80 x86)对汇编语言程序员,最关心其中的对汇编语言程序员,最关心其中的寄存器寄存器存储器(存储器(主存储器主存储器)呈现给汇编语言程序员的,是呈现给汇编语言程序员的,是存储器地址存储器地址外部设备(外部设备(接口电路接口电路)汇编语言程序员看到的是汇编语言程序员看到

3、的是端口(端口(I/O地址)地址)第 1 章寄存器(Register)寄存器是寄存器是CPU内部的高速存储单元内部的高速存储单元它它们们为为处处理理器器提提供供各各种种操操作作所所需需要要的的数数据据或或地址等信息地址等信息汇编语言程序采用它们各自的符号名汇编语言程序采用它们各自的符号名n16位位Intel 8086/80286 CPU中有中有AXBXCXDXSIDIBPSPn32位位80386/80486/Pentium系列系列 CPU中有中有EAX EBX ECX EDXESIEDIEBP ESP第 1 章存储器地址(Address)存存储储器器是是由由大大量量存存储储单单元元组组成成,需

4、需要要用用编编号号区别每个单元:区别每个单元:编号地址编号地址存储器地址存储器地址是存储器中存储单元的编号是存储器中存储单元的编号每个存储单元存放一个字节量的数据每个存储单元存放一个字节量的数据n一个字节一个字节B(Byte)8个二进制位个二进制位b(bit)采用十六进制数来表达地址采用十六进制数来表达地址nIntel 8086具有具有1兆字节(兆字节(1MB)存储器容量)存储器容量n存储器地址表示为:存储器地址表示为:00000H FFFFFHn其中大写其中大写H(或小写(或小写h)表示是十六进制数)表示是十六进制数第 1 章端口(Port)I/O接接口口电电路路由由接接口口寄寄存存器器组组

5、成成,需需要要用用编编号区别各个寄存器:号区别各个寄存器:编号地址编号地址I/O地址地址是接口电路中寄存器的编号是接口电路中寄存器的编号端口端口是是I/O地址的通俗说法地址的通俗说法系统通过这些端口与外设进行通信系统通过这些端口与外设进行通信采用十六进制数来表达端口采用十六进制数来表达端口nIntel 8086支持支持64K个个8位端口位端口nI/O地址可以表示为:地址可以表示为:0000H FFFFH第 1 章计算机的程序设计语言机器语言(机器语言(Machine Language)B8 64 00 05 00 01汇编语言(汇编语言(Assembly Language)mov ax,100

6、;取得一个数据取得一个数据100(MOV是传送指令)是传送指令)add ax,256;实现实现100+256(ADD是加法指令)是加法指令)高级语言(高级语言(High-level Language)100256第 1 章什么是汇编语言以助记符形式表示计算机指令以助记符形式表示计算机指令n助助记记符符(mnemonic)是是便便于于人人们们记记忆忆、并并能能描述指令功能和指令操作数的符号描述指令功能和指令操作数的符号n助记符是表明指令功能的英语单词或其缩写助记符是表明指令功能的英语单词或其缩写汇汇编编格格式式指指令令以以及及使使用用它它们们编编写写程程序序的的规规则则就形成汇编语言(就形成汇编

7、语言(Assembly Language)汇编语言程序:用汇编语言书写的程序汇编语言程序:用汇编语言书写的程序汇汇编编程程序序:将将汇汇编编语语言言程程序序“汇汇编编”成成机机器器代码目标模块的程序代码目标模块的程序 汇编语言程序与汇编程序是两个概念汇编语言程序与汇编程序是两个概念第 1 章汇编语言和高级语言的比较-1汇编语言与处理器密切相关汇编语言与处理器密切相关 汇编语言程序的通用性、可移植性较差汇编语言程序的通用性、可移植性较差高级语言与具体计算机无关高级语言与具体计算机无关 高高级级语语言言程程序序是是标标准准化化语语言言,可可在在多多种种计计算机上编译后执行算机上编译后执行汇编语言:

8、汇编语言:高级语言:高级语言:第 1 章汇编语言和高级语言的比较-2汇编语言功能有限、涉及硬件细节汇编语言功能有限、涉及硬件细节 程序编写比较繁琐,调试比较困难程序编写比较繁琐,调试比较困难高高级级语语言言提提供供了了强强大大的的功功能能,不不必必关心琐碎问题关心琐碎问题 类类似似自自然然语语言言的的语语法法,易易于于掌掌握握和和应应用用汇编语言:汇编语言:高级语言:高级语言:第 1 章汇编语言和高级语言的比较-3汇编语言本质上就是机器语言汇编语言本质上就是机器语言 可以直接、有效地控制计算机硬件可以直接、有效地控制计算机硬件 易易于于产产生生速速度度快快、容容量量小小的的高高效效率率目目标标

9、程程序序高级语言不针对具体计算机系统高级语言不针对具体计算机系统 不易直接控制计算机的各种操作不易直接控制计算机的各种操作 目标程序比较庞大、运行速度较慢目标程序比较庞大、运行速度较慢汇编语言:汇编语言:高级语言:高级语言:第 1 章汇编语言的特点汇编语言的优点:汇编语言的优点:n直接控制计算机硬件部件直接控制计算机硬件部件n编编写写“时时间间”和和“空空间间”两两方方面面最最有有效效程程序序汇编语言的缺点:汇编语言的缺点:n与处理器密切有关与处理器密切有关n需要熟悉计算机硬件系统、考虑许多细节需要熟悉计算机硬件系统、考虑许多细节n编写繁琐,调试、维护、交流和移植困难编写繁琐,调试、维护、交流

10、和移植困难汇编语言:汇编语言:?高级语言:高级语言:?第 1 章汇编语言和高级语言的混合编程汇汇编编语语言言的的优优点点使使得得它它在在程程序序设设计计中中占占有有重重要的位置,不可被取代要的位置,不可被取代汇汇编编语语言言的的缺缺点点使使得得人人们们主主要要采采用用高高级级语语言言进行程序开发工作进行程序开发工作有有时时需需要要采采用用高高级级语语言言和和汇汇编编语语言言混混合合编编程程,互相取长补短,更好地解决实际问题互相取长补短,更好地解决实际问题混合编程取长补短第 1 章汇编语言的应用场合程程序序要要具具有有较较快快的的执执行行时时间间,或或者者只只能能占占用用较小的存储容量较小的存储

11、容量程程序序与与计计算算机机硬硬件件密密切切相相关关,程程序序要要直直接接、有效地控制硬件有效地控制硬件大型软件需要提高性能、优化处理的部分大型软件需要提高性能、优化处理的部分没没有有合合适适的的高高级级语语言言、或或只只能能采采用用汇汇编编语语言言的时候的时候分分析析具具体体系系统统尤尤其其是是该该系系统统的的低低层层软软件件、加加密解密软件、分析和防治计算机病毒等等密解密软件、分析和防治计算机病毒等等 汇编语言的作用实在不小汇编语言的作用实在不小!第 1 章1.2 数据表示1.2.1 数制数制n二进制数、十六进制数二进制数、十六进制数n它们与十进制数的相互转换它们与十进制数的相互转换1.2

12、.2 编码编码nBCD码和码和ASCII码的规律码的规律1.2.3 有符号数的表示法有符号数的表示法n有符号整数的补码表示有符号整数的补码表示1.2.4 二进制运算二进制运算n二进制的算术运算和逻辑运算二进制的算术运算和逻辑运算n十进制的加减运算十进制的加减运算跳过跳过第 1 章二进制数便于计算机存储及物理实现便于计算机存储及物理实现特特点点:逢逢二二进进一一,由由0和和1两两个个数数码码组组成成,基基数为数为2,各个位权以,各个位权以2k表示表示二进制数:二进制数:anan-1a1a0.b1b2bman2nan-12n-1a121a020 b12-1b22-2bm2-m 其中其中ai,bj非

13、非0即即1第 1 章十六进制数用于表达二进制数,相互转换简单用于表达二进制数,相互转换简单基数基数16,逢,逢16进位,位权为进位,位权为16k,16个数码:个数码:0,1,2,3,4,5,6,7,8,9A,B,C,D,E,F十六进制数:十六进制数:anan-1a1a0.b1b2bman16nan-116n-1a1161 a0160b116-1b216-2bm16-m其中其中ai,bj是是0F中的一个数码中的一个数码第 1 章十进制整数转换为二或十六进制数整数整数部分转换:用除法部分转换:用除法n十十进进制制数数整整数数部部分分不不断断除除以以基基数数2或或16,并并记记下下余数,直到商为余数

14、,直到商为0为止为止n由由最最后后一一个个余余数数起起逆逆向向取取各各个个余余数数,则则为为转转换换成的二进制和十六进制数成的二进制和十六进制数12601111110B1267EH演示演示第 1 章十进制小数转换为二或十六进制数小数小数部分转换:用乘法部分转换:用乘法n分分别别乘乘以以各各自自的的基基数数,记记录录整整数数部部分分,直直到到小小数部分为数部分为0为止为止0.81250.1101B0.81250.DH小数转换会发生总是无法乘到为小数转换会发生总是无法乘到为0的情况的情况n可选取一定位数(精度)可选取一定位数(精度)n将产生无法避免的转换误差将产生无法避免的转换误差演示演示第 1

15、章二或十六进制数转换为十进制数方法:按权展开方法:按权展开二进制数转换为十进制数二进制数转换为十进制数0011.1010B12112012-102-212-33.625十六进制数转换为十进制数十六进制数转换为十进制数1.2H116021611.125十六进制数用后缀字母十六进制数用后缀字母H二进制数用后缀字母二进制数用后缀字母B第 1 章BCD码(Binary Coded Decimal)二进制编码的十进制数二进制编码的十进制数n一个十进制数位一个十进制数位09用用4位二进制编码来表示位二进制编码来表示n常用常用8421 BCD码:低码:低10个个4位二进制编码表示位二进制编码表示n压缩压缩B

16、CD码:一个字节表达两位码:一个字节表达两位BCD码码n非非压压缩缩BCD码码:一一个个字字节节表表达达一一位位BCD码码(低低4位表达数值,高位表达数值,高4位常设置为位常设置为0)BCD码很直观码很直观BCD码:码:0100 1001 0111 1000.0001 0100 1001十进制真值:十进制真值:4978.149BCD码便于输入输出,表达数值准确码便于输入输出,表达数值准确第 1 章ASCII码(美国标准信息交换码)标准标准ASCII码用码用7位二进制编码,有位二进制编码,有128个个不可显示的控制字符不可显示的控制字符前前32个和最后一个编码个和最后一个编码回车回车CR:0DH

17、 换行换行LF:0AH 响铃响铃BEL:07H可显示和打印的字符:可显示和打印的字符:20H后的后的94个编码个编码n数码数码09:30H39Hn大写字母大写字母AZ:41H5AHn小写字母小写字母az:61H7AHn空格:空格:20H扩展扩展ASCII码:最高码:最高D7位为位为1,表达制表符,表达制表符第 1 章真值和机器数真值真值:现实中真实的数值:现实中真实的数值机器数机器数:计算机中用:计算机中用0和和1数码组合表达的数值数码组合表达的数值无符号数无符号数:只表达:只表达0和正整数的定点整数和正整数的定点整数有符号数有符号数:表达负整数、:表达负整数、0和正整数的定点整数和正整数的定

18、点整数n符号位需要占用一个位符号位需要占用一个位n常用机器数的最高位常用机器数的最高位n0表示正数、表示正数、1表示负数表示负数定点数定点数:固定小数点的位置表达数值的机器数:固定小数点的位置表达数值的机器数n定点整数:将小数点固定在机器数的最右侧表达的整数定点整数:将小数点固定在机器数的最右侧表达的整数n定点小数:将小数点固定在机器数的最左侧表达的小数定点小数:将小数点固定在机器数的最左侧表达的小数浮点数浮点数:小数点浮动表达的实数:小数点浮动表达的实数第 1 章补码有符号整数在计算机中默认采用补码有符号整数在计算机中默认采用补码n最高位表示符号:正数用最高位表示符号:正数用0,负数用,负数

19、用1n正数补码:直接表示数值大小(同无符号数)正数补码:直接表示数值大小(同无符号数)n负数补码:将对应正数补码取反加负数补码:将对应正数补码取反加1105补码补码01101001B-105补码补码01101001B取反取反110010110B110010111B8位二进制补码表示的数值范围:位二进制补码表示的数值范围:-128+12716位二进制补码表示的数值范围:位二进制补码表示的数值范围:-215+215-132位二进制补码表示的数值范围:位二进制补码表示的数值范围:-231+231-1演示演示为什么是补码为什么是补码第 1 章负数求补负数真值负数真值“取反加取反加1”得机器数补码得机器

20、数补码负数补码负数补码“取反加取反加1”得到负数真值得到负数真值补码:补码:11100000B真值:真值:-(11100000求反求反1)-(00011111+1)-00100000-25-32负数求补运算,等效于用带借位的负数求补运算,等效于用带借位的0作减法作减法真值:真值:-8,补码:,补码:-8补码补码00H-08HF8H补补码码:11111000,真真值值:-(00H-F8H)-08H-8演示演示用十六进制表达和运算,方便!用十六进制表达和运算,方便!第 1 章十六进制数的加减运算二进制和十六进制数之间具有对应关系二进制和十六进制数之间具有对应关系n整数从右向左整数从右向左n小数从左

21、向右小数从左向右n每每4个二进制位对应一个十六进制位个二进制位对应一个十六进制位00111010B3AH,F2H11110010B十六进制数的加减运算类似十进制十六进制数的加减运算类似十进制n逢逢16进位进位1,借,借1当当1623D9H94BEHB897HA59FH62B8H42E7H第 1 章1.3 Intel 80 x86系列微处理器80386803868048680486奔腾奔腾奔腾奔腾II奔腾奔腾4802868028680868086奔腾奔腾IIIIA-64(安腾)(安腾)40044004不是我不明白,这世界变化太快。扎扎实实掌握知识,以不变应万变!IA-32第 1 章808616位

22、结构的微处理器:数据总线为位结构的微处理器:数据总线为16位位主存容量主存容量1MB:地址总线为:地址总线为20位位时钟频率时钟频率5MHz(IBM PC使用使用4.77MHz)准准16位微处理器位微处理器8088:外部数据总线为:外部数据总线为8位位IBM PC和和PC/XT机使用机使用Intel 8088 CPU8086的的16位指令系统:位指令系统:Intel 80 x86基本指令集基本指令集80186/80188的核心是的核心是8086/8088,配以支持电路,配以支持电路80186/80188指指令令系系统统比比8086指指令令系系统统新新增增了了若若干条实用的指令干条实用的指令n涉

23、涉及及堆堆栈栈操操作作、移移位位指指令令、输输入入输输出出指指令令、过过程程指指令令和和边界检测及乘法指令边界检测及乘法指令第 1 章8028616位数据总线,位数据总线,24位地址总线(位地址总线(16MB主存)主存)实方式(实方式(Real Mode)n与与8086工作方式一样工作方式一样保护方式(保护方式(Protected Mode)n存储管理、保护机制和多任务管理的硬件支持存储管理、保护机制和多任务管理的硬件支持IBM PC/AT机使用机使用Intel 80286 CPU80286指令系统新增指令系统新增15条保护方式指令条保护方式指令16位位Intel 80 x86 CPU:808

24、6/80186/8028632位位Intel 80 x86 CPU(IA-32微处理器):微处理器):80386,80486,Pentium系列系列英特尔英特尔32位结构:位结构:IA-32(Intel Architecture-32)第 1 章8038632位结构位结构n数据总线数据总线32位,地址总线位,地址总线32位,寻址位,寻址4GB主存主存虚拟虚拟8086方式方式(Virtual 8086 Mode)n保护方式下的保护方式下的8086工作方式工作方式系统管理方式(系统管理方式(System Management Mode)n低功耗节能状态低功耗节能状态80386指令系统全面升级为指令

25、系统全面升级为32位位n兼容原来兼容原来16位指令系统位指令系统n新新增增有有关关位位操操作作、条条件件设设置置指指令令以以及及对对控控制制、调试和测试寄存器的传送指令等调试和测试寄存器的传送指令等第 1 章804868048680386803878KB Cache浮点处理单元浮点处理单元FPUn8086/8088:8087n80286:80287n80386:80387高速缓冲存储器高速缓冲存储器Cache复复杂杂指指令令集集计计算算机机CISC融融合合精精简简指指令令集集计计算算机机RISC的技术特点的技术特点80486指指令令系系统统新新增增用用于于多多处处理理器器和和内内部部Cache

26、操操作的作的6条指令条指令第 1 章Pentium俗称的俗称的80586微处理器,奔腾微处理器微处理器,奔腾微处理器32位结构,连接主存的数据总线是位结构,连接主存的数据总线是64位位超标量(超标量(Superscalar)技术)技术Pentium指令系统新增指令系统新增n一条一条8字节比较交换指令字节比较交换指令n一条处理器识别指令一条处理器识别指令n4条系统专用指令条系统专用指令第 1 章Pentium Pro原称原称P6,中文名称为,中文名称为“高能奔腾高能奔腾”两个芯片组成两个芯片组成扩展的超标量技术扩展的超标量技术动态执行技术动态执行技术Pentium Pro新增新增3条指令条指令第

27、 1 章Pentium II多媒体扩展指令(多媒体扩展指令(MMX指令)指令)nMMX(MutliMedia eXtension)n整数运算多媒体指令整数运算多媒体指令n优化图像、音频、视频和通信方面的程序进行优化图像、音频、视频和通信方面的程序进行n提升微机对多媒体的处理能力提升微机对多媒体的处理能力Pentium MMX(多多能能奔奔腾腾):MMX指指令令应应用于用于Pentium处理器处理器Pentium II:MMX指令应用于指令应用于Pentium Pro第 1 章Pentium III数据流数据流SIMD扩展指令(扩展指令(SSE指令)指令)nSSE(Streaming SIMD

28、Extensions)n浮点单精度多媒体运算指令浮点单精度多媒体运算指令n提高浮点提高浮点3D数据的处理能力。数据的处理能力。nSSE指令类似于指令类似于AMD公司发布的公司发布的3D Now!指令指令Pentium III:SSE指令应用于指令应用于Pentium II 单指令多数据单指令多数据SIMDnSingle Instruction Multiple Datan表示一条指令具有同时处理多组数据的能力表示一条指令具有同时处理多组数据的能力第 1 章Pentium 4NetBurst的微结构(的微结构(Microarchitecture)n进一步发掘指令之间可以同时执行的能力进一步发掘指

29、令之间可以同时执行的能力超线程超线程HT(Hyper Threading)n发掘程序中的并行性发掘程序中的并行性n一个物理处理器形成两个逻辑处理器一个物理处理器形成两个逻辑处理器SSE2指令指令n增强浮点双精度多媒体运算能力增强浮点双精度多媒体运算能力SSE3指令指令n增强和完善增强和完善MMX,SSE和和SSE2指令指令第 1 章Intel 80 x86微处理器Celeron(赛扬)微处理器(赛扬)微处理器n面向低端(低价位)面向低端(低价位)PC机机Xeon(至强)微处理器(至强)微处理器n面向高端服务器、工作站面向高端服务器、工作站AMD微处理器微处理器nAMD公司生产的公司生产的IA-

30、32微处理器兼容芯片微处理器兼容芯片nIntel公司最主要的竞争对手公司最主要的竞争对手双核微处理器双核微处理器n单芯片多处理器单芯片多处理器SMP技术技术nIntel的的Pentium D:单芯片双:单芯片双Pentium 4核心核心64位微处理器位微处理器nAMD的的K8核心:兼容核心:兼容IA-32的的64位微处理器位微处理器nIntel的的EM64T(扩展(扩展64位技术):位技术):IA-32的的64位扩展位扩展第 1 章1.4 PC微型计算机本课程采用本课程采用16位或位或32位个人计算机位个人计算机16位位PC机机n8088 CPU的的IBM PC和和IBM PC/XTn8028

31、6 CPU的的IBM PC/ATn16位位80 x86 CPU的的PC兼容机兼容机32位位PC机机n采用采用32位位80 x86 CPU而形成的微机而形成的微机n基本结构仍然源于基本结构仍然源于PC/AT机机人人们们日日常常谈谈论论的的PC机机或或微微机机是是上上述述微微型型计计算机系统的统称算机系统的统称第 1 章主存空间的分配第 1 章PC机最低1MB主存系统系统RAM区区n地址最低端的地址最低端的640KB空间空间n由由DOS进行管理进行管理显示显示RAM区区n128KB主存空间保留给显示缓冲存储区主存空间保留给显示缓冲存储区n显示显示RAM区并没有被完全使用区并没有被完全使用扩展扩展R

32、OM区区nI/O接口电路卡上的接口电路卡上的ROM系统系统ROM区区nROM-BIOS程序程序第 1 章微机的软件系统软件:系统软件:DOS平台平台nMS-DOS 6.22实地址方式实地址方式nWindows的的MS-DOS模拟环境模拟环境应用软件:开发汇编语言程序涉及应用软件:开发汇编语言程序涉及n文本编辑器文本编辑器n汇编程序汇编程序n连接程序连接程序n调试程序调试程序n集成化开发环境集成化开发环境 本教材提供本教材提供 DOS-MASM615.EXE第 1 章文本编辑器(Editor)文本编辑器用于编辑无任何格式的文档文本编辑器用于编辑无任何格式的文档程序设计要采用文本编辑器编写源程序程

33、序设计要采用文本编辑器编写源程序常见的文本编辑软件有很多,如常见的文本编辑软件有很多,如nMS-DOS的的EDIT全屏幕编辑器全屏幕编辑器nWindows的的Notepad计事本计事本n程序开发系统中的程序编辑器程序开发系统中的程序编辑器nTurbo CnVisual StudionMASM的的PWB第 1 章汇编程序(Assembler)汇汇编编程程序序将将汇汇编编语语言言源源程程序序翻翻译译(称称为为“汇汇编编”)成机器代码目标模块)成机器代码目标模块本课程采用微软的本课程采用微软的MASM 6.15nMASM的最后一个独立版本的最后一个独立版本MASM 6.11n可免费升级为可免费升级为

34、MASM 6.14(支持(支持SSE)nVisual C+中有中有MASM 6.15(支持(支持SSE2)nVisual C+.NET 2003有有MASM 7.10nVisual C+.NET 2005的的MASM支支持持Penium 4的的SSE3指指令令系系统统,同同时时有有ML64.EXE程程序序用用于于支持支持64位指令系统位指令系统第 1 章连接程序(Linker)连连接接程程序序将将汇汇编编后后的的目目标标模模块块转转换换为为可可执执行行程序程序每个程序开发环境都有连接程序每个程序开发环境都有连接程序连接程序的文件名通常是:连接程序的文件名通常是:LINK.EXE32位位Wind

35、ows连连接接程程序序不不同同于于16位位DOS连连接程序接程序源程序源程序可执行文件可执行文件目标模块目标模块文本编辑器文本编辑器汇编程序汇编程序连接程序连接程序调试程序调试程序第 1 章调试程序(Debugger)调试程序进行程序排错、分析等调试程序进行程序排错、分析等本课程采用本课程采用MASM的的CodeViewDOS的的DEBUG程序程序还有还有Turbo Debugger等等源程序源程序可执行文件可执行文件目标模块目标模块文本编辑器文本编辑器汇编程序汇编程序连接程序连接程序调试程序调试程序第 1 章集成化开发环境进进行行程程序序设设计计使使用用的的各各种种软软件件的的有有机机集集合

36、合,有有文文本本编编辑辑器器,有有语语言言翻翻译译程程序序,有有连连接接程程序,还组合有调试程序等序,还组合有调试程序等大大型型的的程程序序设设计计项项目目往往往往要要借借助助这这种种集集成成开开发环境,也就是软件开发工具(包)发环境,也就是软件开发工具(包)MASM提供程序员工作平台提供程序员工作平台PWB微软的微软的Visual Studio开发系统开发系统第 1 章 MASM编程环境的使用1.进入模拟进入模拟DOS环境环境2.将将MASM目录作为当前目录目录作为当前目录3.开发汇编语言程序开发汇编语言程序ml/Fl filename.asm4.运行可执行程序运行可执行程序5.调试可执行程

37、序调试可执行程序 定制进入定制进入MASM快捷方式快捷方式 ML615 创建快速开发文件创建快速开发文件 MLL.BAT 构造方便的调试环境构造方便的调试环境 CV.BAT第 1 章1.5 8086微处理器微微处处理理器器是是微微机机的的硬硬件件核核心心,主主要要包包含含指指令令执行的运算和控制部件,还有多种寄存器执行的运算和控制部件,还有多种寄存器对对程程序序员员来来说说,微微处处理理器器抽抽象象为为以以名名称称存存取取的寄存器的寄存器8086内内部部结结构构有有两两个个功功能能模模块块,完完成成一一条条指指令的取指和执行功能令的取指和执行功能v 总线接口单元总线接口单元BIU:负责读取指令

38、和操作数:负责读取指令和操作数v 执行单元执行单元EU:负责指令译码和执行:负责指令译码和执行8086的内部结构内部暂存器内部暂存器 IP ES SS DS CS输入输入/输出输出控制电路控制电路外外部部总总线线执行部分执行部分控制电路控制电路1 2 3 4 5 6ALU标志寄存器标志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用寄存器通用寄存器地址加法器地址加法器指令队列缓冲器指令队列缓冲器执行部件执行部件(EU)总线接口部件总线接口部件(BIU)16位位20位位16位位8位位执行执行8086的寄存器组第 1 章8086的通用寄存器8086的的16位通用寄存

39、器是:位通用寄存器是:AXBXCXDXSIDIBPSP其其中中前前4个个数数据据寄寄存存器器都都还还可可以以分分成成高高8位位和和低低8位两个独立的寄存器位两个独立的寄存器8086的的8位通用寄存器是:位通用寄存器是:AHBHCHDHALBLCLDL对对其其中中某某8位位的的操操作作,并并不不影影响响另另外外对对应应8位位的数据的数据第 1 章数据寄存器数数据据寄寄存存器器用用来来存存放放计计算算的的结结果果和和操操作作数数,也可以存放地址也可以存放地址每个寄存器又有它们各自的专用目的每个寄存器又有它们各自的专用目的nAX累累加加器器,使使用用频频度度最最高高,用用于于算算术术、逻逻辑运算以及

40、与外设传送信息等;辑运算以及与外设传送信息等;nBX基址寄存器,常用做存放存储器地址;基址寄存器,常用做存放存储器地址;nCX计计数数器器,作作为为循循环环和和串串操操作作等等指指令令中中的的隐含计数器;隐含计数器;nDX数数据据寄寄存存器器,常常用用来来存存放放双双字字长长数数据据的的高高16位,或存放外设端口地址。位,或存放外设端口地址。第 1 章变址及指针寄存器变址寄存器常用于存储器寻址时提供地址变址寄存器常用于存储器寻址时提供地址nSI是源变址寄存器是源变址寄存器nDI是目的变址寄存器是目的变址寄存器指针寄存器用于寻址内存指针寄存器用于寻址内存堆栈堆栈内的数据内的数据nSPSP为为堆堆

41、栈栈指指针针寄寄存存器器,指指示示栈栈顶顶的的偏偏移移地地址址,不能再用于其他目的,具有专用目的不能再用于其他目的,具有专用目的nBPBP为为基基址址指指针针寄寄存存器器,表表示示数数据据在在堆堆栈栈段段中中的的基地址基地址SISI和和DIDI在串操作指令有特殊用法在串操作指令有特殊用法SPSP和和BPBP寄寄存存器器与与SSSS段段寄寄存存器器联联合合使使用用确确定定堆堆栈栈段段中中的存储单元地址的存储单元地址第 1 章堆栈(Stack)堆栈是主存中一个特殊的区域堆栈是主存中一个特殊的区域它它采采用用先先进进后后出出FILOFILO(First First In In Last Last O

42、utOut)或或后后进进先先出出LIFOLIFO(Last Last In In First First OutOut)的的原原则则进进行行存存取取操操作作,而而不不是是随随机机存存取操作方式取操作方式堆栈通常由处理器自动维持堆栈通常由处理器自动维持在在80868086中中,由由堆堆栈栈段段寄寄存存器器SSSS和和堆堆栈栈指指针针寄寄存器存器SPSP共同指示共同指示第 1 章指令指针IP指指令令指指针针寄寄存存器器IP,指指示示代代码码段段中中指指令令的的偏偏移地址移地址它它与与代代码码段段寄寄存存器器CS联联用用,确确定定下下一一条条指指令的物理地址令的物理地址计计算算机机通通过过CS:IP

43、寄寄存存器器来来控控制制指指令令序序列列的的执行流程执行流程IP寄存器是一个专用寄存器寄存器是一个专用寄存器第 1 章标志寄存器标标志志(Flag)用用于于反反映映指指令令执执行行结结果果或或控控制制指指令令执执行行形形式式,形形成成16位位标标志志寄寄存存器器FLAGS(程程序序状状态态字字PSW寄存器寄存器)状状态态标标志志用用来来记记录录程程序序运运行行结结果果的的状状态态信信息息,许多指令的执行都将相应地设置它许多指令的执行都将相应地设置它CF ZF SF PF OF AF控控制制标标志志可可由由程程序序根根据据需需要要用用指指令令设设置置,用用于于控制处理器执行指令的方式控制处理器执

44、行指令的方式DF IF TFOF1115 12DF10IF9TF8SF7ZF65AF43PF21CF0第 1 章进位标志CF(Carry Flag)当当运运算算结结果果的的最最高高有有效效位位有有进进位位(加加法法)或或借借位位(减减法法)时时,进进位位标标志志置置1,即即CF=1;否则;否则CF=0。3AH+7CHB6H,没有进位:,没有进位:CF=0AAH+7CH(1)26H,有进位:,有进位:CF=1第 1 章零标志ZF(Zero Flag)若运算结果为若运算结果为0,则,则ZF=1;否则否则ZF=03AH+7CHB6H,结果不是零:,结果不是零:ZF=084H+7CH(1)00H,结果

45、是零:,结果是零:ZF=1 注意:注意:ZF为为1表示的结果是表示的结果是0第 1 章符号标志SF(Sign Flag)运运算算结结果果最最高高位位为为1,则则SF=1;否否则则SF=03AH+7CHB6H,最高位,最高位D71:SF=184H+7CH(1)00H,最高位,最高位D70:SF=0 有符号数据用最高有效位表示数据的符号有符号数据用最高有效位表示数据的符号所以,最高有效位就是符号标志的状态所以,最高有效位就是符号标志的状态第 1 章奇偶标志PF(Parity Flag)当当运运算算结结果果最最低低字字节节中中“1 1”的的个个数数为为零零或或偶数时,偶数时,PF=1PF=1;否则;

46、否则PF=0PF=03AH+7CHB6H10110110B结果中有结果中有5个个1,是奇数:是奇数:PF=0 PF标标志志仅仅反反映映最最低低8位位中中“1”的的个个数数是偶或奇,即使是进行是偶或奇,即使是进行16位字操作位字操作第 1 章溢出标志OF(Overflow Flag)若算术运算的结果有溢出,则若算术运算的结果有溢出,则OFOF1 1;否则否则 OFOF0 03AH+7CHB6H,产生溢出:,产生溢出:OF=1AAH+7CH(1)26H,没有溢出:,没有溢出:OF=0 问题问题什么是溢出?什么是溢出?溢出和进位有什么区别?溢出和进位有什么区别?处理器怎么处理,程序员如何运用?处理器

47、怎么处理,程序员如何运用?如何判断是否溢出?如何判断是否溢出?第 1 章什么是溢出处理器内部以补码表示有符号数处理器内部以补码表示有符号数8位表达的整数范围是:位表达的整数范围是:12712816位表达的范围是:位表达的范围是:3276732768如果运算结果超出这个范围,就产生了溢出如果运算结果超出这个范围,就产生了溢出有溢出,说明有符号数的运算结果不正确有溢出,说明有符号数的运算结果不正确3AH7CHB6H,就是,就是58124182,已经超出已经超出128127范围,产生溢出,故范围,产生溢出,故OF1;另一方面,补码另一方面,补码B6H表达真值是表达真值是-74,显然运算结果也不正确显

48、然运算结果也不正确第 1 章溢出和进位的对比例例1:3AH+7CHB6H无符号数运算:无符号数运算:58124182范围内,无进位范围内,无进位有符号数运算:有符号数运算:58124182范围外,有溢出范围外,有溢出例例2:AAH+7CH(1)26H无符号数运算:无符号数运算:170124294范围外,有进位范围外,有进位有符号数运算:有符号数运算:8612428范围内,无溢出范围内,无溢出第 1 章如何运用溢出和进位处处理理器器对对两两个个操操作作数数进进行行运运算算时时,按按照照无无符符号号数数求求得得结结果果,并并相相应应设设置置进进位位标标志志CF;同同时时,根根据据是是否否超超出出有

49、有符符号号数数的的范范围围设设置置溢溢出标志出标志OF应应该该利利用用哪哪个个标标志志,则则由由程程序序员员来来决决定定。也也就就是是说说,如如果果将将参参加加运运算算的的操操作作数数认认为为是是无无符符号号数数,就就应应该该关关心心进进位位;认认为为是是有有符符号号数数,则要注意是否溢出则要注意是否溢出第 1 章溢出的判断判断运算结果是否溢出的简单规则:判断运算结果是否溢出的简单规则:只只有有当当两两个个相相同同符符号号数数相相加加(包包括括不不同同符符号号数数相相减减),而而运运算算结结果果的的符符号号与与原原数数据据符符号号相相反反时时,产产生生溢溢出出;因因为为,此此时的运算结果显然不

50、正确时的运算结果显然不正确其他情况下,则不会产生溢出其他情况下,则不会产生溢出第 1 章辅助进位标志AF(Auxiliary Carry Flag)3AH+7CHB6H,D3有进位:有进位:AF=1运运算算时时D D3 3位位(低低半半字字节节)有有进进位位或或借位时,借位时,AF=1AF=1;否则;否则AF=0AF=0。这这个个标标志志主主要要由由处处理理器器内内部部使使用用,用用于于十十进进制制算算术术运运算算调调整整指指令令中中,用用户一般不必关心户一般不必关心第 1 章方向标志DF(Direction Flag)用于串操作指令,控制地址的变化方向:用于串操作指令,控制地址的变化方向:设

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com