您好,欢迎访问三七文档
学习资源微辅网华中科技大学课程介绍什么是汇编语言?为什么要学汇编语言?怎样学好汇编语言?什么是汇编语言?什么是汇编语言什么是汇编语言.modelsmall.stack.datamsgdbHello,world!,0dh,0ah,$.code.startupmovdx,offsetmsgmovah,9int21h.exit0end为什么要学习汇编语言解密程序、跟踪与反跟踪、病毒木马分析和防止的首选理解C语言程序的最好途径了解操作系统运行细节的最佳方式特定场合下编写程序的必然选择了解计算机工作原理和后继课程学习的基础怎样学好汇编语言兴趣是最好的老师深刻理解计算机工作的本质掌握语法:指令格式(关键:寻址方式)掌握语义:指令功能(关键:分类记忆)灵活应用:阅读、编写程序(关键:实践)考核要求平时成绩(作业、出勤、上机练习编程情况)10%期中成绩()20%期末成绩()70%第1章汇编语言基础知识本章主要内容:了解程序设计语言的发展及特点了解数据在计算机中的存储表示理解计算机的工作原理理解并掌握8086寄存器的功能与特点理解并掌握8086的寻址方式第1章汇编语言基础知识本章学习的难点与重点汇编语言、汇编源程序、汇编程序的概念8086寄存器的名称与用途物理地址与逻辑地址的概念、物理地址的形成有符号数、无符号数及其计算对标志寄存器的影响8086的7种寻址方式第1讲汇编语言基础知识1.1计算机系统概述1.2数据表示1.3Intel80x86处理器1.4微型计算机系统1.58086的寻址方式1.1计算机系统概述1、计算机系统构成计算机系统硬件系统软件系统系统软件:如操作系统支撑软件:如编译程序、汇编程序、DBMS应用软件:如Office、图书馆管理系统1.1计算机系统概述2、计算机程序设计语言(1)机器语言机器指令:指挥计算机完成某一基本操作的命令。特点:由0和1组成的二进制代码为被计算机直接识别并执行依赖于某一类型的机器,依赖于硬件格式:操作码明确了运算种类地址码指明了操作数和结果存放的位置例如:100+256B864000500011.1计算机系统概述指令系统:某特定处理器支持的所有机器指令的集合就是该处理器的指令系统。机器语言:机器指令系统以及使用它们编写程序的规则被称为机器语言。机器语言程序:用机器语言编写的程序。它是计算机唯一能够直接识别并执行的程序,被称为目标程序。优点:能被计算机硬件直接识别并执行,效率高缺点:难理解、易出错也难以发现错误,并且依赖于硬件,可移植性差1.1计算机系统概述(2)汇编语言汇编指令:用助记符表示的指令汇编语言:用指令助记符书写、其主要操作与机器指令一一对应、并遵循一定语法规则的语言。汇编语言程序:用汇编语言书写的程序,又称为汇编源程序汇编程序:将汇编语言程序翻译成机器代码目标模块的程序Movax,100Addax,256注意:汇编程序与汇编语言程序是不同的概念!编辑程序、汇编程序和连接程序编辑程序:录入、修改源程序的文本编辑软件。汇编语言程序输入到计算机后以ASM作为文件扩展名。汇编程序:将汇编语言源程序翻译成机器代码。我们采用微软的MASM6.11.EXE。连接程序:将汇编后得到的扩展名为.OBJ文件连接得到计算机可以执行的.EXE文件。我们使用的连接程序是LINK.EXE。编辑程序、汇编程序和连接程序源程序汇编目标程序连接执行文件汇编程序连接程序1.1计算机系统概述(3)高级语言由语句组成优点:接近人类自然语言的语法习惯和数学表达,与硬件无关,可移植性强缺点:必须经过编译或解释成对应的机器语言程序才能被执行编译—生成目标程序解释—对一条语句进行翻译后就执行,不会生成目标程序100+256汇编语言和高级语言的比较-1汇编语言与处理器密切相关↘汇编语言程序的通用性、可移植性较差高级语言与具体计算机无关↗高级语言程序是标准化语言,可在多种计算机上编译后执行汇编语言:×高级语言:√汇编语言和高级语言的比较-2汇编语言功能有限、涉及硬件细节↘程序编写比较繁琐,调试比较困难高级语言提供了强大的功能,不必关心琐碎问题↗类似自然语言的语法,易于掌握和应用汇编语言:×高级语言:√汇编语言和高级语言的比较-3汇编语言本质上就是机器语言↗可以直接、有效地控制计算机硬件↗易于产生速度快、容量小的高效率目标程序高级语言不针对具体计算机系统↘不易直接控制计算机的各种操作↘目标程序比较庞大、运行速度较慢汇编语言:√高级语言:×汇编语言的特点汇编语言的优点:直接控制计算机硬件部件编写“时间”和“空间”两方面最有效程序汇编语言的缺点:与处理器密切有关需要熟悉计算机硬件系统、考虑许多细节编写繁琐,调试、维护、交流和移植困难汇编语言:?高级语言:?汇编语言和高级语言的混合编程汇编语言的优点使得它在程序设计中占有重要的位置,不可被取代汇编语言的缺点使得人们主要采用高级语言进行程序开发工作有时需要采用高级语言和汇编语言混合编程,互相取长补短,更好地解决实际问题混合编程取长补短汇编语言的应用场合程序要具有较快的执行时间,或者只能占用较小的存储容量程序与计算机硬件密切相关,程序要直接、有效地控制硬件大型软件需要提高性能、优化处理的部分没有合适的高级语言、或只能采用汇编语言的时候分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等等汇编语言的作用实在不小!1.2数据表示1.2.1数制1.2.2编码1.2.3有符号数的表示法1.2.4二进制运算1.2.1数制常用的进制有二、八、十、十六等十进制采用的数符有:0、1、2、3、4、5、6、7、8、9二进制采用的数符有:0、1计算机中的数据都是以二进制形式存储的八进制采用的数符有:0、1、2、3、4、5、6、7十六进制采用的数符有:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F用于表达二进制数,相互转换简单十进制数转换为r进制数整数部分转换:除以r取余法十进制数整数部分不断除以基数2、8或16,并记下余数,直到商为0为止由最后一个余数起逆向取各个余数,则为转换成的二进制、八进制和十六进制数例:(137)D=()B(137)D=()H1000100189十进制数转换为r进制数小数部分转换:乘以r取整法分别乘以各自的基数,记录整数部分,直到小数部分为0为止或满足指定的精度例:(0.8125)D=()B(0.8125)D=()H0.11010.Dr制数转换为十进制数方法:求出按权展开多项式的合即可二进制数转换为十进制数(0011.1010)B=1×21+1×20+1×2-1+0×2-2+1×2-3=(3.625)D十六进制数转换为十进制数(1.2)H=1×160+2×16-1=(1.125)D二进制与十六进制的互换二进制→十六进制从小数点开始分别向左、向右按每4位一组划分,不足4位的组以“0”补足(整数部分在高位补0,小数部分在低位补0),然后将每组4位二进制数转换为等值的一位十六进制数。例:(1101101110.110101)B=(.)B十六进制→二进制每位十六进制可用4位二进制数表示。例:(2C1D.3)D=()B1110E01106001131101D01004=(36E.D4)H001021100C000111101D.001131.2.2编码1、BCD码(BinaryCodedDecimal)二进制编码的十进制数一个十进制数位0~9用4位二进制编码来表示压缩BCD码:一个字节表达两位BCD码非压缩BCD码:一个字节表达一位BCD码(低4位表达数值,高4位常设置为0)BCD码很直观BCD码:0100100101111000.000101001001十进制真值:4978.149BCD码便于输入输出,表达数值准确1.2.2编码2、ASCII码(美国标准信息交换码)标准ASCII码用7位二进制编码,有128个不可显示的控制字符前32个和最后一个编码回车CR:0DH换行LF:0AH响铃BEL:07H可显示和打印的字符:20H后的94个编码数码0~9:30H~39H大写字母A~Z:41H~5AH小写字母a~z:61H~7AH空格:20H扩展ASCII码:最高D7位为11.2.3有符号数的表示法真值:现实中真实的数值机器数:计算机中用0和1数码组合表达的数值无符号数:只表达0和正整数的定点整数有符号数:表达负整数、0和正整数的定点整数符号位需要占用一个位常用机器数的最高位0表示正数、1表示负数带符号数的原码表示(1)原码规定正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值。例:求出X1=(+102)10,X2=(-43)10的原码[X1]原=(01100110)2[X2]原=(10101011)2原码表示的整数范围是-(2n-1-1)——+(2n-1-1),其中n为机器字长。+0和-0的表示方法不同。带符号数的反码表示(2)反码对于一个带符号的数来说,正数的反码与其原码相同,负数的反码为其原码除符号位以外的各位按位取反。例:求出X1=(+102)10,X2=(-43)10的反码[X1]反=(01100110)2[X2]反=(11010100)2负数的反码与负数的原码有很大的区别,反码通常用作求补码过程中的中间形式。反码表示的整数范围与原码相同。0也有两种表示形式。带符号数的补码表示(3)补码对于一个带符号的数来说,正数的补码与其原码相同,负数的补码为其反码加1。例:求出X1=(+102)10,X2=(-43)10的补码[X1]补=(01100110)2[X2]补=(11010101)20只有1种表示形式。补码表示的整数范围是-2n-1——+(2n-1-1),其中n为机器字长。采用补码表示数据时,两数相减,可先求减数相反数的补码,然后再和被减数做加法运算。原码反码补码正数符号位0+真值的数值部分符号位0+真值的数值部分符号位0+真值的数值部分负数符号位1+真值的数值部分符号位1+真值的数值部分按位取反符号位1+真值的数值部分按位取反+1带符号数的原码、反码、补码表示:带符号数的补码表示带符号数的补码表示(4)补码与真值之间的转换:给定机器数的真值可以通过补码的定义来完成真值到补码的转换,若已知某数的补码求其真值,计算方法如下:正数补码的真值等于补码的本身;负数补码转换为其真值时,将补码按位求反末位加1,即可得到该负数补码对应的真值。带符号数的补码表示例:给定[X]补码=(01011001)2,求真值X;给定[X]补码=(11011010)2,求真值X。(1)由于[X]补码代表的数是正数,则其真值:X=+1011001=+(1×26+1×24+1×23+1×20)=+(89)10(2)由于[X]补码代表的数是负数,则其真值:X=-([1011010]求反+1)=-(0100101+1)=-(0100110)=-(1×25+1×22+1×21)=-(38)10定点数定点数是小数点位置固定的数。根据小数点隐含固定位置不同,可分为:定点小数:定点整数:例如:(-1011011)2表示为符号位数值部分·小数点位置符号位数值部分·小数点位置101001011.2.3有符号数的表示法.小数点浮点数浮点数是小数点位置不固定,根据需要而浮动的数。它既有整数部分又有小数部分。通过阶码和尾数表示:N=2±E×(±S)阶符阶码尾符尾数阶码部分尾数部分阶码(E):补码定点整数,表示该数小数点位置尾数(S):补码定点小数,表示数据的有效位数1.2.3有符号数的表示法例:二进制数+101.1和-10.11的浮点表示形式为阶码尾数阶符尾符浮点
本文标题:汇编语言基础知识.
链接地址:https://www.777doc.com/doc-2279425 .html