




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-,0,主讲人刘雪洁,AssemblyLanguageProgramming,汇编语言程序设计,-,1,课程介绍,汇编语言程序设计课程是国家教育部所属高等院校计算机软硬件专业的专业基础课、必修课。作为一种低级语言,汇编语言是高级语言程序设计的基础,通常被视为微型计算机的又一核心内容。虽然现今大量问题都可应用高级语言编程,但汇编语言是能够利用计算机所有硬件特性并能直接控制硬件的惟一语言,对于直接控制硬件的应用场合或若干实时处理与控制的应用开发项目,汇编语言具有明显的优势。,-,2,使用教材,沈美明、温冬婵编著IBM-PC汇编语言程序设计(第2版)清华大学出版社2001年参考:1王爽编著汇编语言清华大学出版社2003年2钱晓捷编著汇编语言程序设计电子工业出版社2003年,-,3,教学内容,第1章汇编语言基础知识第2章80 x86的指令系统第3章汇编语言程序格式第4章基本汇编语言程序设计第5章高级汇编语言程序设计,-,4,第1章汇编语言基础知识,1.1汇编语言及意义1.2数据编码与运算1.3数据表示1.480 x86CPU和寄存器组1.5存储器和端口,-,5,1.1.1机器语言计算机能够直接识别的数据是由二进制数0和1组成的代码。机器指令就是用二进制代码组成的指令,一条机器指令控制计算机完成一个基本操作。用机器语言编写的程序是计算机惟一能够直接识别并执行的程序,而用其他语言编写的程序必须经过翻译才能变换成机器语言程序。,1.1汇编语言及意义,返回本章,-,6,1.1.2汇编语言汇编语言是一种用符号书写的、基本操作与机器指令相对应的、并遵循一定语法规则的计算机语言。汇编语言是一种符号语言,比机器语言容易理解和掌握,也容易调试和维护。但对于汇编语言编写的程序必须经过汇编和连接之后,才能在计算机上执行。,返回本节,返回本章,-,7,用汇编语言编写的程序称为汇编源程序。采用微机中任何一个文本编辑器编写汇编语言源程序。汇编程序可将汇编语言源程序翻译成机器代码目标模块。80 x86CPU的汇编程序主要有微软的宏汇编程序MASM。较著名的还有Borland公司的TASM,无实质差别。,返回本节,返回本章,-,8,连接程序将汇编后的目标模块转换为可执行程序。连接程序的文件名通常是:LINK.EXE。,返回本节,返回本章,-,9,1.1.3高级语言高级程序设计语言接近于人类自然语言的语法习惯,与计算机硬件无关,易被用户掌握和使用。1.1.4汇编语言特点汇编语言程序与处理器指令系统密切相关。程序员可直接、有效地控制系统硬件。形成的可执行文件运行速度快、占用主存容量少。,返回本节,返回本章,-,10,1.2数据编码与运算,1.2.1各种进位计数制(1)十进制计数十进制数的基数为10,采用数字0、1、2、3、4、5、6、7、8、9共10个数码来计数。每位数字的10k为该位数字的权。例:(795.412)10=710291015100410-1110-2210-3,返回本章,-,11,(2)二进制计数二进制数的基数为2,只有0、1两个数码,并遵循逢2进1的规则,它的各位权是以2k表示的。例:(11.1001)2=12112012-102-202-312-4n位二进制数可以表示2n个数,例如3位二进制数可以表示8个数,即000-111。4位二进制数则表示16个数,即0000-1111。,返回本节,返回本章,-,12,(3)八进制和十六进制计数为便于阅读及书写,经常使用八进制数和十六进制数来表示二进制数。八进制的基数为8,数码为0、1、2、3、4、5、6、7。十六进制数的基数为16,数码为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。按同样的方法,可以容易掌握八进制和十六进制的表示方法。十进制数结尾一般用D、二进制数用B、八进制数用O、十六进制数H。如:117D、1010B,67O,1ABH,。,返回本节,返回本章,-,13,1.2.2数制的转换(1)十进制与二、八、十六进制间转换将十进制数转换成二、八、十六进制数的方法:将数分成整数部分和小数部分,整数部分采用除基取余法,小数部分采用乘基取整法分别进行转换。例:76.425D=1001100.011011B,商余数762=380382=190192=9192=4142=2022=1012=01,乘积整数0.4252=0.85000.852=1.7010.72=1.410.42=0.800.82=1.610.62=1.21,返回本节,返回本章,-,14,例:将十进制数76.125转换成十六进制数。商余数乘积整数部分7616=4C(12)0.12516=2.02416=04转换结果为:76.125=4C.2H,返回本节,返回本章,-,15,将二、八、十六进制数转换成十进制数的方法:各位数码与其对应权的积再求和即为该进制数相对应的十进制数。例:101.11B=5.75DB56.D7H=2902.839844D。计算过程:101.11B=12202112012-112-2=4+1+0.5+0.25=5.75DB56.D7H=B16251616160D16-1716-2=28168060.81250.027344=2902.839844,返回本节,返回本章,-,16,转换过程:101111010.0111001B=000101111010.01110010B=17A.72HB56.D7H=101101010110.11010111B,(2)二进制与八、十六进制间转换将二进制数转换成八(十六)进制数的方法:一个二制数从小数点向两个方向每3位(4位)划为一组(位数不够补零),然后每组用八(十六)进制数表示就可以了。反之,把八(十六)进制数每一位用3位(4位)二进制数表示,就形成相应的二进制数了。例:101111010.0111001B=17A.72HB56.D7H=101101010110.11010111B,返回本节,返回本章,-,17,1.2.3数据运算(1)二进制数运算二进制加法运算规则:逢2进1。即:000011101110产生进位1二进制减法运算规则:借1作2。即:000011产生借位1101110,返回本节,返回本章,-,18,二进制乘法运算与十进制乘法运算类似即:000010100111(2)十六进制运算加法:当两个一位数之和S小于16时,与十进制同样处理,如果S大于或等于16,则应用S-16及进位1取代S。减法:与十进制类似,够减时可直接相减,不够减时服从向高位借1为16的规则。乘法:可用十进制乘法的规则来计算,但结果必须用十六进制数来表示。,返回本节,返回本章,-,19,例:,05C3H3D25H+3D25H-05C3H42E8H3762H05C3H00A1H05C3+399E39FA3H,返回本节,返回本章,-,20,1.3数据表示,1.3.1数值数据数值数据分为有符号数和无符号数。无符号数最高位表示数值,而有符号数最高位表示符号。有符号数有不同的编码方式,常用的是补码。,返回本章,-,21,(1)原码:最高位表示符号(正数用0,负数用1),其它位为该数的二进制数值,称为有符号数的原码表示。【例】X=45D=00101101BX原=00101101BX=-45DX原=10101101B原码表示简单易懂,但若是两个异号数相加(或两个同号数相减),就要做减法。为了把减法运算转换为加法运算就引进了反码和补码。,返回本节,返回本章,-,22,(2)反码:正数的反码与原码相同,符号位用0表示,数值位不变。负数的反码符号位用1表示,数值位为原码数值位按位取反形成,即0变1、1变0。【例】X=45D=00101101B,X反=00101101BX=-45DX反=11010010B(3)补码:正数的补码与原码相同,即符号位用0表示,数值位不变。负数的补码为反码加1形成。【例】X=45D=00101101BX补=00101101BX=-45DX补=11010011B,返回本节,返回本章,-,23,()符号扩展:在数据处理时,有时需要把8位二进制数扩展成16位二进制数。当要扩展的数是无符号数时,可在最高位前扩展8个0。如果要扩展的数是补码形式的有符号数,那么就要进行符号位的扩展。符号扩展后,其结果仍是该数的补码。,返回本节,返回本章,-,24,()数据的表示范围和大小n位二进制数能表示的无符号整数的范围是:0I2n-1;n位二进制数能表示的有符号整数的范围是:-2n-1I+2n-1-1()补码的加法和减法补码的特性:补=-补=补补码的加法规则:补=补补补码的减法规则:-补=补-补,返回本节,返回本章,求补,求补,-,25,1.3.2字符数据:()ASCII码:标准ASCII码用7位二进制数编码,共有128个。计算机存储器基本单位为8位,ASCII码的最高位通常为0,通信时,最高位用作奇偶校验位。常用字符的ASCII码:数字09:30H39H字母AZ:41H5AH字母az:61H7AH空格:20H回车CR:0DH换行LF:0AH注意回车与换行的差别:CR用来控制光标回到当前行的最左端;LF用来移动光标到下一行,而所在列不变。,返回本节,返回本章,-,26,()BCD码:虽然二进制数实现容易,但不符合人们的使用习惯,且书写阅读不方便,所以在计算机输入输出时通常还是采用十进制来表示数,这就需要实现十进制与二进制间的转换。为了转换方便,常采用二进制编码的十进制,简称为BCD码。,返回本节,返回本章,-,27,压缩BCD码:以4个二进制位表示1个十进制位,用0000B1001B表示09。例如,十进制数6429的压缩BCD码表示为0110010000101001B(即6429H)非压缩BCD码:以8个二进制位表示1个十进制位,低4位与压缩BCD码相同,高4位无意义。例如,十进制数6429的非压缩BCD码表示为xxxx0110 xxxx0100 xxxx0010 xxxx1001B有时,要求非压缩BCD码的高4位为0,这时,6429的非压缩BCD码为06040209H。,返回本节,返回本章,-,28,1.480 x86CPU和寄存器组,计算机硬件:中央处理单元CPU(Intel80 x86)对汇编语言程序员,最关心其中的寄存器存储器(主存储器)呈现给汇编语言程序员的,是存储器地址外部设备(接口电路)汇编语言程序员看到的是端口(I/O地址),返回本章,-,29,1.4.180 x86CPU计算机执行程序时,首先要将其装入内存,然后由CPU执行程序指令。CPU的作用:执行算术与逻辑运算,控制指令的执行。通常,将Intel公司生产的8086/8088、80286、80386、80486、Pentium、PentiumPro、PentiumII、PentiumIII、Pentium4及其兼容的CPU,统称为80 x86CPU或x86CPU,将基于这些CPU的计算机,称为80 x86计算机或x86计算机。其中,8086CPU是Intel公司于1978年推出的16位微处理器,时钟频率为5MHz,有16位数据信号线,20位地址信号线,可寻址的内存地址空间为1MB。,返回本章,-,30,80 x86CPU的3种工作模式1.实模式:与8086兼容的工作模式,只有低20位地址线起作用,仅能寻址第一个1MB的内存空间。MSDOS运行在实模式下。2.保护模式:32位80 x86CPU的主要工作模式,提供对程序和数据进行安全检查的保护机制。Windows9x/NT/2000运行在保护模式下。3.虚拟8086模式:在Windows9x下,若打开一个MSDOS窗口,运行一个DOS应用程序,那么该程序就运行在虚拟8086模式下。,返回本节,返回本章,-,31,1.4.280 x86寄存器组,寄存器组,返回本节,返回本章,-,32,1通用寄存器,(1)数据寄存器8位数据寄存器8个:AL、AH、BL、BH、CL、CH、DL、DH。16位数据寄存器个:AX、BX、CX、DX。32位数据寄存器4个:EAX、EBX、ECX、EDX。AL与AH、BL与BH、CL与CH、DL与DH分别对应于AX、BX、CX和DX的低8位与高8位。AX、BX、CX和DX分别对应于EAX、EBX、ECX和EDX的低16位。,返回本节,返回本章,-,33,AX寄存器称为累加器。使用频度最高,用于算术、逻辑运算以及与外设传送信息等。BX寄存器称为基址寄存器。常用于存放存储器地址。CX寄存器称为计数器。一般作为循环或串操作等指令中的隐含计数器。DX寄存器称为数据寄存器。常用来存放双字数据的高16位,或存放外设端口地址。,返回本节,返回本章,-,34,变址和指针寄存器包括SI、DI、SP、BP个16位寄存器和ESI、EDI、ESP、EBP个32位寄存器,主要用于存放某个存储单元的偏移地址。其中SI、DI、BP和SP分别对应于ESI、EDI、EBP和ESP的低16位。SI是源变址寄存器,DI是目的变址寄存器,在字符串操作中,SI和DI都具有自动增量或减量的功能。SP为堆栈指针寄存器,用于存放当前堆栈段中栈顶的偏移地址;BP为基址指针寄存器,用于存放堆栈段中某一存储单元的偏移地址。,(2)变址和指针寄存器,返回本节,返回本章,-,35,2段寄存器,80 x86CPU的6个16位的段寄存器分别称为代码段寄存器CS,数据段寄存器DS,堆栈段寄存器SS,附加数据段寄存器ES及80386起增加的FS、GS两个段寄存器。段寄存器用来确定该段在内存中的起始地址。代码段用来存放程序的指令序列。CS存放代码段的段首址,指令指针寄存器IP指示代码段中指令的偏移地址。,返回本节,返回本章,-,36,3指令指针,8086CPU中的16位指令指针IP,总是保存下一次将要从主存中取出的指令的偏移地址,偏移地址的值为该指令到所在段段首址的字节距离。在目标程序运行时,IP的内容由微处理器硬件自动设置,程序不能直接访问IP,但一些指令却可改变IP的值,如转移指令、子程序调用指令等。EIP是80386起增加的32位指令寄存器,IP是EIP的低16位。,返回本节,返回本章,-,37,4.标志寄存器,状态标志通常由CPU根据指令执行结果自动设置,以反映指令执行结果的特征。80 x86CPU将状态标志作为条件判断的依据,以控制程序的执行流程。FLAGS是8086CPU中一个很重要的16位标志寄存器,它包含9个标志位,主要用于保存一条指令执行后,CPU所处状态信息及运算结果的特征。主要包括条件标志和状态控制标志。,返回本节,返回本章,-,38,1条件标志,(1)零标志ZF:若运算结果为0,则ZF=1,否则ZF=0。(2)符号标志SF:若运算结果为负数,则SF=1,否则SF=0。(3)进位标志CF:若加法时结果最高位向前有进位或减法时最高位向前有借位,则CF=1,否则CF=0。(4)溢出标志OF:若带符号数的运算结果超出了补码表示的范围,则OF=1,否则OF=0。(5)辅助进位标志AF:若加法时结果低4位向前有进位或减法时结果低4位向前有借位,则AF=1,否则AF=0。(6)奇偶标志PF:若结果操作数中1的个数为偶数,则PF=1,否则PF=0。,返回本节,返回本章,-,39,深入认识CF和OFCF和OF本质上均表示溢出。CF表示无符号溢出,即运算结果超出了无符号数的表示范围。对于n位二进制数来说,无符号数表示范围为02n-1,例如:n=8和16时分别为0255和065535。OF表示带符号溢出,即运算结果超出了带符号数的表示范围。对于n位二进制数来说,带符号数表示范围为-2n-12n-1-1,例如,n=8和16时,分别为-128127和-3276832767。,返回本节,返回本章,-,40,2状态控制标志,(1)方向标志DF:当DF=1时,每次操作后变址寄存器SI和DI减小,这样使串处理从高地址向低地址方向处理;当DF=0时,则使SI和DI增大。(2)中断允许标志IF:当IF=1时,允许CPU响应可屏蔽中断请求,否则关闭中断。(3)追踪标志TF:用于调试时的单步方式操作。当TF=1时,每条指令执行完后产生陷阱,由系统控制计算机;当TF=0时,CPU正常工作,不产生陷阱。,返回本节,返回本章,-,41,1.5存储器和端口,1.5.1存储器存储器是计算机的记忆部件,用来存放程序和数据。按所在的位置,存储器可以分成主存储器和辅助存储器。主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成,其成本高,容量小,但速度快。辅助存储器可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低,容量大,但速度较慢。,返回本章,-,42,1.5.2存储器单元的地址和内容计算机中信息的单位:位(Bit):计算机中存储信息的基本单位,可存储一个二进制数:0或1。字节(Byte):8位二进制位。位编号从右到左为07,第0位为最低位,第7位为最高位。字(Word):16位二进制位,2个字节。位编号从右到左为015,第0位为最低位,第15位为最高位。位07为低字节,位815为高字节。双字(DoubleWord):32位二进制位,4个字节。位编号从右到左为031,第0位为最低位,第31位为最高位。位015为低字,位1631为高字。,返回本节,返回本章,-,43,左图表明了存储器中部分存储单元存放信息情况。从图可看到,地址为34560H的字节的存储单元中的内容是34H,而地址为34561H的字节存储单元中的内容是12H,表示为:(34560H)=34H(34561H)=12H若从存储单元中取一个词,则高地址内容在高字节。例:(34560H)字=1234H,返回本节,返回本章,存储单元地址:为了标识和存取每一个存储单元,给每个存储单元规定一个编号,这就是存储单元地址。在存储器里以字节为单位存储信息,一个字节有惟一的地址。存储单元的内容:一个存储单元中存放的信息称为该存储单元的内容。,-,44,1.5.3物理地址的形成实模式下允许最大寻址空间为1MB。8086/8088CPU的地址线是20位的,这样最大可寻址空间应为220=1MB,其物理地址范围从00000HFFFFFH。而8086CPU寄存器都是16位的。那么,这1MB空间如何用16位寄存器表达呢?根据要求可把1M字节地址空间划成若干逻辑段。每个逻辑段必须满足两个条件:一是逻辑段的起始地址(简称段首址)必须是16的倍数;二是逻辑段的最大长度为64KB。按照这两个条件,1M字节地址空间最多可划分成64K个逻辑段,最少也要划分成16个逻辑段。逻辑段与逻辑段可以相连,也可以不连,还可以重叠。,返回本节,返回本章,-,45,物理地址与逻辑地址物理地址:内存单元的实际地址,也就是出现在地址总线上的地址。逻辑地址(分段地址):段地址:段内偏移地址段地址表示段在内存中的起始位置,通常被保存在某个段寄存器中。段内偏移地址表示内存单元相对于段起始位置的位移,简称偏移地址,也叫有效地址EA。段地址与偏移地址都是16位。系统采用下列方法将逻辑地址自动转换为20位的物理地址:物理地址=段地址16+偏移地址例:逻辑地址为2E00H:1246H物理地址=2E00H16+1246H=2E000H+1246H=2F246H每个内存单元具有唯一的物理地址,但可由不同的逻辑地址描述。,返回本节,返回本章,-,46,1.5.4端口对程序员来说,I/O接口电路由接口寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址。端口就是指I/O地址,是微机系统对I/O接口电路中与程序设计有关的寄存器的编号系统实际上就是通过这些端口与外设进行通讯的通常采用十六进制数来表达端口Intel8086支持64K个8位端口其I/O地址可以表示为:0000HFFFFH,返回本节,返回本章,-,47,本章小结,汇编语言是机器语言的符号表示,与机器语言无本质区别。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 演出经纪人之《演出经纪实务》能力测试B卷含答案详解【预热题】
- 2025年教师招聘之《幼儿教师招聘》检测卷包附参考答案详解(能力提升)
- 2025年教师招聘之《幼儿教师招聘》通关练习题和答案附参考答案详解【培优】
- 花烟草养护知识培训内容课件
- 教师招聘之《小学教师招聘》题库检测模拟题(必刷)附答案详解
- 2025年教师招聘之《小学教师招聘》通关试卷提供答案解析审定版附答案详解
- 教师招聘之《小学教师招聘》能力测试备考题含完整答案详解(网校专用)
- 教师招聘之《小学教师招聘》题库(得分题)打印附完整答案详解(易错题)
- 教师招聘之《幼儿教师招聘》复习提分资料及参考答案详解【b卷】
- 2025年教师招聘之《幼儿教师招聘》模拟考试题库B卷及答案详解(必刷)
- 双人合作开店协议书范本
- 质量员模拟题含答案
- 以史为帆明方向+少年立志向未来+课件-2025-2026学年上学期主题班会
- 2025上海科技馆事业单位工作人员招聘10人笔试备考题库及答案解析
- 钢结构工程施工安全管理方案
- 医疗机构员工服务规范手册
- 2025年黑龙江省龙东地区中考英语真题含答案
- 医疗器械生产质量管理规范2025版
- 2025年全国企业员工全面质量管理知识竞赛复习考题及参考答案
- 电气线路问题整改方案(3篇)
- 2025年本币市场交易员资格考试题库带答案
评论
0/150
提交评论