第1章基础知识第1章基础知识1.1汇编语言及特点1.2数据表示1.38086CPU和寄存器组1.4存储器物理地址的形成开始第1章基础知识1.1汇编语言及特点1.1.1机器语言1.1.2汇编语言1.1.3高级语言1.1.4汇编语言的特点返回本章首页第1章基础知识1.1.1机器语言计算机能够直接识别的数据是由二进制数0和1组成的代码。机器指令就是用二进制代码组成的指令,一条机器指令控制计算机完成一个基本操作。用机器语言编写的程序是计算机惟一能够直接识别并执行的程序,而用其他语言编写的程序必须经过翻译才能变换成机器语言程序,所以,机器语言程序被称为目标程序。返回本节第1章基础知识1.1.2汇编语言为了克服机器语言的缺点,人们采用助记符表示机器指令的操作码,用变量代替操作数的存放地址等,这样就形成了汇编语言。所以汇编语言是一种用符号书写的、基本操作与机器指令相对应的、并遵循一定语法规则的计算机语言。用汇编语言编写的程序称为汇编源程序。汇编语言是一种符号语言,比机器语言容易理解和掌握,也容易调试和维护。但是,汇编语言源程序要翻译成机器语言程序才可以由计算机执行。这个翻译的过程称为“汇编”,这种把汇编源程序翻译成目标程序的语言加工程序称为汇编程序。返回本节第1章基础知识1.1.3高级语言汇编语言虽然较机器语言直观,但仍然烦琐难懂。于是人们研制出了高级程序设计语言。高级程序设计语言接近于人类自然语言的语法习惯,与计算机硬件无关,易被用户掌握和使用。目前广泛应用的高级语言有多种,如BASIC、FORTRAN、PASCAL、C、C++等等。返回本节第1章基础知识1.1.4汇编语言的特点(1)汇编语言与处理器密切相关。(2)汇编语言程序效率高。(3)编写汇编语言源程序比编写高级语言源程序烦琐。(4)调试汇编语言程序比调试高级语言程序困难。第1章基础知识汇编语言的主要应用场合:(1)程序执行占用较短的时间,或者占用较小存储容量的场合。(2)程序与计算机硬件密切相关,程序直接控制硬件的场合。(3)需提高大型软件性能的场合。(4)没有合适的高级语言的场合。返回本节第1章基础知识1.2数据表示1.2.1数值数据1.2.2字符数据返回本章首页第1章基础知识1.2.1数值数据数值数据分为有符号数和无符号数。无符号数最高位表示数值,而有符号数最高位表示符号。有符号数有不同的编码方式,常用的是补码。第1章基础知识1.原码最高位表示符号(正数用0,负数用1),其他位表示数值位,称为有符号数的原码表示法。【例1.1】有符号数的原码表示。X=45=00101101B[X]原=00101101BX=-45,[X]原=10101101B原码表示简单易懂,但若是两个异号数相加(或两个同号数相减),就要做减法。为了把减法运算转换为加法运算就引进了反码和补码。第1章基础知识2.反码正数的反码与原码相同,符号位用0表示,数值位值不变。负数的反码符号位用1表示,数值位为原码数值位按位取反形成,即0变1、1变0。【例1.2】有符号数的反码表示。X=45=00101101B,[X]反=00101101BX=-45,[X]反=11010010B第1章基础知识3.补码正数的补码与原码相同,即符号位用0表示,数值位值不变。负数的补码为反码加1形成。【例1.3】有符号数的补码表示。X=45=00101101B[X]补=00101101BX=-45[X]补=11010011B第1章基础知识4.符号扩展在数据处理时,有时需要把8位二进制数扩展成16位二进制数,当要扩展的数是无符号数时,可在最高位前扩展8个0。如果要扩展的数是补码形式的有符号数,那么,就要进行符号位的扩展,符号扩展后,其结果仍是该数的补码。【例1.4】符号扩展表示。21的8位二进制补码为:00010101符号扩展后21的16位二进制补码为:0000000000010101。00010101和0000000000010101都是21的补码。第1章基础知识5.数据的表示范围和大小n位二进制数能够表示的无符号整数的范围是:0≤I≤2n-1n位二进制数能够表示的有符号整数的范围是:-2(n-1)≤I≤+2(n-1)-1第1章基础知识6.十六进制表示由于二进制数的基数太小,书写和阅读都不方便.而十六进制的基数16=24,这样二进制数与十六进制之间能方便地转换。因此,习惯把二进制数改写成十六进制数,在汇编语言程序设计时尤其如此。在书写时,为了区别于十六进制和二进制数,通常在十六进制数后加字母H。返回本节第1章基础知识1.2.2字符数据1.ASCII码2.BCD码第1章基础知识1.ASCII码标准ASCII码用7位二进制数编码,共有128个。计算机存储器基本单位为8位,ASCII码的最高位通常为0,通信时,最高位用作奇偶校验位。ASCII码表中的前32个和最后1个编码是不能显示的控制字符,用于表示某种操作。ASCII码表中20H后的94个编码是可显示和打印的字符,其中包括数码0~9,英文字母,标点符号等。第1章基础知识2.BCD码虽然二进制数实现容易,但不符合人们的使用习惯,且书写阅读不方便,所以在计算机输入输出时通常还是采用十进制来表示数,这就需要实现十进制与二进制间的转换。为了转换方便,常采用二进制编码的十进制,简称为BCD码。BCD码就是用4位二进制数表示1位十进制整数。表示的方法有多种,常用的是8421BCD码,它的表示规律如表1.1所示。第1章基础知识表1.1十进制数字的8421BCD码十进制数字8421BCD码十进制数字8421BCD码00000501011000160110200107011130011810004010091001返回本节第1章基础知识1.38086CPU和寄存器组1.3.1Intel8086CPU内部结构1.3.28086寄存器组1.3.3标志寄存器返回本章首页第1章基础知识1.3.1Intel8086CPU内部结构图1.28086CPU内部结构图1.28086CPU内部结构返回本节第1章基础知识1.3.28086寄存器组图1.38086CPU寄存器分组第1章基础知识1.通用寄存器(1)数据寄存器数据寄存器共有4个寄存器AX、BX、CX、DX,用来保存操作数或运算结果等信息。AX寄存器称为累加器。使用频度最高,用于算术、逻辑运算以及与外设传送信息等。BX寄存器称为基址寄存器。常用于存放存储器地址。CX寄存器称为计数器。一般作为循环或串操作等指令中的隐含计数器。DX寄存器称为数据寄存器。常用来存放双字数据的高16位,或存放外设端口地址。第1章基础知识变址和指针寄存器包括SI、DI、SP、BP4个16位寄存器,主要用于存放某个存储单元的偏移地址。SI是源变址寄存器,DI是目的变址寄存器,在字符串操作中,SI和DI都具有自动增量或减量的功能。SP为堆栈指针寄存器,用于存放当前堆栈段中栈顶的偏移地址;BP为基址指针寄存器,用于存放堆栈段中某一存储单元的偏移地址。(2)变址和指针寄存器第1章基础知识2.段寄存器8086CPU的4个16位的段寄存器分别称为代码段寄存器CS,数据段寄存器DS,堆栈段寄存器SS,附加数据段寄存器ES。段寄存器用来确定该段在内存中的起始地址。代码段用来存放程序的指令序列。CS存放代码段的段首址,指令指针寄存器IP指示代码段中指令的偏移地址。第1章基础知识3.指令指针8086CPU中的指令指针IP,它总是保存下一次将要从主存中取出指令的偏移地址,偏移地址的值为该指令到所在段段首址的字节距离。在目标程序运行时,IP的内容由微处理器硬件自动设置,程序不能直接访问IP,但一些指令却可改变IP的值,如转移指令、子程序调用指令等。返回本节第1章基础知识1.3.3标志寄存器8086CPU中有一个很重要的16位标志寄存器,它包含9个标志位,主要用于保存一条指令执行后,CPU所处状态信息及运算结果的特征。1.条件标志2.状态控制标志第1章基础知识1.条件标志(1)进位标志CF(2)零标志ZF(3)符号标志SF(4)溢出标志OF(5)奇偶标志PF(6)辅助进位标志AF第1章基础知识2.状态控制标志(1)方向标志DF(2)中断允许标志IF(3)追踪标志TF返回本节第1章基础知识1.4存储器物理地址的形成1.4.1存储器1.4.2存储器单元的地址和内容1.4.3物理地址的形成返回本章首页第1章基础知识1.4.1存储器存储器是计算机的记忆部件,用来存放程序和数据。按所在的位置,存储器可以分成主存储器和辅助存储器。主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成,其成本高,容量小,但速度快。辅助存储器可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低,容量大,但速度较慢。返回本节第1章基础知识1.4.2存储器单元的地址和内容存储单元地址:8086系统中,为了标识和存取每一个存储单元,给每个存储单元规定一个编号,这就是存储单元地址。存储单元的内容:一个存储单元中存放的信息称为该存储单元的内容。第1章基础知识图1.4表明了存储器中部分存储单元存放信息情况。从图1.4可看到,地址为34560H的字节的存储单元中的内容是34H,而地址为34561H的字节存储单元中的内容是12H。返回本节第1章基础知识1.4.3物理地址的形成8086CPU的地址线是20位的,这样最大可寻址空间应为220=1MB,其物理地址范围从00000H~FFFFFH。而8086CPU寄存器都是16位的。那么,这1MB空间如何用16位寄存器表达呢?根据要求可把1M字节地址空间划成若干逻辑段。每个逻辑段必须满足两个条件:一是逻辑段的起始地址(简称段首址)必须是16的倍数;二是逻辑段的最大长度为64K。按照这两个条件,1M字节地址空间最多可划分成64K个逻辑段,最少也要划分成16个逻辑段。逻辑段与逻辑段可以相连,也可以不连,还可以重叠。第1章基础知识【例1.5】各独立段的分配情况示例。设CS=B000H、DS=1CDEH、SS=4200H、ES=0150H,它们分别为代码段、数据段、堆栈段和附加段的段首址。自每个段首址开始,各段均占64KB的范围,各段之间互不重叠。如图1.5所示。第1章基础知识第1章基础知识【例1.6】各段相互重叠情况示例。设CS=0200H、DS=0400H、SS=0480H,这样代码段、数据段和堆栈段的物理首地址分别为02000H、04000H和04800H。其中代码段占8KB地址空间,数据段占2KB,堆栈段占256B,SP=0100H。如图1.6所示。第1章基础知识图1.6各段重叠存储单元分配图返回本节第1章基础知识Thankyouverymuch!本章到此结束,谢谢您的光临!返回本章首页结束