第一章汇编语言程序设计基础课件

上传人:痛*** 文档编号:241649650 上传时间:2024-07-13 格式:PPT 页数:114 大小:650KB
返回 下载 相关 举报
第一章汇编语言程序设计基础课件_第1页
第1页 / 共114页
第一章汇编语言程序设计基础课件_第2页
第2页 / 共114页
第一章汇编语言程序设计基础课件_第3页
第3页 / 共114页
点击查看更多>>
资源描述
汇编语言程序设计-方法技术应用第一章第一章 汇编语言程序设计汇编语言程序设计基础基础汇编语言程序设计-方法技术应用本章内容提要本章内容提要 数据表示方法数据表示方法微型计算机结构微型计算机结构汇编语言程序开发环境、过程、基本方法汇编语言程序开发环境、过程、基本方法7/13/20242河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.1 1.1 机器语言与汇编语言机器语言与汇编语言指令与程序指令与程序 计算机进行的任何工作完全取决于各种程序,程序工作由一系列指计算机进行的任何工作完全取决于各种程序,程序工作由一系列指令完成。令完成。指令用于之处计算机要进行的特定操作和操作对象。指令用于之处计算机要进行的特定操作和操作对象。一台计算机全部指令的集合,构成该计算机的指令系统。一台计算机全部指令的集合,构成该计算机的指令系统。指令系统的性能与其指令系统有重要关系,不同类型计算机的指令指令系统的性能与其指令系统有重要关系,不同类型计算机的指令系统差异较大。系统差异较大。7/13/20243河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.1 1.1 机器语言与汇编语言机器语言与汇编语言 机器语言机器语言 机器语言是以计算机硬件能直接执行和理解的指令系统为基础而形机器语言是以计算机硬件能直接执行和理解的指令系统为基础而形成的语言,它与计算机硬件密切相关,为特定的计算机而设计。成的语言,它与计算机硬件密切相关,为特定的计算机而设计。相应机器语言编写的程序称为机器语言程序。相应机器语言编写的程序称为机器语言程序。机器语言直接对硬件编程。机器语言直接对硬件编程。计算机可以直接执行机器语言程序。计算机可以直接执行机器语言程序。机器语言除用于编写计算机最底层的核心系统程序外,实际应用中机器语言除用于编写计算机最底层的核心系统程序外,实际应用中直接使用的场合越来越少。直接使用的场合越来越少。7/13/20244河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.1 1.1 机器语言与汇编语言机器语言与汇编语言 汇编语言汇编语言 汇编语言是一种符号化的机器语言,即用助记符代替机器语言的二汇编语言是一种符号化的机器语言,即用助记符代替机器语言的二进制代码。助记符一般是英语单词的缩写,方便书写和记忆。进制代码。助记符一般是英语单词的缩写,方便书写和记忆。汇编语言指令与机器语言指令一一对应。汇编语言指令与机器语言指令一一对应。汇编语言编写的程序,称为汇编语言源程序。汇编语言编写的程序,称为汇编语言源程序。汇编语言源程序必须通过汇编程序,翻译成相应的目标代码才能运汇编语言源程序必须通过汇编程序,翻译成相应的目标代码才能运行。这个过程称为汇编。行。这个过程称为汇编。7/13/20245河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.2 1.2 数据表示方法数据表示方法 3 3字符数据编码字符数据编码2 2数值数据编码数值数据编码1 1数制及其转换数制及其转换4 4内存中的数据内存中的数据7/13/20246河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.2.1 1.2.1 数制及其转换数制及其转换进位计数制:进位计数制:在采用进位计数制的系统中,如果只用在采用进位计数制的系统中,如果只用r r个基本符号(个基本符号(0 0,1 1,2 2,r-1r-1)表示数值,则称其为基)表示数值,则称其为基r r数制,数制,r r称为该数制的基数,称为该数制的基数,而数制中每一个固定位置对应的单位值称为而数制中每一个固定位置对应的单位值称为“权权”。规则为。规则为“逢逢r r进一进一”。一个任意的十进制数可以表示为:一个任意的十进制数可以表示为:a an na an-1n-1aa0 0.b.b1 1b b2 2b bm m其含意是:其含意是:a an n1010n n+a+an-1n-1*10*10n-1n-1+a+a0 0*10*100 0+b+b1 1*10*10-1-1+b+b2 2*10*10-2-2+b bm m*10*10-m-m其中其中a ai i(i=0i=0,1 1,n n),),b bj j(j=1j=1,2 2,m m)是)是0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9十个数码中的一个。十个数码中的一个。7/13/20247河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.2.1 1.2.1 数制及其转换数制及其转换 十进制的基数为十进制的基数为1010,且遵循逢十进一的规则。上式中对应于每位数,且遵循逢十进一的规则。上式中对应于每位数字的字的1010k k称为该位数字的权,所以每位数字乘以其权所得到的乘积之和称为该位数字的权,所以每位数字乘以其权所得到的乘积之和即为所表示数的值。即为所表示数的值。例如:例如:1234.56=1101234.56=1103 3+210+2102 2+310+3101 1+410+4100 0+510+510-1-1+610+610-2-27/13/20248河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.2.1 1.2.1 数制及其转换数制及其转换二进制数的特点为:基数为二进制数的特点为:基数为2 2,只有,只有0 0,1 1两个数码,各个位权以两个数码,各个位权以2 2k k表示,表示,遵循逢二进一的规则。遵循逢二进一的规则。二进制数二进制数a an na an-1n-1aa0 0.b.b1 1b b2 2b bm m可以表示为:可以表示为:a an n22n n+a+an-1n-1*2*2n-1n-1+a+a0 0*2*20 0+b+b1 1*2*2-1-1+b+b2 2*2*2-2-2+b bm m*2*2-m-m其中其中a ai i,b bj j非非0 0即即1 1。例如:例如:1011.011B=121011.011B=123 3+02+022 2+12+121 1+12+120 0+02+02-1-1+12+12-2-2+12+12-3-3=11.275D=11.275D7/13/20249河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.2.1 1.2.1 数制及其转换数制及其转换十进制十进制二进制二进制八进制八进制十六进制十六进制基数基数r r102816基基本本符符号号0,1,2,3,4,5,6,7,8,90,10,1,2,3,4,5,6,70,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(a f)权权10k2k8k16k规则规则逢十进一逢十进一逢二逢二进一进一逢八逢八进一进一逢逢十六进一十六进一后缀后缀D或或d或或缺省缺省B或或b字母字母O或或oH或或h几种常用进位计数制几种常用进位计数制7/13/202410河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.2.1 1.2.1 数制及其转换数制及其转换二进制二进制000001010011100101110111八进制八进制01234567二进制二进制0000000100100011010001010110011110001001十十/十六进制十六进制0123456789二进制二进制101010111100110111101111十六进制十六进制ABCDEF二进制、十进制、八进制、十六进制数的对应关系二进制、十进制、八进制、十六进制数的对应关系N位二进制数可以表示位二进制数可以表示2n个数。个数。7/13/202411河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.2.2 1.2.2 二进制数和十进制数之间的转换二进制数和十进制数之间的转换 二进制数转换为十进制数二进制数转换为十进制数十进制数转换为二进制数十进制数转换为二进制数知识要点知识要点7/13/202412河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用非十进制转换为十进制数非十进制转换为十进制数a an na an-1n-1aa0 0.b.b1 1b b2 2b bm m=a=an nrrn n+a+an-1n-1*r*rn-1n-1+a+a0 0*r*r0 0+b+b1 1*r*r-1-1+b+b2 2*r*r-2-2+b bm m*r r-m-m=对应的十进制数对应的十进制数其中其中r r为为2 2、8 8或或1616。例如:例如:1011100.10111B=21011100.10111B=26 6+2+24 4+2+23 3+2+22 2+2+2-1-1+2+2-3-3+2+2-4-4+2+2-5-5=92.71875D=92.71875D 37O=38 37O=381 1+78+780 0=31D=31D 3ABH=316 3ABH=3162 2+1016+10161 1+1116+11160 0=839D=839D7/13/202413河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十进制数转换为非十进制数十进制数转换为非十进制数首先写出要转换的十进制数,其次写出所有小于此数的各位二进首先写出要转换的十进制数,其次写出所有小于此数的各位二进制权值,用要转换的十进制数减去与它最近的二进制权值,如够制权值,用要转换的十进制数减去与它最近的二进制权值,如够减则减去,并在相应位记以减则减去,并在相应位记以1 1;如不够减则在相应位记以;如不够减则在相应位记以0 0并跳过并跳过此位;如此不断重复,直到该数为此位;如此不断重复,直到该数为0 0为止。为止。降幂法降幂法7/13/202414河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十进制数转换为非十进制数十进制数转换为非十进制数例例1 1:N=117DN=117D,小于,小于N N的二进制权为:的二进制权为:6464323216168 84 42 21 1对应的二进制数是:对应的二进制数是:1 11 11 10 01 10 01 1计算过程如下:计算过程如下:117-64=53117-64=53(a a6 6=1=1)53-32=2153-32=21(a a5 5=1=1)21-16=521-16=5(a a4 4=1=1)(a a3 3=0=0)5-4=15-4=1(a a2 2=1=1)(a a1 1=0=0)1-1=01-1=0(a a0 0=1=1)7/13/202415河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十进制数转换为非十进制数十进制数转换为非十进制数例例2 2N=0.8125DN=0.8125D,小于此数的二进制权为:,小于此数的二进制权为:0.50.50.250.250.1250.1250.06250.0625对应的二进制数是:对应的二进制数是:1 11 10 01 1计算过程如下:计算过程如下:0.8125-0.5=0.31250.8125-0.5=0.3125(b b1 1=1=1)0.3125-0.25=0.06250.3125-0.25=0.0625(b b2 2=1=1)(b b3 3=0=0)0.0625-0.0625=00.0625-0.0625=0(b b4 4=1=1)7/13/202416河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十进制数转换为非十进制数十进制数转换为非十进制数整数部分整数部分:把要转换的十进制数的整数部分不断地除以二进制的基数把要转换的十进制数的整数部分不断地除以二进制的基数2 2,并记下余数,直到商为,并记下余数,直到商为0 0为止。第一次取得的余数为转换后整为止。第一次取得的余数为转换后整数部分的最低位。数部分的最低位。除法除法小数部分小数部分:把要转换的十进制数的小数部分不断地乘以二进制的基数把要转换的十进制数的小数部分不断地乘以二进制的基数2 2,并记下乘积的整数部分,直到结果的小数部分为并记下乘积的整数部分,直到结果的小数部分为0 0,或达到所要求,或达到所要求的精度为止。第一次取得的整数为转换后小数部分的最高位。的精度为止。第一次取得的整数为转换后小数部分的最高位。7/13/202417河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十进制数转换为非十进制数十进制数转换为非十进制数例例3 3:117D=1110101B117D=1110101B,转换过程:,转换过程:117/2=58117/2=58(a(a0 0=1)=1)58/2=2958/2=29(a(a1 1=0)=0)29/2=1429/2=14(a(a2 2=1)=1)14/2=714/2=7(a(a3 3=0)=0)7/2=37/2=3(a(a4 4=1)=1)3/2=13/2=1(a(a5 5=1)=1)1/2=01/2=0(a(a6 6=1)=1)7/13/202418河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十进制数转换为非十进制数十进制数转换为非十进制数例例4 4 0.8125D 0.8125D0.1101B0.1101B,转换过程为:,转换过程为:0.812520.812521.6251.625(b b1 1=1=1)0.62520.62521.251.25(b b2 2=1=1)0.2520.2520.50.5(b b3 3=0=0)0.520.521.01.0(b b4 4=1=1)7/13/202419河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用二、八、十六进制数之间的转换二、八、十六进制数之间的转换 知识要点知识要点十六进制数和二进制数之间的转换十六进制数和二进制数之间的转换十六进制数和十进制数之间的转换十六进制数和十进制数之间的转换7/13/202420河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十六进制数的表示十六进制数的表示 字节是计算机中存储信息的单位。计算机的字长一般都选为字节的字节是计算机中存储信息的单位。计算机的字长一般都选为字节的整数倍,如整数倍,如1616位、位、3232位、位、6464位等。一个字节由位等。一个字节由8 8位组成,它可以用两个位组成,它可以用两个四位组(又称半字节)来表示,所以用十六进制数来表示二进制数是比四位组(又称半字节)来表示,所以用十六进制数来表示二进制数是比较方便的。较方便的。十六进制的基数是十六进制的基数是1616,共有,共有1616个数码,它们是个数码,它们是0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中其中A A表示十进制的表示十进制的1010,余类推。,余类推。7/13/202421河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十六进制数和二进制数之间的转换十六进制数和二进制数之间的转换二进制数转为十六进制数:二进制数转为十六进制数:每四个二进制位对应一个十六进制位,因此只要把二进制数,每四个二进制位对应一个十六进制位,因此只要把二进制数,以小数点为界,分别向左向右每以小数点为界,分别向左向右每4 4位为一组进行分组,直接用十位为一组进行分组,直接用十六进制数来表示即可。六进制数来表示即可。十六进制数转换为二进制数十六进制数转换为二进制数:把十六进制数中的每一位用把十六进制数中的每一位用4 4位二进制数表示即可。位二进制数表示即可。7/13/202422河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十六进制数和二进制数之间的转换十六进制数和二进制数之间的转换例例5 500110011010101011011101111111111对应的十六进制数是:对应的十六进制数是:3 35 5B BF F即即0011010110111111B=35BFH0011010110111111B=35BFH例例6 6A A1 19 9C C对应的二进制数是:对应的二进制数是:10101010000100011001100111001100即即A19CH=1010000110011100BA19CH=1010000110011100B7/13/202423河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十六进制数和十进制数之间的转换十六进制数和十进制数之间的转换a an na an-1n-1aa0 0.b.b1 1b b2 2b bm m=a=an nrrn n+a+an-1n-1*r*rn-1n-1+a+a0 0*r*r0 0+b+b1 1*r*r-1-1+b+b2 2*r*r-2-2+b bm m*r r-m-m=对应的十进制数对应的十进制数其中其中r r为为2 2、8 8或或1616。例例7 7:BF3CH=1116BF3CH=11163 3+1516+15162 2+316+3161 1+12+1216160 0=48956D=48956D十六进制数转换为十进制数十六进制数转换为十进制数7/13/202424河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十六进制数和十进制数之间的转换十六进制数和十进制数之间的转换首先写出要转换的十进制数,其次写出所有小于此数的各位十六首先写出要转换的十进制数,其次写出所有小于此数的各位十六进制权值,然后找出该数中包含多少个最接近它的权值的倍数,进制权值,然后找出该数中包含多少个最接近它的权值的倍数,这一倍数即为对位的值,用原数减去此倍数与相应位权值的乘积这一倍数即为对位的值,用原数减去此倍数与相应位权值的乘积得到一个差值,再用此差值去找低一位的权值的倍数,如此反复得到一个差值,再用此差值去找低一位的权值的倍数,如此反复直到差值为直到差值为0 0为止。为止。降幂法降幂法十进制数转换为十六进制数十进制数转换为十六进制数7/13/202425河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十六进制数和十进制数之间的转换十六进制数和十进制数之间的转换例例8 8:N=48956DN=48956D,小于,小于N N的二进制权为:的二进制权为:4096409625625616161 1对应的十六进制数是:对应的十六进制数是:B BF F3 3C C计算过程如下:计算过程如下:48956-1148956-114096=39004096=3900(a(a3 3=11)=11)3900-153900-15256=60256=60(a(a2 2=15)=15)60-360-316=1216=12(a(a1 1=3)=3)12-1212-121=01=0(a(a0 0=12)=12)7/13/202426河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十六进制数和十进制数之间的转换十六进制数和十进制数之间的转换整数部分整数部分:把要转换的十进制数的整数部分不断地除以十六进制的基数把要转换的十进制数的整数部分不断地除以十六进制的基数1616,并记下余数,直到商为,并记下余数,直到商为0 0为止。第一次取得的余数为转换后为止。第一次取得的余数为转换后整数部分的最低位。整数部分的最低位。除法除法小数部分小数部分:把要转换的十进制数的小数部分不断地乘以十六进制的基数把要转换的十进制数的小数部分不断地乘以十六进制的基数1616,并记下乘积的整数部分,直到结果的小数部分为,并记下乘积的整数部分,直到结果的小数部分为0 0,或达到所要,或达到所要求的精度为止。第一次取得的整数为转换后小数部分的最高位。求的精度为止。第一次取得的整数为转换后小数部分的最高位。7/13/202427河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用十六进制数和十进制数之间的转换十六进制数和十进制数之间的转换例例9 9:48956D=BF3CH48956D=BF3CH,转换过程:,转换过程:48956/16=305948956/16=3059(a(a0 0=12)=12)3059/16=1913059/16=191(a(a1 1=3)=3)191/16=11191/16=11(a(a2 2=15)=15)11/16=011/16=0(a(a3 3=11)=11)7/13/202428河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.2.2 1.2.2 数值数据编码数值数据编码 2 2反码反码1 1原码原码3 3补码补码4 4无符号数无符号数5 5BCD码码7/13/202429河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.2.2 1.2.2 数值数据编码数值数据编码计算机中的数是用二进制来表示的,数的符号也是用二进制表示的。计算机中的数是用二进制来表示的,数的符号也是用二进制表示的。数在计算机中的二进制表示形式称为数在计算机中的二进制表示形式称为“机器数机器数”。数的原值称为数的原值称为“真值真值”,是计算机中表示的数的实际数值。,是计算机中表示的数的实际数值。机器数,一般用最高有效位来表示数的符号,正数用机器数,一般用最高有效位来表示数的符号,正数用0 0表示,负数用表示,负数用1 1表表示。示。见见P4-P5P4-P5,例,例1-81-8。常用的有原码、反码和补码表示法。常用的有原码、反码和补码表示法。7/13/202430河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用原码原码原码与真值的区别仅仅是数的符号数字化。原码与真值的区别仅仅是数的符号数字化。原码表示中,原码表示中,最高位为符号位,其他位表示数的绝对值。最高位为符号位,其他位表示数的绝对值。见见p5p5,例,例1-91-9。n n为原码表示的数的范围为为原码表示的数的范围为-2-2n-1n-1+1,2+1,2n-1n-1-1-1。8 8位原码表示的数的范围为位原码表示的数的范围为-127,127-127,127。1616为原码表示的数的范围为为原码表示的数的范围为-32767,32767-32767,32767。7/13/202431河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用反码反码正数的反码:正数的反码:与原码相同;与原码相同;负数的反码:负数的反码:等于其原码(符号位除外)按位取反。等于其原码(符号位除外)按位取反。见见p5p5,例,例1-101-10。反码表示数的范围与原码相同。反码表示数的范围与原码相同。7/13/202432河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用补码补码正数的补码:正数的补码:与原码相同;与原码相同;负数的补码:负数的补码:等于其原码(符号位除外)按位取反,末位加等于其原码(符号位除外)按位取反,末位加1 1。(或者说:等于其反码末位加(或者说:等于其反码末位加1 1。)。)见见p5p5,例,例1-111-11。补码表示能让符号位一同参与数的运算,能将减法转换为加法进行补码表示能让符号位一同参与数的运算,能将减法转换为加法进行运算。运算。将一个负数的补码转换成真值时,也需要一个将一个负数的补码转换成真值时,也需要一个“取反加取反加1”1”的过程。的过程。7/13/202433河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用补码补码求补运算:求补运算:对一个二进制数按位取反后在末位加对一个二进制数按位取反后在末位加1 1的运算。的运算。补码表示的数具有以下特性:补码表示的数具有以下特性:求补求补求补求补XX补补 -X-X补补 XX补补7/13/202434河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用补码补码例:例:117117补补=0075H=0075H-117-117补补=FF8BH=FF8BH现对现对-117-117补补作求补运算:作求补运算:-117-117补补为为1111 1111 11111111 1000 1011 1000 1011按位求反后得按位求反后得0000 0000 00000000 0111 0100 0111 0100末位加末位加1 1后得后得0000 0000 00000000 0111 0101 0111 0101此数正是此数正是117117补补=0075H=0075H7/13/202435河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用补码补码X+YX+Y补补=X=X补补+Y+Y补补补码的加法规则补码的加法规则补码的减法规则补码的减法规则X-YX-Y补补=X=X补补+-Y+-Y补补7/13/202436河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用补码补码加法:加法:十进制十进制 二进制二进制例例1.151.151.181.182500011001 +32 +001000005700111001 32 00100000 +(-25)+11100111 7 00000111 25 00011001 +(-32)+11100000 -7 11111001 -25 11100111 +(-32)+11100000 -57 11000111117/13/202437河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用补码补码减法:减法:十进制十进制 二进制二进制例例1.191.222500011001 -32 +11100000 -711111001 32 00100000 -(-25)+00011001 57 00111001 -25 11100111 -32 +11100000 -57 11000111 -25 11100111 -(-32)+00100000 7 00000111117/13/202438河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用补码补码用补码表示数时的符号扩展问题用补码表示数时的符号扩展问题:所谓符号扩展是指一个数从位数较少扩展到位数较多(如从所谓符号扩展是指一个数从位数较少扩展到位数较多(如从8 8位扩展到位扩展到1616位,或从位,或从1616位扩展到位扩展到3232位)时应该注意的问题。位)时应该注意的问题。对于补码表示的数,对于补码表示的数,正数的符号扩展应该在前面补正数的符号扩展应该在前面补0 0,而负数,而负数的符号扩展则应该在前面补的符号扩展则应该在前面补1 1。N N位补码表示数的范围问题位补码表示数的范围问题:(见(见p6p6,表,表1-21-2)即当即当N=8N=8时,所表示的数值范围为时,所表示的数值范围为+127+127 -128-128;当;当N=16N=16时,所表时,所表示的数值范围为示的数值范围为+32767+32767 -32768-32768。则则N N为补码表示的数的范围为为补码表示的数的范围为-2-2N N-1-1 +2+2N-1N-1-1-1。7/13/202439河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用补码补码在机器里,为了扩大表示数的范围,可以用二个机器字(高位字和低位在机器里,为了扩大表示数的范围,可以用二个机器字(高位字和低位字)来表示一个机器数,这样的数称为双字长或双精度数。字)来表示一个机器数,这样的数称为双字长或双精度数。图图1.1 1.1 双字长数的表示双字长数的表示双字长数的表数范围可扩大到:双字长数的表数范围可扩大到:+2+23131-1-1 -2-23131;2 23131约等于约等于 2.151092.15109。15 0 15 0 15 0 15 0 高位字高位字 低位字低位字 补码值补码值符符号号7/13/202440河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用无符号数无符号数可以把最高有效位也作为数值处理的数据,称为无符号整数。可以把最高有效位也作为数值处理的数据,称为无符号整数。N N位无符号数的表数范围为位无符号数的表数范围为0 0 2 2N N-1-1。则。则N=8N=8时的表数范围为时的表数范围为0 0 255 255;N=16N=16时的表数范围为时的表数范围为0 0 65535 65535;N=32N=32时的表数范围为时的表数范围为0 0 2 23232-1-1。在计算机中最常用的无符号整数是表示地址的数。在计算机中最常用的无符号整数是表示地址的数。7/13/202441河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用BCDBCD码码使用使用4 4位二进制数表示位二进制数表示1 1位十进制数,常称为二进制编码的十进制数。位十进制数,常称为二进制编码的十进制数。最常用的是最常用的是84218421码码(见(见p6p6,表,表1-31-3)。)。84218421是指用于编码的是指用于编码的4 4位二进制各位的权值位二进制各位的权值“8421”8421”。见见p6p6,例,例1-131-13。BCDBCD码有压缩码有压缩BCDBCD码和非压缩码和非压缩BCDBCD码。码。前者用前者用1 1个字节存放个字节存放2 2个十进制数,个十进制数,每个十进制数字占每个十进制数字占4 4位。后者用位。后者用1 1个字节存放个字节存放1 1个十进制数字,十进制个十进制数字,十进制数字占低数字占低4 4位,高位,高4 4位一般为位一般为0 0。(见(见p7p7,例,例1-141-14)7/13/202442河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.2.3 1.2.3 字符数据编码字符数据编码字母和各种字符也必须按特定的规则用二进制编码才能在计算机中表示。字母和各种字符也必须按特定的规则用二进制编码才能在计算机中表示。字符包括:字符包括:字母:字母:A A、B B、ZZ,a a、b b、zz;数字:数字:0 0、1 1、9 9;专用字符:、专用字符:、*、/、SPSP(space space 空格)、空格)、;非打印字符:非打印字符:BELBEL(bell bell 响铃)、响铃)、LFLF(line feed line feed 换行)、换行)、CRCR(carriage returncarriage return回车)、回车)、7/13/202443河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.2.3 1.2.3 字符数据编码字符数据编码80X8680X86机最常用的一种编码是美国信息交换标准代码机最常用的一种编码是美国信息交换标准代码ASCIIASCII(American American Standard Code for Information InterchangeStandard Code for Information Interchange)。)。见见p7p7,表,表1-41-4。标准标准ASCIIASCII码用七位二进制编码,故有码用七位二进制编码,故有128128个,如教材所示。微型机存个,如教材所示。微型机存储单位为储单位为8 8位,表达位,表达ASCIIASCII码时最高码时最高D7D7位通常为位通常为0 0;通信时;通信时D7D7为通常用作为通常用作奇偶校验位。奇偶校验位。在在PCPC机中,有时还采用扩展机中,有时还采用扩展ASCIIASCII码,主要表达各种制表用的符号等。码,主要表达各种制表用的符号等。扩展扩展ASCIIASCII码最高位码最高位D7D7位为位为1 1,以与标准,以与标准ASCIIASCII码区别。码区别。7/13/202444河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.2.4 1.2.4 内存中的数据内存中的数据数据在计算机内部采用二进制存储,数据在计算机内部采用二进制存储,具体采用何种方式,依赖于程序的具体采用何种方式,依赖于程序的执行情况,可用二进制、执行情况,可用二进制、BCDBCD码与字符方式。码与字符方式。数据的存储是以数据长度为单位,按字节顺序存放,数据的存储是以数据长度为单位,按字节顺序存放,数据的低位放低数据的低位放低字节地址,数据的高位放高字节地址。简单说字节地址,数据的高位放高字节地址。简单说,“低对低,高对高低对低,高对高”。如不特别说明,汇编语言程序设计中提到的数都是如不特别说明,汇编语言程序设计中提到的数都是整数整数,常用字节(常用字节(8 8位)、字(位)、字(1616位)、双字(位)、双字(3232位)表示位)表示。如实际数据的位数少,可进行。如实际数据的位数少,可进行扩展,一般是对最高有效位(可能是符号位)进行扩展,因此分为扩展,一般是对最高有效位(可能是符号位)进行扩展,因此分为零扩零扩展展和和符号扩展符号扩展。7/13/202445河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.3 1.3 微型计算机结构微型计算机结构微型计算机主要部件的特性布局及连接,是程序设计者必须了解的硬件微型计算机主要部件的特性布局及连接,是程序设计者必须了解的硬件资源及其资源部件。资源及其资源部件。典型的微型计算机结构包括典型的微型计算机结构包括微处理器、存储器、输入微处理器、存储器、输入/输出输出三个主要部三个主要部分,分,通过系统总线连接。通过系统总线连接。7/13/202446河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.3.1 80861.3.1 8086微处理器微处理器80868086微处理器:微处理器:1616位微处理器位微处理器,采用,采用1616位数据总线,位数据总线,寻址空间为寻址空间为1M1M字节,字节,由由指令执行部件(指令执行部件(EUEU)和总线接口部件()和总线接口部件(BIUBIU)两部分组成,如图两部分组成,如图p8p8,1-11-1所示。所示。总线接口单元总线接口单元BIUBIU(Bus Interface UnitBus Interface Unit):执行所有的总线操作,实:执行所有的总线操作,实现现CPUCPU与存储器及外设之间的数据交换,主要由指令指针寄存器、指令与存储器及外设之间的数据交换,主要由指令指针寄存器、指令队列、段寄存器、地址加法器等组成。队列、段寄存器、地址加法器等组成。执行单元执行单元EUEU(Execution UnitExecution Unit):控制和执行指令,主要由算术逻辑运:控制和执行指令,主要由算术逻辑运算部件算部件ALUALU、EUEU控制部件、通用寄存器与标志寄存器组成。控制部件、通用寄存器与标志寄存器组成。7/13/202447河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用内部暂存器内部暂存器 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位位7/13/202448河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.3.2 1.3.2 寄存器结构寄存器结构 数据寄存器数据寄存器知识要点知识要点指针及变址寄存器指针及变址寄存器段寄存器段寄存器控制寄存器控制寄存器7/13/202449河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用2.3.2 80X862.3.2 80X86寄存器组寄存器组AHALBHBLCHCLDHDLSPBPDISIIPFLAGSCSDSESSSFSGSAXBXCXDXEAXEBXECXEDXESPEBPEDIESIEIPEFLAGS32位名称位名称16位名称位名称32位位16位位名称名称累加器累加器基址变址基址变址计数计数数据数据堆栈指针堆栈指针基址指针基址指针目的变址目的变址源变址源变址指令指针指令指针标志标志代码代码数据数据附加附加堆栈堆栈对于对于80868086、80888088或或8028680286,阴影区域是不可用的。阴影区域是不可用的。FSFS和和GSGS寄存器无专用名称。寄存器无专用名称。图图2.3 80X862.3 80X86的程序可见寄存器组的程序可见寄存器组7/13/202450河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用1.1.数据寄存器数据寄存器8086/8088、80286所具有的寄存器所具有的寄存器AXAX(accumulatoraccumulator)称为)称为累加器累加器,用于算数、逻辑运算以及与外设传送,用于算数、逻辑运算以及与外设传送信息(信息(IN/OUTIN/OUT指令中)等。指令中)等。BXBX(basebase)称为)称为基址寄存器基址寄存器,常用做存放存储器地址。,常用做存放存储器地址。CXCX(countcount)称为)称为计数器计数器,常用来保存计数值,作为循环和串操作等指,常用来保存计数值,作为循环和串操作等指令中的隐含计数器。令中的隐含计数器。DXDX(datadata)称为)称为数据寄存器数据寄存器,常用来存放双字长数据的高,常用来存放双字长数据的高1616位,或存位,或存放外设端口地址。放外设端口地址。7/13/202451河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用2.2.指针及变址寄存器指针及变址寄存器8086/8088、80286所具有的寄存器所具有的寄存器指针及变址寄存器指针及变址寄存器 包括包括SISI(source indexsource index)、)、DIDI(destination indexdestination index)、)、BPBP(base pointerbase pointer)、)、SPSP(stack pointerstack pointer)四个)四个1616位寄存器,常位寄存器,常用于存储器寻址时提供地址。用于存储器寻址时提供地址。7/13/202452河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用2.2.指针及变址寄存器指针及变址寄存器8086/8088、80286所具有的寄存器所具有的寄存器SISI是源变址寄存器,是源变址寄存器,DIDI是目的变址寄存器;是目的变址寄存器;一般与一般与DSDS联用,联用,用来确定数据段中某一存储单元的地址;用来确定数据段中某一存储单元的地址;在串指令中,在串指令中,SISI与与DSDS联用、联用、DIDI与与ESES联用,分别寻址数据段和联用,分别寻址数据段和附加段;附加段;在串指令中,在串指令中,SISI与与DIDI还具有自动增量或减量的功能。还具有自动增量或减量的功能。7/13/202453河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用2.2.指针及变址寄存器指针及变址寄存器8086/8088、80286所具有的寄存器所具有的寄存器SPSP为堆栈指针寄存器,为堆栈指针寄存器,BPBP为基址指针寄存器;为基址指针寄存器;二者均可以与二者均可以与SSSS联用来确定堆栈段中的某一存储单元的地址;联用来确定堆栈段中的某一存储单元的地址;SPSP用来指示栈顶的偏移地址,用来指示栈顶的偏移地址,BPBP表示堆栈段中的基地址。表示堆栈段中的基地址。堆栈(堆栈(stackstack)是主存中一个特殊的区域,采用先进后出)是主存中一个特殊的区域,采用先进后出FILOFILO(first in last outfirst in last out)或后进先出)或后进先出LIFOLIFO(last in first last in first outout)的操作方式。)的操作方式。7/13/202454河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用3.3.段寄存器段寄存器段寄存器也是一种专用寄存器;段寄存器也是一种专用寄存器;专用于存储器寻址,用来直接或间接地存放段地址。专用于存储器寻址,用来直接或间接地存放段地址。8028680286以前的以前的CPUCPU包括:包括:CSCS、DSDS、SSSS、ESES;从从8038680386起增加了两个附加的数据段寄存器起增加了两个附加的数据段寄存器FSFS、GSGS。段寄存器是段寄存器是16位位的的7/13/202455河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用代码段(代码段(Code SegmentCode Segment)代码段用来存放程序的指令序列。代码段用来存放程序的指令序列。一个程序必须有一个代码段。一个程序必须有一个代码段。代码段寄存器代码段寄存器CSCS存放代码段的段地址;存放代码段的段地址;指令指针寄存器指令指针寄存器IPIP指示下条指令的偏移地址。指示下条指令的偏移地址。处理器利用处理器利用CS:IPCS:IP取得下一条要执行的指令。取得下一条要执行的指令。7/13/202456河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用数据段(数据段(Data SegmentData Segment)数据段存放运行程序所用的数据。一般程序都有一个或多个数据段。数据段存放运行程序所用的数据。一般程序都有一个或多个数据段。数据段寄存器数据段寄存器DSDS存放数据段的段地址;存放数据段的段地址;各种主存寻址方式(有效地址各种主存寻址方式(有效地址EAEA)得到存储器中操作数的偏移地址。)得到存储器中操作数的偏移地址。处理器利用处理器利用DS:EADS:EA存取数据段中的数据。存取数据段中的数据。7/13/202457河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用堆栈段(堆栈段(Stack SegmentStack Segment)堆栈段确定堆栈所在的主存区域。一般程序都需要设置堆栈段。堆栈段确定堆栈所在的主存区域。一般程序都需要设置堆栈段。堆栈段寄存器堆栈段寄存器SSSS存放堆栈段的段地址;存放堆栈段的段地址;堆栈指针寄存器堆栈指针寄存器SPSP指示堆栈栈顶的偏移地址。指示堆栈栈顶的偏移地址。处理器利用处理器利用SS:SPSS:SP操作堆栈顶的数据。操作堆栈顶的数据。7/13/202458河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用附加段(附加段(Extra SegmentExtra Segment)附加段是附加的数据段,也用于数据的保存。当程序用到一个以上附加段是附加的数据段,也用于数据的保存。当程序用到一个以上的数据段时,附加段是必不可少的。的数据段时,附加段是必不可少的。附加段寄存器附加段寄存器ESES存放附加段的段地址;存放附加段的段地址;各种主存寻址方式(有效地址各种主存寻址方式(有效地址EAEA)得到存储器中操作数的偏移地址。)得到存储器中操作数的偏移地址。处理器利用处理器利用ES:EAES:EA存取附加段中的数据。存取附加段中的数据。串操作指令将附加段作为其目的操作数的存放区域。串操作指令将附加段作为其目的操作数的存放区域。7/13/202459河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用4.4.控制寄存器控制寄存器包括包括IPIP、FLAGSFLAGS两个两个1616位寄存器。位寄存器。IPIP(instruction pointerinstruction pointer)指令指针寄存器)指令指针寄存器 它用来指示代码段中指令的偏移地址,它与代码段寄存器它用来指示代码段中指令的偏移地址,它与代码段寄存器CSCS联用,以联用,以确定下一条指令的物理地址;确定下一条指令的物理地址;处理器利用处理器利用CSCS:IPIP取得下一条要执行的指令,然后修改取得下一条要执行的指令,然后修改IPIP内容,使内容,使之指向下一条指令的存储器地址;之指向下一条指令的存储器地址;计算机就是通过计算机就是通过CSCS:IPIP寄存器来控制指令序列的执行流程的。寄存器来控制指令序列的执行流程的。8086/8088、80286所具有的寄存器所具有的寄存器7/13/202460河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用4.4.控制寄存器控制寄存器FLAGSFLAGS标志寄存器标志寄存器:(:(见见p10p10,图,图1-21-2)又称程序状态寄存器(又称程序状态寄存器(program status program status word,PSWword,PSW);用来存放条件码标志、控制标志和系统标志。用来存放条件码标志、控制标志和系统标志。8086/8088、80286所具有的寄存器所具有的寄存器7/13/202461河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用80X8680X86的标志寄存器的标志寄存器OFDFIFTFSFZFAFPFCF8086/8088802861514131211109876543210NTIOPLOFDFIFTFSFZFAFPFCFVMRF同同80286ACVMRF同同80286 IDVIPVIFACVMRF同同80286 31.222120191817161508038680486Pentium7/13/202462河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用80X8680X86的标志寄存器的标志寄存器 用来记录程序中运行结果的状态信息,它们是根据有关指令的运行用来记录程序中运行结果的状态信息,它们是根据有关指令的运行结果由结果由CPUCPU自动设置的。自动设置的。这些状态信息往往作为后续条件转移指令的转移控制条件,所以称这些状态信息往往作为后续条件转移指令的转移控制条件,所以称为条件码。为条件码。它包括它包括OFOF、SFSF、ZFZF、AFAF、PFPF和和CFCF。条件码标志(状态标志)条件码标志(状态标志)7/13/202463河南师范大学计算机与信息技术学院河南师范大学计算机与信息技术学院汇编语言程序设计-方法技术应用溢出标志溢出标志
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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