版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3/24/202228086/80888086/8088和和ARMARM核核汇编语言程序设计汇编语言程序设计3/24/20223汇编语言是计算机系统提供给用户的最快、最有效的语言,也是能对硬件直接编程的语言。汇编语言是计算机系统提供给用户的最快、最有效的语言,也是能对硬件直接编程的语言。因此,对空间和时间要求很高的程序,或需要直接控制硬件的程序,必须使用汇编语因此,对空间和时间要求很高的程序,或需要直接控制硬件的程序,必须使用汇编语言进行程序设计。言进行程序设计。汇编语言程序设计汇编语言程序设计是计算机专业基础课程。本课程结合是计算机专业基础课程。本课程结合PC机来进行教学。机来进行教学。第一
2、、二章为第一、二章为基础知识基础知识,包括计算机中数和字符的表示方法,计算机的编程结构及工作方式等。,包括计算机中数和字符的表示方法,计算机的编程结构及工作方式等。第第三章介绍指令系统和寻址方式。第四章介绍伪操作和汇编语言程序格式三章介绍指令系统和寻址方式。第四章介绍伪操作和汇编语言程序格式。第五、六章第五、六章说明循环、分支、子程序结构和程序设计的基本方法说明循环、分支、子程序结构和程序设计的基本方法,并介绍起泡排序、折半查找等,并介绍起泡排序、折半查找等多种算法的程序实例。多种算法的程序实例。第七章说明第七章说明BIOS和和DOS系统功能调用的使用方法系统功能调用的使用方法。第八章介绍第八
3、章介绍宏、重复和条件汇编等高级汇编语言技术宏、重复和条件汇编等高级汇编语言技术。第九章介绍第九章介绍I/O程序设计方法程序设计方法,重点说明中,重点说明中断原理、中断过程及中断程序设计方法。断原理、中断过程及中断程序设计方法。第十章主要说明多模块程序设计技术第十章主要说明多模块程序设计技术以及汇以及汇编语言程序与高级语言程序的连接技术。最后简单介绍编语言程序与高级语言程序的连接技术。最后简单介绍80X86新增加的指令、寻址方式新增加的指令、寻址方式以及编程模式。以及编程模式。 3/24/20224学习目标学习目标 通过学习本课程要求同学们了解Intel系列微型机的基本组成以及计算机中数和字符的
4、表示方法;熟练掌握Intel8086指令系统及寻址方式,伪指令及汇编语言程序格式;掌握基本程序设计方法、I/O程序设计方法以及DOS和BIOS调用;掌握宏汇编的基本概念和方法;了解汇编语言程序与高级语言程序的连接方法,熟悉上机操作和程序调试技术,初步具备软件设计的能力。 3/24/20225 1机器语言机器语言计算机能够直接识别由0和1组成的二进制代码,机器指令就是用二进制编码的指令,每种处理器都有各自的机器指令集,指令集及使用它们编写程序的规则被称为机器语言。 3/24/20226 2汇编语言汇编语言汇编语言是一种符号语言,几乎和机器语言一一对应,它采用便于记忆、并能描述指令功能的符号来表示
5、机器指令,比机器语言容易理解和掌握。 3/24/20227 3汇编语言源程序汇编语言源程序用汇编语言编写的程序称为汇编语言源程序,简称源程序。 3/24/20228 4汇编程序汇编程序masm汇编语言源程序要翻译成机器语言程序后才能由处理器执行,这个翻译的过程称为汇编,完成汇编工作的程序就是汇编程序。 3/24/20229词汇表词汇表 5二进制位二进制位计算机存储信息的基本单位,一位可存储一个二进制数:0或1。6字节字节8位二进制数组成一个字节,在存储器中以字节为单位存储信息。7字字2个字节组成一个字。8双字双字2个字组成一个双字。 3/24/202210 9ASCII码码ASCII码是美国信
6、息交换标准代码的简称,它用一个字节来表示一个字符,其中低7位为字符的ASCII值,最高位一般用作校验位。10BCD码码是一种用二进制编码的十进制数,又称为二十进制数,它用4位二进制数表示一个十进制数码,由于这4位二进制数的权为8421,所以BCD码又称8421码。11机器数机器数 计算机中的数用二进制表示,数的符号也用二进制表示,一般用最高有效位来表示数的符号,正数用0表示,负数用1表示。把一个数连同其符号在内在机器中的表示加以数值化,这样的数称为机器数。3/24/202211 12补码补码机器数可用不同的码制来表示,补码表示法是最常用的一种,正数采用符号:绝对值表示,即数的最高有效位为0,数
7、的其余部分则表示数的绝对值;负数的表示要麻烦一些,先写出与该负数相对应的正数的补码表示,然后将其按位求反,最后在末位加1,就可以得到该负数的补码表示了。 3/24/202212 13中央处理单元中央处理单元CPU中央处理单元包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令;寄存器组用来存放计算过程中所需要或所得到的各种信息。 3/24/202213 14存储器存储器存储器是计算机的记忆部件,可分为主存储器和辅助存储器,分别简称为主存(内存)和辅存(外存)。主存存放当前正在执行的程序和使用的数据,CPU可以直接存
8、取,它由半导体存储器芯片构成,成本高,容量小,但速度快;辅存可用于长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,成本低,容量大,但速度较慢。3/24/202214词汇表词汇表 15外部设备外部设备外部设备是实现人机交互和机间通信的一些机电设备,在微机系统中,常用的输入设备有键盘、鼠标等,输出设备有显示器、打印机等。 16指令系统指令系统计算机是通过指令序列来解决问题的,每种计算机都有它支持的指令集合,计算机的指令系统就是指该计算机能够执行的全部指令的集合。3/24/202215词汇表词汇表 17寻址方式寻址方式计算机中的指令由操作码字段和操作数字段两部分组成,操作码
9、字段指示计算机所要执行的操作,操作数字段指出在指令执行操作的过程中所需要的操作数。操作数可以是一个具体的数值,也可以是存放数据的寄存器或存储器地址,寻找操作数的方式称为寻址方式。18存储器地址存储器地址在存储器里以字节为单位存储信息,为了能正确地存取信息,每一个字节单元被赋予一个地址,即存储器地址。地址编号从0开始,顺序加1,是一个无符号二进制整数,常用十六进制表示。3/24/202216词汇表词汇表 19段地址段地址8086CPU将1MB的存储器空间分成许多逻辑段,每个段最大限制为64KB,段地址就是逻辑段在主存中的起始位置。为了能用16位寄存器表示段地址,8086规定段地址必须是模16地址
10、,即为xxxx0H形式,省略低4位0,段地址就可以用16位数据表示,它通常被保存在16位的段寄存器中。20偏移地址偏移地址主存单元距离段起始位置的偏移量简称偏移地址,由于限定每段不超过64KB,所以偏移地址也可以用16位数据表示。 3/24/202217词汇表词汇表 21物理地址物理地址在1M字节的存储器里,每一个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址,把段地址左移4位再加上偏移地址就形成物理地址。22代码段代码段程序员在编制程序时要把存储器划分成段,代码段用来存放程序的指令序列,代码段的段地址存放在CS中,指令指针寄存器IP指示代码段中指令的偏移地址,处理器利用CS:IP
11、取得下一条要执行的指令。3/24/202218词汇表词汇表 23数据段数据段数据段存放当前运行程序所用的数据,数据段的段地址存放在DS中。24附加段附加段附加段是附加的数据段,也用于数据的保存,另外,串操作指令将附加段作为其目的操作数的存放区域。附加段的段地址存放在ES中。25堆栈段堆栈段堆栈段是堆栈所在的主存区域,堆栈段的段地址存放在SS中,堆栈指针寄存器SP指示堆栈栈顶的偏移地址,处理器利用SS:SP操作堆栈中的数据。 3/24/202219 26堆栈堆栈堆栈是一个“后进先出”的主存区域,位于堆栈段中,使用SS段寄存器记录其段地址。它只有一个出入口,即当前栈顶,栈顶是地址较小的一端(低端)
12、,它用堆栈指针寄存器SP指定。堆栈有两种以字为单位的基本操作,对应两条基本指令:进栈指令PUSH和出栈指令POP。27伪指令伪指令汇编语言程序的语句除指令外还包括伪指令和宏指令,伪指令又称为伪操作,它不象机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,完成诸如数据定义、分配存储区、指示程序结束等功能。 28宏指令宏指令宏是源程序中一段有独立功能的程序代码,它只需要在源程序中定义一次,就可以多次调用,调用时只需要用一个宏指令语句就可以了。宏指令是用户自定义的指令,在编程时将多次使用的功能用一条宏指令来代替。 3/24/202220词汇表词汇表 2
13、9子程序子程序子程序又称为过程,它相当于高级语言中的过程和函数。在一个程序的不同部分,往往要用到类似的程序段,这些程序段的功能和结构形式都相同,只是某些变量的赋值不同,此时就可以把这些程序段写成子程序形式,以便需要时可以调用它;某些常用的特定功能的程序段也可编制成子程序的形式供用户使用。 30中断中断中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作,这些引起中断的事件称为中断源,它们可能是来自外设的输入输出请求,也可能是计算机的一些异常事故或其它内部原因。 3/24/202221词汇表词汇表 31中断处理程序中断处理程序当中断发生时,处理器中止当前正在运行的程序,而转到处理特殊事件
14、的程序段中去执行,这种处理中断的子程序就是中断处理程序,又称为中断服务程序。中断处理程序的入口地址被安排在中断向量表中。32BIOS中断中断在存储器系统中,从地址0FE000H开始的8K ROM中装有BIOS(Basic Input/Output System)例行程序。驻留在ROM中的基本输入输出程序BIOS提供了系统加电自检、引导装入、主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。BIOS中断给程序员编程带来很大方便,程序员不必了解硬件I/O接口的特性,可直接用指令设置参数,然后中断调用BIOS中的程序。 3/24/202222(1) 计算机内部是采用什么计数制来表示
15、数和信息的?(2) 二进制数和十六进制数是如何相互转换的?(3) 十进制数转换为二进制数有几种方法?(4) 计算机中如何表示正负数的?(5) 计算机中的整数有几种表示方法?最常用的是哪一种码制?(6) 基本的逻辑运算包括哪几种运算?为什么说逻辑运算是按位操作的?(7) 求补的运算规则是什么?(8) 计算机中是采用什么代码来表示字符的?3/24/202223了解计算机中数和字符表示方法;了解不同基数的数之间的转换方法;熟悉计算机中补码数的算术运算和逻辑运算规则。计算机补码表示;求补运算和补码加减运算。计算机补码表示;求补运算和补码加减运算。课堂讲授、小结讲评 2本章主要介绍了计算机的数制及其相互
16、转换;计算机数的补码表示;求补运算;计算机中补码加减运算;基本逻辑运算。1.1、汇编语言的主要特点有哪些?、汇编语言的主要特点有哪些?1.2、汇编语言适用于哪些领域,在哪些领域使用不太方、汇编语言适用于哪些领域,在哪些领域使用不太方便?便?1.3、在汇编语言中,如何表示二进制、八进制、十进制、在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值?和十六进制的数值?1.4、在计算机中,如何表示正、负数?在保持数值大小、在计算机中,如何表示正、负数?在保持数值大小不变的情况下,如何把位数少的二进制数值扩展成位数不变的情况下,如何把位数少的二进制数值扩展成位数较多的二进制数值?较多的二进制数
17、值?1.5、在、在ASCII表,字符表,字符09与数值与数值09之间编码规律是之间编码规律是什么?大写字母和小写字母之间的编码规律是什么?什么?大写字母和小写字母之间的编码规律是什么?1.6、汇编语言中的基本数据类型有哪些?它与高级程序、汇编语言中的基本数据类型有哪些?它与高级程序设计语言设计语言(如:如:C语言语言)中的数据类型的对应关系是什么?中的数据类型的对应关系是什么?3/24/2022241.2* 进位计数制及其转换1.3 计算机中数和字符的表示方法3/24/202225 自然语言是具有特定语音和语法等规范的、用于人类表自然语言是具有特定语音和语法等规范的、用于人类表达思想并实现相互
18、交流的工具。人与人之间只有使用同一种达思想并实现相互交流的工具。人与人之间只有使用同一种语言才能进行直接交流,否则就必须通过翻译。要使计算机语言才能进行直接交流,否则就必须通过翻译。要使计算机为人类服务,人们就必须借助某种工具,告诉计算机为人类服务,人们就必须借助某种工具,告诉计算机“做什做什么么”, ,甚至甚至“怎么做怎么做”,这种工具就是程序设计语言这种工具就是程序设计语言。 程序设计语言通常分为三类:程序设计语言通常分为三类:机器语言机器语言、汇编语言和高汇编语言和高级语言级语言。而前两种语言与机器密切相关,统称为。而前两种语言与机器密切相关,统称为低级语言低级语言。1.1.1 1.1.
19、1 汇编语言基本概念汇编语言基本概念3/24/202226 机器语言机器语言FORTRANFORTRANBASICBASICCOBOLCOBOLPASCALPASCALC/C+C/C+JAVAJAVA.汇编语言汇编语言高级语言高级语言1.1.1 1.1.1 汇编语言基本概念汇编语言基本概念3/24/202227,一条机,一条机器指令控制计算机完成一个基本操作。器指令控制计算机完成一个基本操作。,而用其他语言编写的程序必须经过翻译才,而用其他语言编写的程序必须经过翻译才能变换成机器语言程序,所以,机器语言程序被称为能变换成机器语言程序,所以,机器语言程序被称为目目标程序标程序。机器语言机器语言1
20、.1.1 1.1.1 汇编语言基本概念汇编语言基本概念3/24/202228 为了克服机器语言的缺点,人们采用为了克服机器语言的缺点,人们采用表示机器指令表示机器指令的操作码的操作码, ,用用代替操作数的存放地址等,这样就形成了汇代替操作数的存放地址等,这样就形成了汇编语言。编语言。 。 汇编语言是一种符号语言,比机器语言容易理解和掌握,也汇编语言是一种符号语言,比机器语言容易理解和掌握,也容易调试和维护。但是,容易调试和维护。但是,。这个翻译的过程称为。这个翻译的过程称为“”,这种,这种。 1.1.1 1.1.1 汇编语言基本概念汇编语言基本概念3/24/202229例如,在例如,在8086
21、8086机器下,分别用汇编语言和机器语言计机器下,分别用汇编语言和机器语言计算算10+2010+20的程序代码如下:的程序代码如下: MOV AL,10 B0 0A ADD AL,20 04 14显然,使用汇编语言编写的程序要比机器语言更容易理显然,使用汇编语言编写的程序要比机器语言更容易理解。解。 1.1.1 1.1.1 汇编语言基本概念汇编语言基本概念3/24/202230 汇编语言虽然较机器语言直观,但仍然烦琐难懂。于是汇编语言虽然较机器语言直观,但仍然烦琐难懂。于是人们研制出了高级程序设计语言。人们研制出了高级程序设计语言。目前广泛应用的高级语言有多种,如。目前广泛应用的高级语言有多种
22、,如等等。等等。高级语言高级语言1.1.1 1.1.1 汇编语言基本概念汇编语言基本概念3/24/202231,通常是为特定的计算机或计算,通常是为特定的计算机或计算机系列机系列的。的。,具有,具有的特点。的特点。,如磁盘,如磁盘、存储器、存储器、CPUCPU、I/OI/O端口等。端口等。,是,是的的程序设计语言。程序设计语言。经常与高级语言配合使用,应用十分广泛。经常与高级语言配合使用,应用十分广泛。1.1.2 1.1.2 汇编语言的特点汇编语言的特点 3/24/202232#include stdafx.h #include stdio.h int main(int argc, char*
23、 argv) int a,b,c; a=1; b=2; c=a+b; printf(“c=%dn,c); return 0; C C 语言实现语言实现1.1.2 1.1.2 汇编语言的特点汇编语言的特点 3/24/202233汇编汇编 语言实现语言实现data segmentdata segment a db ? a db ? b db ? b db ? c db ? c db ?string db c=$string db c=$data endsdata endscode segmentcode segmentmain proc farmain proc far assume cs:cod
24、e, ds:data, assume cs:code, ds:data, es:dataes:datastart:start: push dspush ds sub ax,ax sub ax,ax push ax push ax mov ax,data mov ax,data mov ds,ax mov ds,ax mov es,ax mov es,axmov a,1mov a,1 mov b,2 mov b,2 mov al,a mov al,a add al,b add al,b mov c,al mov c,al lea dx,stringlea dx,string mov ah,09
25、mov ah,09 int 21h int 21h add c,30hadd c,30h mov dl,c mov dl,c mov ah,2 mov ah,2 int 21h int 21h mov dl,0ah mov dl,0ah int 21h int 21h mov dl,0dh mov dl,0dh int 21h int 21h ret retmain endpmain endpcode endscode ends end start end start1.1.2 1.1.2 汇编语言的特点汇编语言的特点 3/24/202234建议:建议: 充分注意充分注意“汇编汇编”课实践性强
26、的特点;课实践性强的特点; 多读程序多读程序, ,多写程序多写程序, ,多上机调试程序;多上机调试程序; 熟悉熟悉PCPC机的编程结构;机的编程结构; 掌握汇编语言及其程序设计的基本概念、掌握汇编语言及其程序设计的基本概念、方法和技巧方法和技巧。1.1.2 1.1.2 汇编语言的特点汇编语言的特点 3/24/2022351.1 汇编语言概述1.3 计算机中数和字符的表示方法3/24/202236 计算机内部的信息分为两大类:计算机内部的信息分为两大类:。控制。控制信息是一系列的控制命令,用于指挥计算机如何操作;数据信息信息是一系列的控制命令,用于指挥计算机如何操作;数据信息是计算机操作的对象,
27、一般又可分为数值数据和非数值数据。是计算机操作的对象,一般又可分为数值数据和非数值数据。 对计算机而言,不论是控制命令还是数据,它们都要用对计算机而言,不论是控制命令还是数据,它们都要用“0”和和“1”两个基本符号即基两个基本符号即基2码来编码表示,这是由于以下三码来编码表示,这是由于以下三个原因:个原因:例如,用高、低两个电位表例如,用高、低两个电位表示示“1”和和“0”,或用脉冲的有、无表示,或用脉冲的有、无表示“1”和和“0” 等等,可靠等等,可靠性都较高。性都较高。( 因此,不论是什么信息,在输入计算机内部时,都必须用基因此,不论是什么信息,在输入计算机内部时,都必须用基2码编码表示,
28、以方便存储、传送和处理。码编码表示,以方便存储、传送和处理。 简单介绍,同学自修简单介绍,同学自修3/24/202237预预 备备 知知 识识存储容量存储容量1K = 1024B = 21K = 1024B = 210 10 (KiloKilo) 1M = 1024K = 21M = 1024K = 22020 (MegaMega) 1G = 1024M = 21G = 1024M = 230 30 (GigaGiga)1 1个二进制位:个二进制位:bitbit(比特)(比特)8 8个二进制位:个二进制位:ByteByte (字节)(字节) 1Byte = 8bit 1Byte = 8bit2
29、 2个字节:个字节: Word Word (字)(字) 1Word = 2Byte = 16bit 1Word = 2Byte = 16bit3/24/2022381.2.1 1.2.1 数与数制数与数制 数数 制制 基基 数数 数数 码码 2 0, 1 2 0, 1 8 0, 1, 2, 3, 4, 5, 6, 7 8 0, 1, 2, 3, 4, 5, 6, 7 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16 0, 1, 2, 3, 4,
30、5, 6, 7, 8, 9, A, B, C, D, E, F A, B, C, D, E, F 11012 = 12 3 + 12 2 + 12 0 = 1310 1001, 0001, 1000, 0111 9 1 8 7 = 9 16 3 + 1 16 2 + 8 16 1 + 7 16 03/24/202239: NN = = K Ki i * * r ri i 其中:其中:ni=-m1.2.1 1.2.1 数与数制数与数制 3/24/202240 为了区别不同的计数制,可采用下列两种方法:为了区别不同的计数制,可采用下列两种方法:本书约定采用大写字母形式。本书约定采用大写字母形式。如
31、:如:1100011B1100011B。B B后缀表示为二进制数(后缀表示为二进制数(BinaryBinary)。)。2357O2357O。OO后缀表示为八进制数(后缀表示为八进制数(OctalOctal)。由于英文字母)。由于英文字母OO容易和零误会,所以也可以用容易和零误会,所以也可以用QQ来表示八进制。来表示八进制。1000D1000D。D D后缀表示为十进制数(后缀表示为十进制数(DecimalDecimal)。)。3AB5H3AB5H。H H后缀表示为十六进制数(后缀表示为十六进制数(HexadecimalHexadecimal)。如)。如果记数符号果记数符号a a,b b,c c,
32、d d,e e,f f打头,头部应加打头,头部应加0 0,如,如0A8F5H0A8F5H;记数符号记数符号 a a,b b,c c,d d,e e,f f不区别大小写,与不区别大小写,与ABCDEFABCDEF等效。等效。缺省后缀时,一般约定为十进制数。缺省后缀时,一般约定为十进制数。如:(如:(10111011)2 2 表示二进制数的表示二进制数的10111011 (2DF22DF2)1616表示十六进制数的表示十六进制数的2DF2 2DF2 1.2.1 1.2.1 数与数制数与数制 3/24/2022411.2.2 1.2.2 不同数制之间的转换不同数制之间的转换 方法:除方法:除2 2取
33、余法取余法注意:第一次得到的余数为二进制数的最低位,最后得到注意:第一次得到的余数为二进制数的最低位,最后得到的余数为二进制数的最高位。的余数为二进制数的最高位。 方法:乘方法:乘2 2取整法取整法注意:最后将每次得到的整数部分(必定是注意:最后将每次得到的整数部分(必定是0 0或或1 1)按先后顺)按先后顺序从左到右排列即得到所对应二进制小数。序从左到右排列即得到所对应二进制小数。 3/24/202242:117.8125D = 2 117 2 58 1 2 29 0 2 14 1 2 7 0 2 3 1 2 1 1 0 10.8125 2 .625 1 2 .25 1 2 0.5 0 2
34、.0 1 为了将一个既有整数又有小数部分的十进制数转换成二进制为了将一个既有整数又有小数部分的十进制数转换成二进制数,可以将其整数部分和小数部分分别进行转换,然后再组合数,可以将其整数部分和小数部分分别进行转换,然后再组合起来。起来。 1.2.2 1.2.2 不同数制之间的转换不同数制之间的转换 3/24/202243方法:按位权展开后相加。方法:按位权展开后相加。注意:用其各位所对应的系数,按注意:用其各位所对应的系数,按“位权展开求和位权展开求和”的方法就的方法就可以得到,其基数为可以得到,其基数为2 2。例例1.4 1.4 将将(101.11)2(101.11)2转换成十进制数。其过程如
35、下:转换成十进制数。其过程如下:(101.11)(101.11)2 2=1=12 22 2+0+02 21 1+1+12 20 0+1+12 2-1 -1+1+12 2-2-2=4+0+1+0.5+0.25=4+0+1+0.5+0.25=(5.755.75)10101.2.2 1.2.2 不同数制之间的转换不同数制之间的转换 3/24/202244方法:除方法:除8 8取余法取余法注意:采用基数注意:采用基数8 8连续去除该十进制整数,直至商等于连续去除该十进制整数,直至商等于“0”0”为为止,然后逆序排列所得到的余数。止,然后逆序排列所得到的余数。方法:乘方法:乘8 8取整法取整法注意:连续
36、用基数注意:连续用基数8 8去乘以该十进制小数,直至乘积的小数部去乘以该十进制小数,直至乘积的小数部分等于分等于“0”0”,然后顺序排列每次乘积的整数部分。,然后顺序排列每次乘积的整数部分。 方法:按位权展开后相加。方法:按位权展开后相加。用其各位所对应的系数,按用其各位所对应的系数,按“位权展开求和位权展开求和”的方法就可以得的方法就可以得到,其基数为到,其基数为8 8。 1.2.2 1.2.2 不同数制之间的转换不同数制之间的转换 3/24/202245方法:除方法:除1616取余法取余法注意:采用基数注意:采用基数1616连续去除该十进制整数,直至商等于连续去除该十进制整数,直至商等于“
37、0”0”为为止,然后逆序排列所得到的余数。止,然后逆序排列所得到的余数。 例例1.8 1.8 将十进制整数(将十进制整数(23472347)1010转换为十六进制整数,采用转换为十六进制整数,采用“除除1616倒取余倒取余”的方法,过程如下:的方法,过程如下: 16 16 2347 2347 余数为余数为1111, 即即A A0 0=B=B(十六进制数为(十六进制数为B B) 16 16 146 146 余数为余数为2 2, 即即A A1 1=2=2 16 16 9 9 余数为余数为9 9, 即即A A2 2=9=9 0 0 余数为余数为0 0, 结束结束 最后结果为:最后结果为:(23472
38、347)1010(A A2 2 A A1 1 A A0 0)1616= =(92B92B)16161.2.2 1.2.2 不同数制之间的转换不同数制之间的转换 3/24/202246方法:乘方法:乘1616取整法取整法注意:连续用基数注意:连续用基数1616去乘以该十进制小数,直至乘积的小去乘以该十进制小数,直至乘积的小数部分等于数部分等于“0”0”,然后顺序排列每次乘积的整数部分。,然后顺序排列每次乘积的整数部分。例例1.9 1.9 将十进制小数将十进制小数0.68750.6875转换成十六进制小数。其过程如转换成十六进制小数。其过程如下:下:0.68750.6875 16 16 11.00
39、0011.0000 整数部分为整数部分为11 11,即,即A A1 1=B=B 0.0000 0.0000 余下的小数部分为余下的小数部分为0 0,结束,结束最后结果为:(最后结果为:(0.68750.6875)1010=(0.A0.A-1 -1) 16=16=(0.B0.B)16161.2.2 1.2.2 不同数制之间的转换不同数制之间的转换 3/24/202247方法:按位权展开后相加方法:按位权展开后相加注意:用其各位所对应的系数,按注意:用其各位所对应的系数,按“位权展开求和位权展开求和”的方的方法就可以得到,其基数为法就可以得到,其基数为1616。 BF3CH = 11163 +15
40、162 +3161 +12160 = 48956D1.2.2 1.2.2 不同数制之间的转换不同数制之间的转换 3/24/202248因为:因为:2 23 3=8=8,所以每三位二进制数对应一位八进制数;,所以每三位二进制数对应一位八进制数;2 24 4=16=16,所以每四位二进制数对应一位十六进制。,所以每四位二进制数对应一位十六进制。 从小数点所在位置分别向左向右每三位一组进行划分。若小数从小数点所在位置分别向左向右每三位一组进行划分。若小数点左侧的位数不是点左侧的位数不是3 3的整数倍,在数的最左侧补零;若小数点右的整数倍,在数的最左侧补零;若小数点右侧的位数不是侧的位数不是3 3的整
41、数倍,在数的最右侧补零。然后参照表的整数倍,在数的最右侧补零。然后参照表1.21.2,将每三位二进制数转换成对应的一位八进制数,即为二进制数对将每三位二进制数转换成对应的一位八进制数,即为二进制数对应的八进制数。应的八进制数。例例1.11 1.11 将(将(11010.1111010.11)2 2转换为八进制数。其过程如下:转换为八进制数。其过程如下: 011011 010 010. 110. 110 3 3 2 2. 6. 6 所以所以 (11110.1111110.11)2 2 = =(32.632.6)8 8 1.2.2 1.2.2 不同数制之间的转换不同数制之间的转换 3/24/202
42、249方法:参照表方法:参照表1.21.2,将每一位八进制数转换成对应的三位二,将每一位八进制数转换成对应的三位二进制数,即为八进制数对应的二进制数。进制数,即为八进制数对应的二进制数。例例1.12 1.12 将(将(34.634.6)8 8转换为二进制数。其过程如下:转换为二进制数。其过程如下: 3 3 4. 4. 6 6 011 100. 011 100. 110110 所以所以 (34.634.6)8 8=(11100.1111100.11)2 2 1.2.2 1.2.2 不同数制之间的转换不同数制之间的转换 3/24/202250 0011 0101 1011 1111 3 5 B F
43、 0011,0101,1011,1111B = 35BFH A 1 9 C 1010 0001 1001 1100 A19CH = 1010,0001,1001,1100B方法:将每一位十六进制数转换成对应的四位二进制数,即为方法:将每一位十六进制数转换成对应的四位二进制数,即为十六进制数对应的二进制数。十六进制数对应的二进制数。 从小数点所在位置分别向左向右每四位一组进行划分。若从小数点所在位置分别向左向右每四位一组进行划分。若小数点左侧的位数不是小数点左侧的位数不是4 4的整数倍,在数的最左侧补零;若小数的整数倍,在数的最左侧补零;若小数点右侧的位数不是点右侧的位数不是4 4的整数倍,在数
44、的最右侧补零的整数倍,在数的最右侧补零 1.2.2 1.2.2 不同数制之间的转换不同数制之间的转换 3/24/202251(5) 十六进制和二进制的相互转换举例十六进制和二进制的相互转换举例方法:对于二进制整数,只要从右到左每方法:对于二进制整数,只要从右到左每4位组成一组,不位组成一组,不足足4位最左边补位最左边补0,即可得到相应的十六进制。对于二进制,即可得到相应的十六进制。对于二进制小数,只要从左到右每小数,只要从左到右每4位组成一组,不足位组成一组,不足4位最右边补位最右边补0,即可得到相应的十六进制。即可得到相应的十六进制。 0 111 1101. 0101 11 0 0 7 D
45、5 C (1111101.0101111)2 = (7D.5C)16 如果将十六进制转成二进制数,只要每一位十六进制如果将十六进制转成二进制数,只要每一位十六进制数用四位二进制数表示即可。数用四位二进制数表示即可。 补补0补补01.2.2 1.2.2 不同数制之间的转换不同数制之间的转换 3/24/2022521.1 汇编语言概述1.2 进位计数制及其转换3/24/202253 计算机中数值型数据是用二进制数来计算机中数值型数据是用二进制数来表示的,而非数值型数据包括英文字母、表示的,而非数值型数据包括英文字母、标点符号、专用符号、汉字等,也是用标点符号、专用符号、汉字等,也是用二进制数来编码
46、的。二进制数来编码的。3/24/202254计算机中正负数的表示计算机中正负数的表示假设机器字长为假设机器字长为1616位:位:符号位符号位 = 0 正数正数 数值位数值位 = 1 负数负数15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0符号位符号位 数值位数值位假设机器字长为假设机器字长为8 8位位:1. 1. 1.3.1 1.3.1 数值型数据的编码数值型数据的编码3/24/202255数的常用表示法数的常用表示法 原码表示法原码表示法:例:例:n = 8bit +3原码原码 = 0 000,0011 = 03H - 3原码原码 =
47、 1 000,0011 = 83H +0原码原码 = 0 000,0000 = 00H - 0原码原码 = 1 000,0000 = 80H 反码表示法反码表示法:例:例:n = 8bit +5反码反码 = 0 000,0101 = 05H - 5反码反码 = 1 111,1010 = FAH +0反码反码 = 0 000,0000 = 00H - 0反码反码 = 1 111,1111 = FFH 1.3.1 1.3.1 数值型数据的编码数值型数据的编码3/24/202256例:例: 机器字长机器字长8位,位,- 46补码补码 = ? = 0 0 1 0 1 1 1 0 1 1 0 1 0 0
48、 0 1 1 1 0 1 0 0 1 0 = D2H +0补码 = 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 = - 0补码补码 按位求反按位求反末位加末位加1按位求反按位求反末位加一末位加一:1.3.1 1.3.1 数值型数据的编码数值型数据的编码3/24/202257十进制十进制 二进制二进制 十六进制十六进制 十进制十进制 十六进制十六进制 n=8 n=16 +32767 7FFF +126 0111 1110 7E +32766 7FFE . . . +2 0000 0010 02 +2 0002 +1 0000 0001 01 +
49、1 0001 0 0000 0000 00 0 0000 -1 1111 1111 FF -1 FFFF -2 1111 1110 FE -2 FFFE . . .-126 1000 0010 82 -32766 8002-127 1000 0001 81 -32767 8001 -32768 8000 1.3.1 1.3.1 数值型数据的编码数值型数据的编码3/24/202258补码的加法和减法:补码的加法和减法:求补运算求补运算 :对一个二进制数按位求反、末位加对一个二进制数按位求反、末位加1加法规则加法规则:X+Y补码补码 = X补码补码 + Y补码补码减法规则减法规则:X-Y补码补码
50、= X补码补码 + -Y补码补码 补码减法可转换为补码加法补码减法可转换为补码加法 64 0100 0000例:例:1.3.1 1.3.1 数值型数据的编码数值型数据的编码3/24/202259 由于运算结果超出了位数由于运算结果超出了位数, ,最高有效位向前的进位,这最高有效位向前的进位,这一位自然丢失,一般不表示结果的对错。一位自然丢失,一般不表示结果的对错。表示结果超出了字长允许表示的范围,表示结果超出了字长允许表示的范围, 一般会造成结一般会造成结果出错。果出错。例:例: (64) 11000000 127 01111111 64 01000000 + 1 00000001 0 000
51、00000 128 10000000 进位进位 溢出溢出1.3.1 1.3.1 数值型数据的编码数值型数据的编码3/24/202260符号位 数值位 在某些情况下,计算机要处理的数据全是正数,此时机器在某些情况下,计算机要处理的数据全是正数,此时机器数再保留符号位就没有意义了。这时,我们将机器数最高有效数再保留符号位就没有意义了。这时,我们将机器数最高有效位也作为数值位处理,也就是说,假设机器字长为位也作为数值位处理,也就是说,假设机器字长为n n位,则有位,则有符号整数的编码格式如图符号整数的编码格式如图1.11.1所示。所示。 1位 n-1位图图1.1 1.1 有符号整数编码格式有符号整数
52、编码格式1.3.1 1.3.1 数值型数据的编码数值型数据的编码3/24/202261 无符号整数的编码格式如图无符号整数的编码格式如图1.21.2所示。所示。 n n位位 图图1.2 1.2 无符号整数编码格式无符号整数编码格式 无符号整数的表示范围为:无符号整数的表示范围为:0N20N2n n 1 1。 例如,当例如,当n=8n=8位时,表示范围为:位时,表示范围为:0N2550N255; 当当n=16n=16位时,表示范围为:位时,表示范围为:0N655350N65535。 在计算机中最常见的无符号整数是地址。另外,双字长数据的在计算机中最常见的无符号整数是地址。另外,双字长数据的低位字
53、也是无符号整数。低位字也是无符号整数。 要注意的是,计算机本身不论是对有符号数还是无符号数,总要注意的是,计算机本身不论是对有符号数还是无符号数,总是按照补码的运算规则做运算。是按照补码的运算规则做运算。1.3.1 1.3.1 数值型数据的编码数值型数据的编码3/24/2022621.3.2 1.3.2 非数值型数据的编码非数值型数据的编码 现代计算机不仅处理数值数据,而且还要处理大量的现代计算机不仅处理数值数据,而且还要处理大量的非数值数据,像英文字母、标点符号、专用符号、汉字非数值数据,像英文字母、标点符号、专用符号、汉字等等。前面已说过,不论什么数据,都必须用基等等。前面已说过,不论什么数据,都必须用基2 2码编码码编码后才能存储、传送及处理,非数值数据也不例外。下面后才能存储、传送及处理,非数值数据也不例外。下面我们分别介绍常见的非数值数据的二进制编码方法。我们分别介绍常见的非数值数据的二进制编码方法。3/24/202263字符的表示字符的表示ASCIIASCII码码: 例:例: AA4141H H a a6161H H 1 13131H H 换行换行0A0AH H 回车回车0D0DH H 空格空格2020H H 使用最多、最普遍的是使用最多、最普遍的是ASCIIASCII字符编码,即美国标准信息字符编码,即美国标准信息交换代码交换代码( (American
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版木材采购合同与木材质量保证协议4篇
- 2025八年级上学期期末历史试卷
- 2025年度二零二五年度智能交通管理系统设计与实施合同4篇
- 二零二五年度木制品表面处理合同样本4篇
- 2025版学校教室租赁合同示范文本2篇
- 2025年度个人毛坯房租赁与租金支付方式合同4篇
- 公共基础-2020年试验检验师助理《公共基础》真题
- 宝石矿物学在宝石加工中的应用研究考核试卷
- 2025版土地居间业务规范合同样本(2025版)6篇
- 2025版图书销售代理居间服务合同模板
- 加强教师队伍建设教师领域学习二十届三中全会精神专题课
- 2024-2025学年人教版数学七年级上册期末复习卷(含答案)
- 2024年决战行测5000题言语理解与表达(培优b卷)
- 四年级数学上册人教版24秋《小学学霸单元期末标准卷》考前专项冲刺训练
- 2025年慢性阻塞性肺疾病全球创议GOLD指南修订解读课件
- (完整版)减数分裂课件
- 银行办公大楼物业服务投标方案投标文件(技术方案)
- 第01讲 直线的方程(九大题型)(练习)
- 饭店管理基础知识(第三版)中职PPT完整全套教学课件
- 2023年重庆市中考物理A卷试卷【含答案】
- 【打印版】意大利斜体英文字帖(2022年-2023年)
评论
0/150
提交评论