版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章汇编语言程序设计
基础1/15/20231河南师范大学计算机与信息技术学院本章内容提要数据表示方法微型计算机结构汇编语言程序开发环境、过程、基本方法1/15/20232河南师范大学计算机与信息技术学院1.1机器语言与汇编语言 指令与程序计算机进行的任何工作完全取决于各种程序,程序工作由一系列指令完成。指令用于之处计算机要进行的特定操作和操作对象。一台计算机全部指令的集合,构成该计算机的指令系统。指令系统的性能与其指令系统有重要关系,不同类型计算机的指令系统差异较大。1/15/20233河南师范大学计算机与信息技术学院1.1机器语言与汇编语言机器语言机器语言是以计算机硬件能直接执行和理解的指令系统为基础而形成的语言,它与计算机硬件密切相关,为特定的计算机而设计。相应机器语言编写的程序称为机器语言程序。机器语言直接对硬件编程。计算机可以直接执行机器语言程序。机器语言除用于编写计算机最底层的核心系统程序外,实际应用中直接使用的场合越来越少。1/15/20234河南师范大学计算机与信息技术学院1.1机器语言与汇编语言汇编语言汇编语言是一种符号化的机器语言,即用助记符代替机器语言的二进制代码。助记符一般是英语单词的缩写,方便书写和记忆。汇编语言指令与机器语言指令一一对应。汇编语言编写的程序,称为汇编语言源程序。汇编语言源程序必须通过汇编程序,翻译成相应的目标代码才能运行。这个过程称为汇编。1/15/20235河南师范大学计算机与信息技术学院1.2数据表示方法3字符数据编码2数值数据编码1数制及其转换4内存中的数据1/15/20236河南师范大学计算机与信息技术学院1.2.1数制及其转换
进位计数制:在采用进位计数制的系统中,如果只用r个基本符号(0,1,2,……,r-1)表示数值,则称其为基r数制,r称为该数制的基数,而数制中每一个固定位置对应的单位值称为“权”。规则为“逢r进一”。一个任意的十进制数可以表示为:
anan-1…a0.b1b2…bm其含意是:
an×10n+an-1*10n-1+…+a0*100+b1*10-1+b2*10-2+…bm*10-m其中ai(i=0,1,…,n),bj(j=1,2,…,m)是0,1,2,3,4,5,6,7,8,9十个数码中的一个。1/15/20237河南师范大学计算机与信息技术学院1.2.1数制及其转换 十进制的基数为10,且遵循逢十进一的规则。上式中对应于每位数字的10k称为该位数字的权,所以每位数字乘以其权所得到的乘积之和即为所表示数的值。例如:1234.56=1×103+2×102+3×101+4×100+5×10-1+6×10-21/15/20238河南师范大学计算机与信息技术学院1.2.1数制及其转换 二进制数的特点为:基数为2,只有0,1两个数码,各个位权以2k表示,遵循逢二进一的规则。二进制数anan-1…a0.b1b2…bm可以表示为:
an×2n+an-1*2n-1+…+a0*20+b1*2-1+b2*2-2+…bm*2-m其中ai,bj非0即1。例如:1011.011B=1×23+0×22+1×21+1×20+0×2-1+1×2-2+1×2-3=11.275D1/15/20239河南师范大学计算机与信息技术学院1.2.1数制及其转换十进制二进制八进制十六进制基数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几种常用进位计数制1/15/202310河南师范大学计算机与信息技术学院1.2.1数制及其转换二进制000001010011100101110111八进制01234567二进制0000000100100011010001010110011110001001十/十六进制0123456789二进制101010111100110111101111十六进制ABCDEF二进制、十进制、八进制、十六进制数的对应关系N位二进制数可以表示2n个数。1/15/202311河南师范大学计算机与信息技术学院1.2.2二进制数和十进制数之间的转换二进制数转换为十进制数十进制数转换为二进制数知识要点1/15/202312河南师范大学计算机与信息技术学院非十进制转换为十进制数anan-1…a0.b1b2…bm=an×rn+an-1*rn-1+…+a0*r0+b1*r-1+b2*r-2+…bm*r-m=对应的十进制数其中r为2、8或16。例如:
1011100.10111B=26+24+23+22+2-1+2-3+2-4+2-5=92.71875D37O=3×81+7×80=31D3ABH=3×162+10×161+11×160=839D1/15/202313河南师范大学计算机与信息技术学院十进制数转换为非十进制数首先写出要转换的十进制数,其次写出所有小于此数的各位二进制权值,用要转换的十进制数减去与它最近的二进制权值,如够减则减去,并在相应位记以1;如不够减则在相应位记以0并跳过此位;如此不断重复,直到该数为0为止。降幂法1/15/202314河南师范大学计算机与信息技术学院十进制数转换为非十进制数例1:N=117D,小于N的二进制权为:
64 32 16 8 4 2 1对应的二进制数是:
1 1 1 0 1 0 1计算过程如下:
117-64=53 (a6=1)
53-32=21 (a5=1)
21-16=5 (a4=1)
(a3=0)
5-4=1 (a2=1)
(a1=0)
1-1=0 (a0=1)1/15/202315河南师范大学计算机与信息技术学院十进制数转换为非十进制数例2 N=0.8125D,小于此数的二进制权为:
0.5 0.25 0.125 0.0625对应的二进制数是:
1 1 0 1计算过程如下:
0.8125-0.5=0.3125 (b1=1)
0.3125-0.25=0.0625 (b2=1)
(b3=0)
0.0625-0.0625=0 (b4=1)
1/15/202316河南师范大学计算机与信息技术学院十进制数转换为非十进制数整数部分:
把要转换的十进制数的整数部分不断地除以二进制的基数2,并记下余数,直到商为0为止。第一次取得的余数为转换后整数部分的最低位。除法小数部分:
把要转换的十进制数的小数部分不断地乘以二进制的基数2,并记下乘积的整数部分,直到结果的小数部分为0,或达到所要求的精度为止。第一次取得的整数为转换后小数部分的最高位。1/15/202317河南师范大学计算机与信息技术学院十进制数转换为非十进制数例3:117D=1110101B,转换过程:
117/2=58 (a0=1) 58/2=29 (a1=0) 29/2=14 (a2=1) 14/2=7 (a3=0) 7/2=3 (a4=1) 3/2=1 (a5=1) 1/2=0 (a6=1)1/15/202318河南师范大学计算机与信息技术学院十进制数转换为非十进制数例4 0.8125D=0.1101B,转换过程为:
0.8125×2=1.625 (b1=1)
0.625×2=1.25 (b2=1)
0.25×2=0.5 (b3=0)
0.5×2=1.0 (b4=1)1/15/202319河南师范大学计算机与信息技术学院二、八、十六进制数之间的转换知识要点十六进制数和二进制数之间的转换十六进制数和十进制数之间的转换1/15/202320河南师范大学计算机与信息技术学院十六进制数的表示 字节是计算机中存储信息的单位。计算机的字长一般都选为字节的整数倍,如16位、32位、64位等。一个字节由8位组成,它可以用两个四位组(又称半字节)来表示,所以用十六进制数来表示二进制数是比较方便的。十六进制的基数是16,共有16个数码,它们是
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中A表示十进制的10,余类推。1/15/202321河南师范大学计算机与信息技术学院十六进制数和二进制数之间的转换二进制数转为十六进制数:
每四个二进制位对应一个十六进制位,因此只要把二进制数,以小数点为界,分别向左向右每4位为一组进行分组,直接用十六进制数来表示即可。十六进制数转换为二进制数:
把十六进制数中的每一位用4位二进制数表示即可。1/15/202322河南师范大学计算机与信息技术学院十六进制数和二进制数之间的转换例5
0011 0101 1011 1111对应的十六进制数是:
3 5 B F 即0011010110111111B=35BFH例6
A 1 9 C对应的二进制数是:
1010 0001 1001 1100即A19CH=1010000110011100B 1/15/202323河南师范大学计算机与信息技术学院十六进制数和十进制数之间的转换anan-1…a0.b1b2…bm=an×rn+an-1*rn-1+…+a0*r0+b1*r-1+b2*r-2+…bm*r-m=对应的十进制数其中r为2、8或16。例7:
BF3CH=11×163+15×162+3×161+12×160=48956D十六进制数转换为十进制数1/15/202324河南师范大学计算机与信息技术学院十六进制数和十进制数之间的转换首先写出要转换的十进制数,其次写出所有小于此数的各位十六进制权值,然后找出该数中包含多少个最接近它的权值的倍数,这一倍数即为对位的值,用原数减去此倍数与相应位权值的乘积得到一个差值,再用此差值去找低一位的权值的倍数,如此反复直到差值为0为止。降幂法十进制数转换为十六进制数1/15/202325河南师范大学计算机与信息技术学院十六进制数和十进制数之间的转换例8:N=48956D,小于N的二进制权为:
4096 256 16 1对应的十六进制数是:
B F 3 C 计算过程如下:
48956-11×4096=3900 (a3=11)
3900-15×256=60 (a2=15) 60-3×16=12 (a1=3) 12-12×1=0 (a0=12)
1/15/202326河南师范大学计算机与信息技术学院十六进制数和十进制数之间的转换整数部分:
把要转换的十进制数的整数部分不断地除以十六进制的基数16,并记下余数,直到商为0为止。第一次取得的余数为转换后整数部分的最低位。除法小数部分:
把要转换的十进制数的小数部分不断地乘以十六进制的基数16,并记下乘积的整数部分,直到结果的小数部分为0,或达到所要求的精度为止。第一次取得的整数为转换后小数部分的最高位。1/15/202327河南师范大学计算机与信息技术学院十六进制数和十进制数之间的转换例9:48956D=BF3CH,转换过程:
48956/16=3059 (a0=12) 3059/16=191 (a1=3) 191/16=11 (a2=15) 11/16=0 (a3=11)
1/15/202328河南师范大学计算机与信息技术学院1.2.2数值数据编码2反码1原码3补码4无符号数5BCD码1/15/202329河南师范大学计算机与信息技术学院1.2.2数值数据编码计算机中的数是用二进制来表示的,数的符号也是用二进制表示的。数在计算机中的二进制表示形式称为“机器数”。数的原值称为“真值”,是计算机中表示的数的实际数值。机器数,一般用最高有效位来表示数的符号,正数用0表示,负数用1表示。见P4-P5,例1-8。常用的有原码、反码和补码表示法。
1/15/202330河南师范大学计算机与信息技术学院原码原码与真值的区别仅仅是数的符号数字化。原码表示中,最高位为符号位,其他位表示数的绝对值。见p5,例1-9。n为原码表示的数的范围为[-2n-1+1,2n-1-1]。8位原码表示的数的范围为[-127,127]。16为原码表示的数的范围为[-32767,32767]。1/15/202331河南师范大学计算机与信息技术学院反码正数的反码:与原码相同;负数的反码:等于其原码(符号位除外)按位取反。见p5,例1-10。反码表示数的范围与原码相同。1/15/202332河南师范大学计算机与信息技术学院补码正数的补码:与原码相同;负数的补码:等于其原码(符号位除外)按位取反,末位加1。(或者说:等于其反码末位加1。)见p5,例1-11。补码表示能让符号位一同参与数的运算,能将减法转换为加法进行运算。将一个负数的补码转换成真值时,也需要一个“取反加1”的过程。1/15/202333河南师范大学计算机与信息技术学院补码求补运算:对一个二进制数按位取反后在末位加1的运算。补码表示的数具有以下特性:
求补求补[X]补
[-X]补
[X]补1/15/202334河南师范大学计算机与信息技术学院补码例:
[117]补=0075H [-117]补=FF8BH现对[-117]补作求补运算:
[-117]补为 1111111110001011
按位求反后得 0000000001110100
末位加1后得 0000000001110101此数正是[117]补=0075H 1/15/202335河南师范大学计算机与信息技术学院补码[X+Y]补=[X]补+[Y]补补码的加法规则补码的减法规则[X-Y]补=[X]补+[-Y]补1/15/202336河南师范大学计算机与信息技术学院补码加法: 十进制二进制例1.15~1.18
25 00011001+ 32 +00100000 57 00111001 32 00100000+(-25) + 111001117 0000011125 00011001+(-32) +11100000-7 11111001-25 11100111+(-32) +11100000-57 11000111111/15/202337河南师范大学计算机与信息技术学院补码减法: 十进制二进制例1.19~1.22
25 00011001- 32 +11100000 -7 11111001 32 00100000-(-25) + 0001100157 00111001-25 11100111-32 +11100000-57 11000111-25 11100111-(-32) +001000007 00000111111/15/202338河南师范大学计算机与信息技术学院补码用补码表示数时的符号扩展问题:
所谓符号扩展是指一个数从位数较少扩展到位数较多(如从8位扩展到16位,或从16位扩展到32位)时应该注意的问题。对于补码表示的数,正数的符号扩展应该在前面补0,而负数的符号扩展则应该在前面补1。N位补码表示数的范围问题:(见p6,表1-2)即当N=8时,所表示的数值范围为+127~-128;当N=16时,所表示的数值范围为+32767~-32768。则N为补码表示的数的范围为-2N-1~+2N-1-1。
1/15/202339河南师范大学计算机与信息技术学院补码在机器里,为了扩大表示数的范围,可以用二个机器字(高位字和低位字)来表示一个机器数,这样的数称为双字长或双精度数。图1.1双字长数的表示双字长数的表数范围可扩大到:+231-1~-231;231约等于2.15×109。150150高位字低位字补码值符号1/15/202340河南师范大学计算机与信息技术学院无符号数可以把最高有效位也作为数值处理的数据,称为无符号整数。N位无符号数的表数范围为0~2N-1。则N=8时的表数范围为0~255;N=16时的表数范围为0~65535;N=32时的表数范围为0~232-1。在计算机中最常用的无符号整数是表示地址的数。
1/15/202341河南师范大学计算机与信息技术学院BCD码使用4位二进制数表示1位十进制数,常称为二进制编码的十进制数。最常用的是8421码(见p6,表1-3)。8421是指用于编码的4位二进制各位的权值“8421”。见p6,例1-13。BCD码有压缩BCD码和非压缩BCD码。前者用1个字节存放2个十进制数,每个十进制数字占4位。后者用1个字节存放1个十进制数字,十进制数字占低4位,高4位一般为0。
(见p7,例1-14)
1/15/202342河南师范大学计算机与信息技术学院1.2.3字符数据编码字母和各种字符也必须按特定的规则用二进制编码才能在计算机中表示。字符包括:字母:A、B、…Z,a、b、…z;数字:0、1、…、9;专用字符:+、-、*、/、、SP(space空格)、…;非打印字符:BEL(bell响铃)、LF(linefeed换行)、CR(carriagereturn回车)、……1/15/202343河南师范大学计算机与信息技术学院1.2.3字符数据编码80X86机最常用的一种编码是美国信息交换标准代码ASCII(AmericanStandardCodeforInformationInterchange)。见p7,表1-4。标准ASCII码用七位二进制编码,故有128个,如教材所示。微型机存储单位为8位,表达ASCII码时最高D7位通常为0;通信时D7为通常用作奇偶校验位。在PC机中,有时还采用扩展ASCII码,主要表达各种制表用的符号等。扩展ASCII码最高位D7位为1,以与标准ASCII码区别。1/15/202344河南师范大学计算机与信息技术学院1.2.4内存中的数据数据在计算机内部采用二进制存储,具体采用何种方式,依赖于程序的执行情况,可用二进制、BCD码与字符方式。数据的存储是以数据长度为单位,按字节顺序存放,数据的低位放低字节地址,数据的高位放高字节地址。简单说,“低对低,高对高”。如不特别说明,汇编语言程序设计中提到的数都是整数,常用字节(8位)、字(16位)、双字(32位)表示。如实际数据的位数少,可进行扩展,一般是对最高有效位(可能是符号位)进行扩展,因此分为零扩展和符号扩展。1/15/202345河南师范大学计算机与信息技术学院1.3微型计算机结构微型计算机主要部件的特性布局及连接,是程序设计者必须了解的硬件资源及其资源部件。典型的微型计算机结构包括微处理器、存储器、输入/输出三个主要部分,通过系统总线连接。1/15/202346河南师范大学计算机与信息技术学院1.3.18086微处理器8086微处理器:16位微处理器,采用16位数据总线,寻址空间为1M字节,由指令执行部件(EU)和总线接口部件(BIU)两部分组成,如图p8,1-1所示。
总线接口单元BIU(BusInterfaceUnit):执行所有的总线操作,实现CPU与存储器及外设之间的数据交换,主要由指令指针寄存器、指令队列、段寄存器、地址加法器等组成。执行单元EU(ExecutionUnit):控制和执行指令,主要由算术逻辑运算部件ALU、EU控制部件、通用寄存器与标志寄存器组成。1/15/202347河南师范大学计算机与信息技术学院内部暂存器
IPESSSDSCS输入/输出控制电路外部总线执行部分控制电路123456∑ALU标志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令队列缓冲器执行部件(EU)总线接口部件(BIU)16位20位16位8位1/15/202348河南师范大学计算机与信息技术学院1.3.2寄存器结构数据寄存器知识要点指针及变址寄存器段寄存器控制寄存器1/15/202349河南师范大学计算机与信息技术学院2.3.280X86寄存器组AHALBHBLCHCLDHDLSPBPDISIIPFLAGSCSDSESSSFSGSAXBXCXDXEAXEBXECXEDXESPEBPEDIESIEIPEFLAGS32位名称16位名称32位16位名称累加器基址变址计数数据堆栈指针基址指针目的变址源变址指令指针标志代码数据附加堆栈对于8086、8088或80286,阴影区域是不可用的。FS和GS寄存器无专用名称。图2.380X86的程序可见寄存器组1/15/202350河南师范大学计算机与信息技术学院1.数据寄存器8086/8088、80286所具有的寄存器AX(accumulator)称为累加器,用于算数、逻辑运算以及与外设传送信息(IN/OUT指令中)等。BX(base)称为基址寄存器,常用做存放存储器地址。CX(count)称为计数器,常用来保存计数值,作为循环和串操作等指令中的隐含计数器。DX(data)称为数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。1/15/202351河南师范大学计算机与信息技术学院2.指针及变址寄存器8086/8088、80286所具有的寄存器指针及变址寄存器包括SI(sourceindex)、DI(destinationindex)、BP(basepointer)、SP(stackpointer)四个16位寄存器,常用于存储器寻址时提供地址。1/15/202352河南师范大学计算机与信息技术学院2.指针及变址寄存器8086/8088、80286所具有的寄存器SI是源变址寄存器,DI是目的变址寄存器;一般与DS联用,用来确定数据段中某一存储单元的地址;在串指令中,SI与DS联用、DI与ES联用,分别寻址数据段和附加段;在串指令中,SI与DI还具有自动增量或减量的功能。1/15/202353河南师范大学计算机与信息技术学院2.指针及变址寄存器8086/8088、80286所具有的寄存器SP为堆栈指针寄存器,BP为基址指针寄存器;二者均可以与SS联用来确定堆栈段中的某一存储单元的地址;SP用来指示栈顶的偏移地址,BP表示堆栈段中的基地址。堆栈(stack)是主存中一个特殊的区域,采用先进后出FILO(firstinlastout)或后进先出LIFO(lastinfirstout)的操作方式。1/15/202354河南师范大学计算机与信息技术学院3.段寄存器段寄存器也是一种专用寄存器;专用于存储器寻址,用来直接或间接地存放段地址。80286以前的CPU包括:CS、DS、SS、ES;从80386起增加了两个附加的数据段寄存器FS、GS。段寄存器是16位的1/15/202355河南师范大学计算机与信息技术学院代码段(CodeSegment)代码段用来存放程序的指令序列。一个程序必须有一个代码段。代码段寄存器CS存放代码段的段地址;指令指针寄存器IP指示下条指令的偏移地址。处理器利用CS:IP取得下一条要执行的指令。1/15/202356河南师范大学计算机与信息技术学院数据段(DataSegment)数据段存放运行程序所用的数据。一般程序都有一个或多个数据段。数据段寄存器DS存放数据段的段地址;各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移地址。处理器利用DS:EA存取数据段中的数据。1/15/202357河南师范大学计算机与信息技术学院堆栈段(StackSegment)堆栈段确定堆栈所在的主存区域。一般程序都需要设置堆栈段。堆栈段寄存器SS存放堆栈段的段地址;堆栈指针寄存器SP指示堆栈栈顶的偏移地址。处理器利用SS:SP操作堆栈顶的数据。1/15/202358河南师范大学计算机与信息技术学院附加段(ExtraSegment)附加段是附加的数据段,也用于数据的保存。当程序用到一个以上的数据段时,附加段是必不可少的。附加段寄存器ES存放附加段的段地址;各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移地址。处理器利用ES:EA存取附加段中的数据。串操作指令将附加段作为其目的操作数的存放区域。1/15/202359河南师范大学计算机与信息技术学院4.控制寄存器包括IP、FLAGS两个16位寄存器。IP(instructionpointer)指令指针寄存器它用来指示代码段中指令的偏移地址,它与代码段寄存器CS联用,以确定下一条指令的物理地址;处理器利用CS:IP取得下一条要执行的指令,然后修改IP内容,使之指向下一条指令的存储器地址;计算机就是通过CS:IP寄存器来控制指令序列的执行流程的。8086/8088、80286所具有的寄存器1/15/202360河南师范大学计算机与信息技术学院4.控制寄存器FLAGS标志寄存器:(见p10,图1-2)又称程序状态寄存器(programstatusword,PSW);用来存放条件码标志、控制标志和系统标志。8086/8088、80286所具有的寄存器1/15/202361河南师范大学计算机与信息技术学院80X86的标志寄存器OFDFIFTFSFZFAFPFCF8086/8088802861514131211109876543210NTIOPLOFDFIFTFSFZFAFPFCF…VMRF同80286……ACVMRF同80286……IDVIPVIFACVMRF同80286…31……….2221201918171615…08038680486Pentium1/15/202362河南师范大学计算机与信息技术学院80X86的标志寄存器用来记录程序中运行结果的状态信息,它们是根据有关指令的运行结果由CPU自动设置的。
这些状态信息往往作为后续条件转移指令的转移控制条件,所以称为条件码。它包括OF、SF、ZF、AF、PF和CF。条件码标志(状态标志)1/15/202363河南师范大学计算机与信息技术学院溢出标志OF(OverFlowFlag)在运算过程中,如操作数超出了机器能表示的范围就是发生了溢出,则OF=1;否则OF=0。
例:
3AH+7CH=B6H,产生溢出:OF=1
AAH+7CH=(1)26H,没有溢出:OF=01/15/202364河南师范大学计算机与信息技术学院符号标志SF(SignFlag)运算结果的最高有效位就是符号标志的状态。运算结果最高位为1,则SF=1;否则SF=0。
例:
3AH+7CH=B6H,最高位D7=1:SF=1 84H+7CH=(1)00H,最高位D7=0:SF=01/15/202365河南师范大学计算机与信息技术学院零标志ZF(ZeroFlag)运算结果为0时,ZF=1,否则ZF=0。
例:
3AH+7CH=B6H,结果不是零:ZF=0 84H+7CH=(1)00H,结果是零:ZF=11/15/202366河南师范大学计算机与信息技术学院进位标志CF(CarryFlag)当运算结果的最高有效位有进位(加法)或借位(减法)时,CF=1;否则CF=0。
例:
3AH+7CH=B6H,没有进位:CF=0 AAH+7CH=(1)26H,有进位:CF=1进位与溢出有什么区别?如何判断溢出?如何运用进位与溢出?1/15/202367河南师范大学计算机与信息技术学院辅助进位标志AF(AuxiliaryCarryFlag)运算时D3位(低半字节)有进位或借位时,AF=1;否则AF=0。
例:
3AH+7CH=B6H,D3有进位:AF=1该标志主要是由处理器内部使用,用于十进制算数运算指令中,用户一般不必关心。1/15/202368河南师范大学计算机与信息技术学院奇偶标志PF(ParityFlag)当运算结果的最低字节中“1”的个数为0或偶数时,PF=1;否则PF=0。
例:
3AH+7CH=B6H=10110110B
结果中有5个1,是奇数:PF=0注意:PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位或32位数据操作时。1/15/202369河南师范大学计算机与信息技术学院进位与溢出的区别
CF表示的是无符号数运算结果是否超出范围;即对于N位二进制无符号数来说,如果运算结果超出了0~2N-1这个范围,则认为产生了进位。但运算结果仍然正确。
OF表示的是有符号数运算结果是否超出了范围;即对于N位二进制有符号数来说,如果运算结果超出了-2N-1~2N-1-1这个范围,则认为产生了溢出。运算结果已经不正确。注:处理器内部以补码形式表示有符号数:N=8时,表示的无符号数的范围是:0~255; 表示的有符号数的范围是:-128~+127;N=16时,表示的无符号数的范围是:0~65535; 表示的有符号数的范围是:-32768~+32767。1/15/202370河南师范大学计算机与信息技术学院判断溢出的方法如果两个符号相同的数相加,而运算结果的符号与它们的符号相反,则产生溢出。如果两个符号相反的数相减,而运算结果的符号与被减数的符号相反,则产生溢出。其他情况下,不会产生溢出。(举例)1/15/202371河南师范大学计算机与信息技术学院如何运用进位与溢出处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF。应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出。1/15/202372河南师范大学计算机与信息技术学院进位与溢出的对比例1:3AH+7CH=B6H
无符号数运算:58+124=182
范围内,无进位,则CF=0
有符号数运算:58+124=182
范围外,有溢出,则OF=1例2:AAH+7CH=(1)26H
无符号数运算:170+124=294
范围外,有进位,则CF=1
有符号数运算:-86+124=28
范围内,无溢出,则OF=01/15/202373河南师范大学计算机与信息技术学院进位与溢出的对比例3:0DH+79H=86H
无符号数:00001101B+01111001B=10000110B
无进位,CF=0
有符号数:两个正数相加,结果为负数,溢出,OF=1例4:86H+F5H=7BH
无符号数:10000110B+11110101B=(1)01111011B
有进位,CF=1
有符号数:两个负数相加,结果为正数,溢出,OF=11/15/202374河南师范大学计算机与信息技术学院进位与溢出的对比例5:06H-09H=FDH无符号数:00000110B-00001001B=(借位1)11111101B
有借位,CF=1有符号数:两个符号相同的数相减,不会产生溢出,OF=0例6:80H-01H=7FH无符号数:10000000B-00000001B=01111111B
无借位,CF=0有符号数:两个符号不同的数相减,结果的符号与被减数相反,溢出,OF=01/15/202375河南师范大学计算机与信息技术学院80X86的标志寄存器该标志用于串操作指令中,控制地址的变化方向。当DF=1时,每次串操作后使变址寄存器SI和DI的值自动减少,即串操作从高地址向低地址方向进行。当DF=0时,每次串操作后使变址寄存器SI和DI的值自动增加,即串操作从低地址向高地址方向进行。控制标志——方向标志DF(DirectionFLag)方向标志可以用CLD指令复位(DF=0),STD指令置位(DF=1)。1/15/202376河南师范大学计算机与信息技术学院80X86的标志寄存器可以用于I/0、可屏蔽中断、程序调试、任务切换和系统工作方式等的控制。下面简单介绍某些位的情况。系统标志位陷阱标志TF中断标志IFI/O特权级IOPL1/15/202377河南师范大学计算机与信息技术学院陷阱标志TF(TrapFlag)也常称为单步标志。用于控制处理器是否进入单步操作方式。当TF=1时,处理器单步执行指令,每条指令执行完后产生编号为1的中断,由系统控制计算机;当TF=0时,处理器正常工作。1/15/202378河南师范大学计算机与信息技术学院中断标志IF(InterruptFlag)该标志用于控制外部可屏蔽中断是否可以被处理器响应。当IF=1时,允许CPU响应可屏蔽中断请求;当IF=0时,则禁止中断。在调试程序DEBUG中提供了测试标志位的手段,它用符号表示某些标志位的值。1/15/202379河南师范大学计算机与信息技术学院标志位的符号表示标志名标志为1标志为0溢出OFOVNV方向DFDNUP中断IFEIDI符号SFNGPL零位ZFZRNZ辅助AFACNA奇偶PFPEPO进位CFCYNC1/15/202380河南师范大学计算机与信息技术学院1.3.3内存组织计算机中存储信息的单位(数据类型图)
二进制位(bit):是计算机存储信息的基本单位,一个位可存储一位二进制数:0或1。字节(byte):8个二进制位组成一个字节。字(word):由两个字节组成,即16位数据。双字(doubleword):由两个字组成,即4字节数据,共32位。4字:由8个字节组成,64位数据。1/15/202381河南师范大学计算机与信息技术学院数据类型高位双字低位双字N+7N+6N+5N+4N+3N+2N+1N
地址6332310高位字低位字N+3N+2N+1N
地址3116150高字节低字节N+1N
地址15870字双字4字
N
地址
70字节最低位称为最低有效位LSB(LeastSignificantBit),即D0位;最高位称为最高有效位MSB(MostSignificantBit),对字节、字、双字、4字分别指D7、D15、D31、D63。1/15/202382河南师范大学计算机与信息技术学院1.3.3内存组织机器字长8086/8088,80286的字长为16位;80386到PentiumII的字长为32位。1/15/202383河南师范大学计算机与信息技术学院1.内存地址存储单元的地址存储器里以字节为单位存储信息。每一个字节单元被赋予一个惟一的存储器地址,称为物理地址。地址从0开始编号,顺序地每次加1;机器里,地址是一个无符号二进制整数,书写时常用十六进制数表示。1/15/202384河南师范大学计算机与信息技术学院1.内存组织存储单元的内容一个存储单元中存放的信息称为该单元的内容。每个存储单元中存放一个字节的内容。(如图所示)在存储器中如何存放一个字或双字?1/15/202385河南师范大学计算机与信息技术学院多字节数据的存放多字节数据在存储器中占连续的多个存储单元:存放时,低字节存入低地址,高字节存入高地址;多字节数据的地址用其低地址表示。这种“低对低,高对高”的存储形式,被称为“小端方式”。如图所示1/15/202386河南师范大学计算机与信息技术学院存储单元的内容40H30H56H12H34H5614H5613H5612H0004H0003H0002H0001H0000H如果用X表示某存储单元的地址,则X单元的内容可以表示为(X);假如X单元中存放着Y,而Y又是一个地址,则可用(Y)=((X))来表示Y单元的内容。如左图中
(0003H)=5612H而
(5612H)=4030H则
((0003H))=4030H存储单元的内容可以重复取出,直到有新的内容写入。1/15/202387河南师范大学计算机与信息技术学院存储单元的地址和内容如图所示,在0002H地址的存储器单元中存放的信息是34H,即2单元的内容为34H,表示为:
[0002H]=34H
或
(0002H)=34HCDHABH78H56H12H34H0008H0007H0006H0005H0004H0003H0002H0001H0000H2号“字”单元的内容为:[0002H]=1234H
或
(0002H)=1234H2号“双字”单元的内容为:[0002H]=78561234H
或
(0002H)=78561234H同一个地址既可以看作字节单元的地址,又可以看作字单元、双字单元或4字单元的地址,这要根据使用情况确定。1/15/202388河南师范大学计算机与信息技术学院2.段式存储管理8086/8088的地址总线宽度为20位:8086CPU将1MB存储器空间分成许多逻辑段:最大寻址空间为220=1MB;物理寻址范围:00000H~FFFFFH;而它们的机器字长为16位。每个段最大限制为64KB;逻辑地址=段基地址:段内偏移地址;1/15/202389河南师范大学计算机与信息技术学院段基地址说明逻辑段在主存中的起始地址,简称段地址。段不能起始于任意地址,而必须从任一小段的首地址开始。段地址的低4位为0000B,这样规定段地址只取段起始地址的高16位值。1/15/202390河南师范大学计算机与信息技术学院小段
16位二进制数可以表示216=64K个字节单元的地址,即它可以表示的地址范围应该是0~65535,其地址编号的范围用十六进制数表示为0000H~FFFFH。机器规定:从0地址开始,每16个字节为一小段。这里每一行就是一个小段。其中第一列就是每个小段的首地址,在十六进制表示的地址中,最低位为0。在1MB的地址空间中,共有64K(1MB/16B=220/24)个小段首地址。1/15/202391河南师范大学计算机与信息技术学院小段00000,00001,00002,…,00009,0000A,0000B,…,0000E,0000F,00010,00011,00012,…,00019,0001A,0001B,…,0001E,0001F,00020,00021,00022,…,00029,0002A,0002B,…,0002E,0002F,
…… ……FFFE0,FFFE1,FFFE2,…,FFFE9,FFFEA,FFFEB,…,FFFEE,FFFEF,FFFF0,FFFF1,FFFF2,…,FFFF9,FFFFA,FFFFB,…,FFFFE,FFFFF。 1/15/202392河南师范大学计算机与信息技术学院段内偏移地址说明主存单元距离段起始位置的偏移量,简称偏移地址。因为每个逻辑段不超过64KB,所以偏移地址可以用16位数据表示。1/15/202393河南师范大学计算机与信息技术学院3.逻辑地址与物理地址在1MB的存储器里,每个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址。
CPU访问存储器时,必须先确定所要访问的存储单元的物理地址,才能访问该单元。物理地址和逻辑地址的转换1/15/202394河南师范大学计算机与信息技术学院物理地址和逻辑地址的转换物理地址=逻辑地址中的段地址左移4位+偏移地址或物理地址=16×段地址+偏移地址例:逻辑地址:1460:0100 和 1380:0F0014600H+100H14700H13800H+F00H14700H物理地址:一个物理地址可以对应多个逻辑地址。1/15/202395河南师范大学计算机与信息技术学院段寄存器与逻辑段8086、80286有4个16位段寄存器每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途。CS(代码段)指明代码段的起始地址SS(堆栈段)指明堆栈段的起始地址DS(数据段)指明数据段的起始地址ES(附加段)指明附加段的起始地址在80386及其后继的80X86中,新增两个段寄存器FS和GS,它们也是附加的数据段寄存器。1/15/202396河南师范大学计算机与信息技术学院各逻辑段的分配程序的指令序列必须安排在代码段。程序使用的堆栈一定在堆栈段。程序中的数据默认是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段。数据的存放比较灵活,实际上可以存放在任何一种逻辑段中。默认的情况允许改变,需要使用段超越前缀指令:CS:、SS:、DS:、ES:、FS:、GS:。1/15/202397河南师范大学计算机与信息技术学院8086/8088、80286的段寄存器和相应存放偏移地址的寄存器之间的默认组合段偏移CSIPSSSP或BPDSBX、DI、SI或一个16位数ESDI(用于串指令)1/15/202398河南师范大学计算机与信息技术学院段分配方式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社会实践实施方案
- Unit 1 Transport Lesson 1同步练习(含答案)
- 施工安全生产检查
- 饲料厂消防安全培训课件
- 如何做员工培训幻灯片
- 2026年高考化学第一轮基础练习-第55讲 常见物质的检验与鉴别(含答案)
- 取材室工作制度
- 听证工作制度
- 器械库工作制度
- 国务院工作制度
- 2026年浙江省衢州市六校联谊初三百日冲刺考试英语试题含解析
- 一次性使用止血套环产品技术要求北京中诺恒康生物
- 政法单位联席会议制度
- 休克诊疗规范课件
- 2026年陕西航空职业技术学院单招职业倾向性考试题库及一套答案详解
- (甘肃一模)2026年甘肃省高三年级第一次模拟考试英语试题(含答案)+听力音频+听力原文
- 第五版-FMEA-新版FMEA【第五版】
- GB/T 12144-2009氧化铽
- GA/T 1004-2012校车标志灯
- 移动变电站修理工艺规程
- 数学中考《四点共圆型考题》专题复习课件
评论
0/150
提交评论