汇编语言学习.pptx
汇编语言程序设计第第1章章基础知识基础知识1、不同、不同进位位记数制的表示数制的表示2、符号数的表示、符号数的表示3、二、二进制制编码第第1页页/共共71页页汇编语言程序设计不同进位记数制的表示在数字后面加一个字母在数字后面加一个字母进行区分:行区分:二进制:数字后面加二进制:数字后面加B,如如1001B八进制:数字后面加八进制:数字后面加O,如如1001O十进制:一般不加十进制:一般不加,如如1001十六进制:数字后面加十六进制:数字后面加H,如如1001H;如果以如果以字母字母开头,则要在字母前面加一个开头,则要在字母前面加一个0,如,如0AH第第2页页/共共71页页汇编语言程序设计有符号数的表示对于有符号数,常用的表示方法有原码、反码和补码三种。数X的原码记作X原,反码记作X反,补码记作X补。注意:注意:对正数,三种表示法均相同。它正数,三种表示法均相同。它们的的差差别在于在于对负数的表示。数的表示。第第3页页/共共71页页汇编语言程序设计原码定义定义定义:符号位:0表示正,1表示负;数值位:真值的绝对值。nnnXXXXX-=+11122200-第第4页页/共共71页页汇编语言程序设计原码举例真值X=+18=+0010010X=-18=-0010010原码X原=0 0010010X原=1 0010010符号符号位n位原码表示数值的范围是位原码表示数值的范围是对应的原码是对应的原码是1111 0111。第第5页页/共共71页页汇编语言程序设计0的原码表示8位数0的原码:+0=0 0000000 -0=1 0000000 即:数0的原码不唯一。第第6页页/共共71页页汇编语言程序设计反码定义定义定义:若X0,则 X反=X原 若X0,则X补=X反=X原若X0,则X补=X反+1第第10页页/共共71页页汇编语言程序设计补码举例X=52=0110100 X原=10110100 X反=11001011 X补=X反+1=11001100n位位补码表示数表示数值的范的范围是是对应的的补码是是10000111。第第11页页/共共71页页汇编语言程序设计0的补码+0补=+0原=00000000-0补=-0反+1=11111111+1 =1 00000000 对8位字长,进位被舍掉+0补=-0补=00000000第第12页页/共共71页页汇编语言程序设计特殊数10000000该数在原码中定义为:-0在反码中定义为:-127在补码中定义为:-128对无符号数:(10000000)=128第第13页页/共共71页页汇编语言程序设计8位有符号数的表示范围对8位二进制数:原码:-127 +127反码:-127 +127补码:-128 +12716位有符号数的表示范围是多少?第第14页页/共共71页页汇编语言程序设计补码的运算原理模模(module)就是一个就是一个计数系数系统的最大容量的最大容量。例如,例如,钟表的模表的模为12,8位二位二进制数的模制数的模为28。凡是用器件凡是用器件进进行的运算都是有模运算,行的运算都是有模运算,运算运算结果超果超过模的部分会被运算器模的部分会被运算器自自动丢弃弃。因此,当。因此,当器件器件为n位位时,有,有X=2n+X(mod2n)不不难验证,X补=2n+X(mod2n)因此,因此,X Y补=2n+(X Y)(mod2n)=(2n+X)+(2n Y)(mod2n)=X补+Y补第第15页页/共共71页页汇编语言程序设计补码运算举例X=-0110100,Y=+1110100,求X+Y补X原=10110100 X补=X反+1=11001100Y补=Y原=01110100所以:X+Y补=X补+Y补 =11001100+01110100 =01000000第第16页页/共共71页页汇编语言程序设计BCD码码十进制数的表示BCD码用4位二进制数表示一位十进制数。有两种表示法:压缩BCD码和非压缩BCD码。压缩BCD码的每一位用4位二进制表示,00001001表示09,一个字节表示两位十进制数。非压缩BCD码用一个字节表示一位十进制数,高4位总是0000,低4位的00001001表示09。第第17页页/共共71页页汇编语言程序设计非数值数据的表示计算机中除了能算机中除了能够处理数理数值数据以外,数据以外,还可以可以处理文理文字、字、语音、音、图像等各种信息,像等各种信息,这些信息些信息统称称为非数非数值数据。数据。非数非数值数据在数据在计算机中也必算机中也必须以以二进制形式表示,非表示,非数数值数据的表示本数据的表示本质上是上是编码的的过程。程。最常用的数据最常用的数据编码:美国:美国标准信息交准信息交换代代码(American Standard Code for Information Interchange,ASCII码)第第18页页/共共71页页汇编语言程序设计ASCII字符表第第19页页/共共71页页汇编语言程序设计课堂作业1、下列各数为十六进制表示的8位二进制数,请说明当它们被看作是用补码表示的带符号数时,它们所表示的十进制数是什么?(1)D8 (2)FF2、下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的ASCII码时,它们所表示的十进制数及字符是什么?(1)4F (2)2B 3、请写出下列字符串的ASCII码值。For example,This is a number 3692.D8:40 FF:14F:79,O 2B:43,+第第20页页/共共71页页汇编语言程序设计第第2章章80 x86计算机组织计算机组织1、8086/8088CPU2、存储器3、80X86 CPU 的工作模式4、DEBUG命令的使用第第21页页/共共71页页汇编语言程序设计8086/8088CPU8086/8088CPU的主要特性:的主要特性:Intel8086/8088CPU内含内含29000个晶体管,封装在个晶体管,封装在标准的准的40脚双列直插式塑封管壳内。采用两个脚双列直插式塑封管壳内。采用两个+5V电源供源供电。数据数据总线:8086:16位,位,8088:8位。位。地址地址总线:20位,其中位,其中8086的低的低16位与数据位与数据总线复复用;用;8088的低的低8位与数据位与数据总线复用。复用。内存空内存空间:20位地址位地址线可直接可直接寻址址1MB存存储空空间。寻址方式:址方式:7种基本的种基本的寻址方式,提供了灵活的操作址方式,提供了灵活的操作数存取方法。数存取方法。第第22页页/共共71页页汇编语言程序设计8086/8088CPU的主要特性指令系统:100条基本指令除能完成数据传送、算数运算、逻辑运算、控制转移和处理器控制功能外,内部还设有硬件乘除法与串处理指令电路,可以对位、字节、字节串、字串等多种数据类型进行处理。时钟频率:8088:4.7MHz;8086:5MHz;8086-2:8MHz。中断功能:可处理内部软件和外部硬件中断,中断源多达256个。工作模式:只能在实模式下工作。(单任务模式)第第23页页/共共71页页汇编语言程序设计8086CPU结构第第24页页/共共71页页汇编语言程序设计8086/8088CPU中的寄存器在8086/8088CPU中,把寄存器分成三大类:1 1、通用寄存器,包括:、通用寄存器,包括:数据寄存器:数据寄存器:AXAX(AH,AL)AH,AL)、BX(BH,BL)BX(BH,BL)、CX CX(CH,CL)(CH,CL)、DX(DH,DL)DX(DH,DL)指针寄存器:堆栈指针指针寄存器:堆栈指针SP SP、基址指针、基址指针BP BP 变址寄存器:源变址变址寄存器:源变址SISI、目的变址、目的变址DIDI2 2、控制寄存器,包括:、控制寄存器,包括:指令指针指令指针IPIP、标志寄存器、标志寄存器FLAGSFLAGS3 3、段寄存器,包括:、段寄存器,包括:数据段数据段DSDS、代码段、代码段CSCS、附加段、附加段ESES、堆栈段、堆栈段SSSS总共总共1414个个1616位寄存器,位寄存器,8 8个个8 8位寄存器。位寄存器。第第25页页/共共71页页汇编语言程序设计80 x86CPU寄存器第第26页页/共共71页页汇编语言程序设计8086/8088寄存器组第第27页页/共共71页页汇编语言程序设计数据寄存器数据寄存器用来存放操作数及中间结果的通用寄存器称为数据用来存放操作数及中间结果的通用寄存器称为数据寄存器。寄存器。1616位寄存器:位寄存器:AX,BX,CX,DXAX,BX,CX,DX(可以分成两个(可以分成两个8 8位的使位的使用)用)8 8位位寄存器:寄存器:AH,AL,BH,BL,CH,CL,DH,DLAH,AL,BH,BL,CH,CL,DH,DL有些存储器有特殊功能:如有些存储器有特殊功能:如AXAX和和ALAL为累加器,乘法为累加器,乘法指令中专用;指令中专用;BXBX可以作为基址指针,可以作为基址指针,CXCX为计数寄为计数寄存器。存器。第第28页页/共共71页页汇编语言程序设计数据寄存器数据寄存器AX:作作为累加器用,在加法运算中参与运算,累加器用,在加法运算中参与运算,结果存于累加果存于累加其中;所有的其中;所有的I/O指令都使用指令都使用这一寄存器与外部一寄存器与外部设备传送信送信息。息。BX:在:在计算存算存储器地址的器地址的时候,它候,它经常用作基址寄存器。常用作基址寄存器。CX:常用来保存常用来保存计数数值,如在移位指令、循,如在移位指令、循环指令和串指令和串处理理指令中用作指令中用作隐含的含的计数器。数器。DX:在一些指令中,通常用它来存放数据,所以又称:在一些指令中,通常用它来存放数据,所以又称为数据数据寄存器;在做双字寄存器;在做双字长运算运算时,将,将DX和和AX组合在一起存放双合在一起存放双字字长数,用数,用DX存放高位字;存放高位字;对某些某些I/O操作操作时,DX用来存放用来存放端口的地址。端口的地址。第第29页页/共共71页页汇编语言程序设计地址指针和变址寄存器指指 针 寄寄 存存 器器 包包 括括 堆堆 栈 指指 针 寄寄 存存 器器 SPSP(stack stack pointerpointer)和和基基址址指指针寄寄存存器器BP(base BP(base pointer)pointer),变址址寄寄存存器器包包括括源源变址址寄寄存存器器SI(source SI(source index index)和和目目的的变址址寄寄存存器器DI(destination DI(destination index)index)。这4 4个个寄存器都是寄存器都是1616位寄存器。位寄存器。这些些寄寄存存器器在在运运算算过程程中中也也可可用用来来存存放放操操作作数数(只只能能以以字字为单位位),但但经常常的的用用途途是是在在段段内内寻址址时提提供供偏移地址。偏移地址。第第30页页/共共71页页汇编语言程序设计地址指针和变址寄存器SPSP和和BPBP一般与段寄存器一般与段寄存器SSSS联用,以确定堆用,以确定堆栈段中某一段中某一存存储单元的地址,元的地址,SPSP用以指示用以指示栈顶的偏移地址,而的偏移地址,而BPBP可作可作为堆堆栈区中的一个基地址,用以确定在堆区中的一个基地址,用以确定在堆栈中的操作数地址。中的操作数地址。SISI和和DIDI一般与段寄存器一般与段寄存器DSDS联用,以确定数据段中某一用,以确定数据段中某一存存储单元的地址。元的地址。SISI和和DIDI具有自具有自动增量和自增量和自动减量减量的功能,的功能,这一点使在串操作指令中用作一点使在串操作指令中用作变址非常方址非常方便,便,SISI作作为隐含的源含的源变址和址和DSDS联用,用,DIDI作作为隐含的含的目的目的变址和址和ESES联用,从而达到在数据段和附加段中用,从而达到在数据段和附加段中寻址的目的。址的目的。第第31页页/共共71页页汇编语言程序设计指令指针寄存器IP指令指针寄存器IP始终指向当前代码段(CS)所要取出的下一条指令的地址。每取出一个字节指令后,IP自动加1。可以用转移、调用及中断和复位指令改变IP值。第第32页页/共共71页页汇编语言程序设计段基址寄存器段基址寄存器用于存放4个当前段的起始地址。4个段为:代码段CS,数据段DS,堆栈段SS和附加段ES。1、存储器的段8086/80888086/8088CPUCPU对可寻址的对可寻址的1MB1MB空间划分为很多个逻辑段,每空间划分为很多个逻辑段,每个逻辑小于个逻辑小于6464KBKB,段内地址是连续的。,段内地址是连续的。CPUCPU规定规定4 4个段寄存器存放当前可寻址的段基址。个段寄存器存放当前可寻址的段基址。CSCS指示当前的代码段;指示当前的代码段;DSDS指示当前的数据段;指示当前的数据段;SSSS指示当前的堆栈段;指示当前的堆栈段;ESES指示当前的附加段;指示当前的附加段;第第33页页/共共71页页汇编语言程序设计课堂练习1、指向程序堆栈区的段寄存器是()CS B.DS C.SS D.ES2、存放当前堆栈段栈顶的偏移地址的寄存器是()A、BP B、SP C、IP D、SS3、存放当前正在执行指令的下一条指令的偏移地址的寄存器是()A、SP、ESP B、IP、EIP C、CS D、BP、EBP4、指向程序代码段的段寄存器是()A、CS B、DS C、SS D、FS第第34页页/共共71页页汇编语言程序设计状态标志寄存器(FLAGS)该状态标志寄存器为16位,可分为状态标志位(6个)和控制标志位(3个)两类。第第35页页/共共71页页汇编语言程序设计符号标志SF(sign flag)反映运算结果的符号情况,若结果为负数,则SF=1,否则,SF=0。SF的取值与运算结果的最高位一致。第第36页页/共共71页页汇编语言程序设计奇偶标志PF(parity flag)反映操作结果的低8位中“1”的个数的情况,若低8位中“1”的个数位偶数,则PF=1,否则PF=0。主要在数据通信中用来检查数据传送有无错误。第第37页页/共共71页页汇编语言程序设计辅助进位标志AF(auxiliary carry flag)反映一个8位量(或16位量的低8位)的低4位向高4位有无进位或借位的情况,有则AF=1,否则AF=0。AF用于十进制算术运算指令。第第38页页/共共71页页汇编语言程序设计零标志ZF(zero flag)反映运算结果是否为零的情况,结果为零则ZF=1,否则ZF=0。第第39页页/共共71页页汇编语言程序设计溢出标志OF(overflow flag)反映带符号数运算结果是否超出机器所能表示的数值范围的情况,对字节运算为128127,对字运算为3276832767。若超过上述范围称为“溢出”,溢出时OF=1,否则OF=0。第第40页页/共共71页页汇编语言程序设计进位标志CF(carry flag)反映算术运算后,最高位(字节操作为D7,字操作为D15)出现进位(或借位)的情况,最高位有进位(或借位)则CF=1,否则CF0。CF主要用于多字节数的加、减法运算。移位及循环指令也会改变CF的值。第第41页页/共共71页页汇编语言程序设计控制标志第第42页页/共共71页页汇编语言程序设计控制标志第第43页页/共共71页页汇编语言程序设计标志寄存器第第44页页/共共71页页汇编语言程序设计课堂练习1、已知两个有符号的、已知两个有符号的16位字数据位字数据4321H和和0DCBAH,它,它们相加后的相加后的结果是多少?果是多少?标志位志位CF、ZF、SF、OF的的值各是多少?各是多少?2、已知两个有符号的、已知两个有符号的16位字数据位字数据5678H和和0E234H,它它们相加后的相加后的结果是多少?果是多少?标志位志位CF、ZF、SF、OF、PF的的值各是多少?各是多少?1FDB,CF=1,ZF=0,SF=0,OF=038AC,CF=1,ZF=0,SF=0,OF=0,PF=1第第45页页/共共71页页汇编语言程序设计存储器存储器一个存一个存储单元存放的信息元存放的信息为存存储单元的内容元的内容;字字 节 单 元元 内内 容容:地地 址址 00004H00004H的的 内内 容容 为 34H,34H,表表 示示 为(0004H0004H)=34H=34H。字字单元元内内容容:多多用用偶偶地地址址来来表表示示字字单元元的的地地址址,字字的的低低字字节在在偶偶地地址址上上为偶偶地地址址,地地址址00004H00004H的的字字单元元内内容容为1234H,1234H,表表示示为(00002H00002H)=1234H=1234H。如下。如下图所示。所示。(0004H0004H)=1234H=1234H(1234H1234H)=FFEEH=FFEEH则则记记(0004H0004H)=FFEEH=FFEEH;两两个个括括号号表表示示内内容容的的内内容容,即即地地址址0004H0004H单单元元的的内内容容的的内内容容为为FFEEHFFEEH。第第46页页/共共71页页汇编语言程序设计存储器某某单元内容的内容:某元内容的内容:某单元的内容元的内容为要要寻找的找的单元地元地址,址,该地址所指的内容地址所指的内容为要要寻找的内容。找的内容。由于机器字由于机器字长是是1616位,而字数据必位,而字数据必须转换为字字节数据数据才能存放到存才能存放到存储器中。所以一个字数据存入存器中。所以一个字数据存入存储器器中占用中占用连续的二个存的二个存储单元:元:低位字低位字节存入低地址,存入低地址,高位字高位字节存入高地址。字存入高地址。字单元的地址采用它的低地元的地址采用它的低地址来表示址来表示。第第47页页/共共71页页汇编语言程序设计存储器第第48页页/共共71页页汇编语言程序设计80X86 CPU 的工作模式实模式存模式存储器器寻址址8086/80888086/8088系系统中中1MB1MB的存的存储单元按照元按照00000H00000H至至FFFFFHFFFFFH来来编址。址。但但CPUCPU的内部寄存器都是的内部寄存器都是1616位的,位的,显然用寄存器不能直接然用寄存器不能直接对1M1M字字节的内存空的内存空间进行行寻址,址,为此引入了分段、物理地址和此引入了分段、物理地址和逻辑地址的概念。地址的概念。(1 1)分段的)分段的实现:8086/80888086/8088中将中将1MB1MB内存分内存分为若干个段(称若干个段(称为逻辑段),每段),每个段最多包含个段最多包含64KB64KB。段与段之。段与段之间是相互独立的,可以分是相互独立的,可以分别寻址。址。规定每个段的首地址是一个可以被定每个段的首地址是一个可以被1616整除的数(即段起整除的数(即段起始地址的低始地址的低4 4位位为0 0)。因此,可以取)。因此,可以取2020位地址位地址码中的高中的高1616位位来表示段地址。前已指出,来表示段地址。前已指出,8086/8088 CPU8086/8088 CPU设置了置了4 4个段寄存个段寄存器(器(CSCS、DSDS、SSSS、ESES)。段的位置不受任何限制,段与段之)。段的位置不受任何限制,段与段之间可以是可以是连续的,可以是的,可以是间断的,也可以是部分重叠的,甚断的,也可以是部分重叠的,甚至可以是完全重叠的。至可以是完全重叠的。第第49页页/共共71页页汇编语言程序设计段的分配第第50页页/共共71页页汇编语言程序设计小段的概念小段的概念从从0地址开始每地址开始每16字字节为一小段,每个小段的第一个字一小段,每个小段的第一个字节的地的地址址为小段的起始地址小段的起始地址对于于16位地址位地址总线,段内存,段内存储器小段地址如下:器小段地址如下:如:如:0000H,0001H,0002H,000EH,000FH0010H,0011H,0012H,001EH,001FH0020H,0021H,0022H,002EH,002FHFFF0H,FFF1H,FFF2H,FFFEH,FFFFH其中:第一列就是每个小段的首地址。其中:第一列就是每个小段的首地址。第第51页页/共共71页页汇编语言程序设计小段的概念小段的概念每个小段首地址特征:每个小段首地址特征:在二在二进制表示的地址中,它的低制表示的地址中,它的低4 4位二位二进制一定制一定为零!即在零!即在1616进制表示的地址中,最低位制表示的地址中,最低位为0H;0H;在在1M1M字字节的地址空的地址空间,共有共有64K64K个小段其首地址个小段其首地址为:二二进制数小段地址制数小段地址 1616进制数小段地址制数小段地址0000 0000 0000 0000 0000B 0000 0H0000 0000 0000 0000 0000B 0000 0H0000 0000 0000 0001 0000B 0001 0H0000 0000 0000 0001 0000B 0001 0H 1111 1111 1111 1110 0000B FFFE 0H1111 1111 1111 1110 0000B FFFE 0H1111 1111 1111 1111 0000B FFFF 0H1111 1111 1111 1111 0000B FFFF 0H第第52页页/共共71页页汇编语言程序设计物理地址第第53页页/共共71页页汇编语言程序设计逻辑地址(4 4)逻辑地址:由段基址和段内偏移地址地址:由段基址和段内偏移地址组成的地成的地址,段基址和段内偏移地址都是址,段基址和段内偏移地址都是1616位的无符号二位的无符号二进制数,在程序制数,在程序设计时使用。使用。(5 5)逻辑地址和物理地址的关系地址和物理地址的关系把段地址左移把段地址左移4 4个二个二进制位再加上偏移地址制位再加上偏移地址值形成物形成物理地址,写成:理地址,写成:物理地址物理地址=16d=16d 段地址段地址+偏移地址偏移地址 每个存每个存储单元只有唯一的物理地址。但可由不同元只有唯一的物理地址。但可由不同的段地址和不同的偏移地址的段地址和不同的偏移地址组成。成。逻辑地址与物理地址与物理地址概念如下地址概念如下页图所示。所示。第第54页页/共共71页页汇编语言程序设计物理地址的计算第第55页页/共共71页页汇编语言程序设计注意注意 1、在、在8088CPU的的IBMPC系系统中,存中,存储器首尾器首尾地址的用途固定。地址的用途固定。00000H-003FFH共共1K内存内存单元用于存放中断向量。元用于存放中断向量。FFFF0H-FFFFFH是存是存储器底部的器底部的16个个单元。系元。系统加加电复位复位时,会自,会自动转到到FFFF0H单元元执行,而在行,而在FFFF0H处存放一条无条件存放一条无条件转移指令,移指令,转向系向系统初初始化程序。始化程序。2、IBMPC机机对段的起始地址有限制,段的起始段的起始地址有限制,段的起始地址一定能被地址一定能被16整除,即段不能从任意地址开始:整除,即段不能从任意地址开始:必必须从任一从任一小段小段(paragraph)的首地址开始。)的首地址开始。第第56页页/共共71页页汇编语言程序设计保护模式下的80 x8680286以上的以上的计算机增加了物理地址空算机增加了物理地址空间,如,如80286提供了提供了16M,80386提供了提供了4GB的地址空的地址空间或更多或更多的地址空的地址空间,前面介,前面介绍的在的在实模式下的模式下的寻址方式是址方式是由由逻辑地址得到物理地址的,地址得到物理地址的,实模式下最大模式下最大寻址空址空间只只为1MB。在增加了地址空。在增加了地址空间的情况下,系的情况下,系统首首先要解决的先要解决的问题是如何是如何寻址,因此引出了保址,因此引出了保护模式模式的存的存储器器寻址方法。同址方法。同时在在WINDOWS系系统下可以下可以提供多任提供多任务处理功能,即多个理功能,即多个应用程序能同用程序能同时运行,运行,同同时还要要对存放在存存放在存储器中的代器中的代码及数据的共享和及数据的共享和保保护提供支持。提供支持。第第57页页/共共71页页汇编语言程序设计保护模式存储器寻址机制在在80286CPU以上的微以上的微处理器,既可以工作在理器,既可以工作在实模式模式下也可以工作在保下也可以工作在保护模式下,如果要工作在保模式下,如果要工作在保护模模式下,要求程序式下,要求程序员在程序中指定在程序中指定逻辑地址,机器地址,机器则采用另外一种采用另外一种间接的方法得到相接的方法得到相应的物理地址。因的物理地址。因此,此,对程序程序员编程来程来说,并未增加复,并未增加复杂性。性。在保在保护模式下,模式下,逻辑地址由地址由选择符和偏移地址两部分符和偏移地址两部分组成。成。选择符存放在段寄存器中,但它不能直接表符存放在段寄存器中,但它不能直接表示段基地址,而由操作系示段基地址,而由操作系统通通过一定的方法取得段一定的方法取得段基地址,再和偏移地址相加,从而求得所基地址,再和偏移地址相加,从而求得所选存存储单元的物理地址。下元的物理地址。下图所表示的所表示的为保保护模式存模式存储器器寻址的示意址的示意图。第第58页页/共共71页页汇编语言程序设计保护模式下存储器寻址第第59页页/共共71页页汇编语言程序设计保护模式下存储器寻址在实模式下,段寄存器指示段基地址,即段寄存器存放在当前正在允许程序的段基地址。从图可以看出,在保护模式下段寄存器存放当前正在运行程序的段选择符,通过段描述符表中的描述符间接的形成段基地址,加上偏移地址得到最终的线性地址。此时对于存储器来说不必分段就可以访问到所有的内存地址。在实模式下,段地址是直接通过段寄存器得到的,在保护模式下段地址是间接得到的。另外,保护模式的偏移地址最大可以为32位,最大段长可以从64KB扩大到4GB。第第60页页/共共71页页汇编语言程序设计DEBUG命令1、进入DEBUG,在DOS提示符下输入命令:DEBUG 2 2、退出、退出DEBUGDEBUG:Q Q 3 3、检查和修改寄存器内容的命令和修改寄存器内容的命令R(register)(register),它有,它有三种格式:三种格式:1 1)R R;显示示CPUCPU内所有寄存器内容和内所有寄存器内容和标志位状志位状态及将及将要要执行的下一条指令的地址、代行的下一条指令的地址、代码及及汇编语句形式。句形式。2 2)R R 寄存器名;寄存器名;显示和修改某个寄存器内容,其中示和修改某个寄存器内容,其中修改状修改状态标志寄存器志寄存器为R F R F 第第61页页/共共71页页汇编语言程序设计DEBUG 命令4 4、显示存示存储单元的命令元的命令D(DUMP)(DUMP),格式,格式为:1 1)D D;显示示CS:100CS:100开始的一片内容开始的一片内容 2 2)D D 内存地址内存地址;以;以CSCS为段寄存器段寄存器3 3)D D 地址范地址范围;功能:以两种形式功能:以两种形式显示指定内存范示指定内存范围内容,一种形式内容,一种形式为1616进制内容,一种形式制内容,一种形式为相相应的的ASCIIASCII码字符,字符,对不可不可见字符以字符以.代替。代替。第第62页页/共共71页页汇编语言程序设计DEBUG 命令5、修改内存命令E(ENTER),有两种格式;1)E 地址 单元内容例如,-E DS:100 则可能显示为:18E4:0100 89.-如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键可接着显示下一个单元的内容,如下:18E4:0100 89.78 1B.-2)E 地址 内容列表例如,-E DS:100 F3XYZ8D 其中F3,X,Y,Z和8D各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容。若内容列表均为十六进制数,则两数之间用空格隔开。如:-E 100 F4 56 45 34 32第第63页页/共共71页页汇编语言程序设计DEBUG 命令6、汇编命令A(Assemble),格式如下:1)A ;以CS:100作为地址2)A 位移;以CS内容作为段地址,指定位移3)A 段地址:位移4)A 段寄存器名:位移该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:DEBUG把键入的数字均看成十六进制数。第第64页页/共共71页页汇编语言程序设计DEBUG 命令7、执行并显示系统环境T(Trace)格式:T =地址 条数功能:地址的缺省值是当前IP值,条数的缺省值是一条。执行由指定地址开始的指定条数的指令。如 T 执行当前指令并显示状态T 10 从当前指令开始执行10H条指令8、运行命令G,其格式为:1)G ;从CS:IP开始执行指令。2)G=地址;从指定地址开始执行指令。3)G=地址 断点;从指定地址开始执行,到端点处停止第第65页页/共共71页页汇编语言程序设计DEBUG 命令9、反汇编命令U(Unassemble)1)U 地址2)U 地址范围功能:将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。地址及范围的缺省值是上次U命令后下一地址的值。第第66页页/共共71页页汇编语言程序设计例子第第67页页/共共71页页汇编语言程序设计课堂练习课堂练习1、已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H,DS段有一操作数,其偏移地址=0204H,1)画出各段在内存中的分布 2)指出各段首地址 3)该操作数的物理地址?10550H250A0H2EF00H8FF00HCSSS CSDSES解:解:各段分布及段首址见右图所示。各段分布及段首址见右图所示。操作数的物理地址为:操作数的物理地址为:250AH10H+0204H=252A4H第第68页页/共共71页页汇编语言程序设计课堂练习2、已知内存中两个字、已知内存中两个字节单元的内容元的内容(20000H)10H,(,(20001H)20H则从字从字单元元20000H中取中取出的一个字出的一个字为()()A、10HB、20HC、1020HD、2010H3、在、在实模式下,模式下,逻辑地址地址2F3E:1020H对应的物理地的物理地址是多少?址是多少?该物理地址物理地址还有其他有其他逻辑地址地址吗?试举例例说明。明。第第69页页/共共71页页汇编语言程序设计课后作业题第33面2.2、2.3、2.4、2.5第第70页页/共共71页页汇编语言程序设计感谢您的观看。感谢您的观看。第第71页页/共共71页页