资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,PART A-3,Examining Computer Memory,如何在内存中编辑和执行汇编程序,Executing Instructions,and,一、,Using The DEBUG Program,1Starting DEBUG,.Some examples,CDEBUG CCCC.EXE,-,CDEBUG B:CCCCEXE,-,CDEBUG,-N CCCCEXE,-L,-,The Initial Value After Starting DEBUG,DEBUG程序起动后,把各寄存器和标志位置成以下状态:,Segment Register(CS、DS、ES和SS)=自由存贮空间的底部,,即DEBUG程序结束以后的第一个段。,IP=0100H。,SP=段尾或装载程序临时区底部(两者中取较低的一个),AX、BX、CX、DX、BP、SI、DI=0,若调入DEBUG时指定了文件名,则BX(高位)+CX=文件长度的字节数。,标志位置都为清除状态。,2.An Assembly language Example,Displaying a Character 3 on Screen:,Keying in Program Instructions and Data:,C:DEBUG,(进入DEBUG),-A 100,(进入汇编状态),XXXX:0100 MOV DL,33,(数字3的ASCII码),XXXX:0102 MOV AH,2,XXXX:0104 INT 21,(调用2号功能在屏上显示DL中字符),XXXX:0106 INT 20,(正常结束中断),XXXX:0108,(回车,结束汇编状态),-G,(运行当前汇编程序),3,(Display),Program terminated normally,UnAssemble,-U 100,108,XXXX:0100 B233 MOV DL,33,XXXX:0102 B402 MOV AH,2,XXXX:0104 CD21 INT 21,XXXX:0106 CD20 INT 20,XXXX:0108,Saving a Program from within DEBUG,-RBX,BX 0000,:,-RCX,CX 0000,:8,(程序大小),-N W3.COM,(命名),-W,(存盘),Exit DEBUG,-Q,C,_,二、,DEBUG Commands,Rules of DEBUG Commands:,所有命令均为一单字母,其后跟一个或多个参数。,命令和参数可大写、小写或大、小写混合方式输入。,命令与参数间可用空格或逗号隔开。,修改软件时注意,DEBUG不能改写EXE类型的文件。所以,,如果需要改写,就必须事先将EXE文件的后缀改名,待修,改后再恢复原来名字。,命令参数中都以16进制数表示。,参数中,字符的引号可用双引号,也可用单引号。,1,A,ssemble,Function:,Assemble symbolic instructions into machine code.,Format:,A Address,The parameter“Address”:,用字母表示的段寄存器标志加上偏移值,例如“,A CS,:,100,”,一个段地址,加上一个偏移值,例如“,A 4AB,:,100,”。,仅有一个偏移值,例如“,A 100,”。,For Example:,在屏上显示“梅花”,C DEBUG,-A,08FE0100 MOV AH,02,08FE0102 MOV DL,05,08FE0104 INT 21,(调用2号功能显示DL中字符),08FE0106 INT 20,08FE0108,-RCX,CX 0000,:8,-N A.COM,-W,-Q,Execution:,C A.COM,2,U,nassemble,Function:Unassemble machine code into symbolic code.,Format:,U 地址 Unassemble begins at specific address.,U 范围 Unassemble within specific area.,For Example 1:,CDEBUG KEYEXE,-U,(隐含从当前指针开始),0C1C0000 50 PUSH AX,.,-U 0000 L13,(从0000开始13个单元),-U 0000 DF3,(从0000DF3),For Example 2:,CDEBUG WS.COM 11.TXT,(反汇编存盘),-U 100 FFFF,.,-Q,(红框内的字符不可见),C_,3Dump,Function:,Display the contentsof area of memory.,Format:,D,地址,-D,范围,For Example:,-D0000L1F,(显示从0000开,始,始的1F字,节,节内容),-D40:13,(,(显示基,本,本内存大小,),),-DFFFF:5(Checking ROM BIOS Date),FFFF:0000CD 19 E000 F0,30 362F-31 362F 3938,00 FCBD.,06/16/98,.,4Enter,Function:,Enterdataintomemory,beginning ata specific location.,Format:,E 地址,内容,表,表,E 地址,For Example 1:,-E DS:100F2,“XYZ”,8D,(代替指定,地,地址开始单,元,元内容,),For Example 2:,-E DS100,09BC010000.30 00.3100.3200.,(回车结束,),),Note:,For Example 2 格,式,式有三种操,作,作方式:,按空格,键,键,上一个,替,替换完成,,并,并显示下一,个,个单元的内,容,容。如要修,改,改,则键入,新,新的字节,,如,如不修改,,则,则只按空格,键,键。,输入一,个,个减号(“,”),显示,前,前一单元的,内,内容,可进,行,行修改。连,续,续使用“,”,”号、可不,断,断地反方向,修,修改。,按回车,键,键,结,结束E命令,。,。,5Register,Function:,Display and modificationthe contents ofoneor,moreregisters.,Format:,R命令有三,种,种功能格式,:,:,-R,显示,所,所有寄存器,及,及标志位内,容,容。,-R 寄,存,存器名,显示,和,和修改一个,指,指定的寄存,器,器的内容。,For Example:,-RAX,AX F1F4,:3B,此时,可选,择,择以下操作,之,之一:,a若不改,变,变其内容,,则,则直接按回,车,车键。,b若要改,变,变内容,可,用,用14个16进制值,代,代替原值,,再,再回车。,-RF,显示,和,和修改标志,位,位态。,For Example:,-,RF,NV UPEI PL NZNA PONC,-,此时,可采,用,用以下两种,操,操作之一:,a若不需,要,要修改,直,接,接按回车键,。,。,b若有一,个,个或多个标,志,志要修改,,则,则可输入此,标,标志的相反,值,值。,输入标志的,次,次序是无关,的,的,输入各,标,标志之间可,以,以没有空格,,,,,输入完毕,,按,按回车键。,即,即,-,PONZDINV,PWS中的,标,标志符号表,示,示,置 1:,置 0:,状态:,-RF,NV UPEI PL ZRNA PENC,-,OF,溢出,DF,方向,IF,中断,SF,符号,ZF,零,AF,辅助,PF,奇偶,CF,进位,OV,NV,有无,DP,UP,减增,EI,DI,开关,NG,PL,负正,ZR,NZ,零非,AC,NA,有无,PE,PO,奇偶,CY,NC,有无,6Go,Function:,Run the executable program Inmemory.,Format:,G ,始地址,断点,CDEBUGB:KGY.EXE,G=0 23,(在地址CS:0023中断),7Trace,Function:,Tracetheexecutionof one instruction.,Format:,T 地,址,址,执,行,行CS:IP或指定地,址,址处的指令,。,。,T 地,址,址n,执,执行指定,地,地址后n,条,条指令。,ForExample:,-T03,(执行CS:IP,后,后3条指,令,令),-T=CS:0F3B,(执行地,址,址CS:0F3B,处,处指令),8Search,Function,:,:,Search aaddressofspecifycontent.,Format:,S,地址范,围,围,内,内容表,ForExample1:,-S 1001206,(在DS,100,120,的,的范围内,查,查找06H地址),08FF,0101,(查得08FF0101,内,内存单元,的,的内容为06H),ForExample2:,-SCS00010041“XYZ”,28,-17,9Compare,Function,:,:,Comparethecontentbetweentwomemory area.,Format:,-C,源地址,范,范围,目的,地,地址,DisplayFormat:,源地址,源内,容,容目,标,标内容,目标地,址,址,ForExample1:,-CCS100L20200,08FF,0105 00 06 08FF0205,Note:,以CS100为,内,内存首地,址,址的32,个,个(20H)字节,与,与以CS,200,为,为首地址,的,的32个,字,字节进行,比,比较。其,中,中的CS,105,内,内容“00”与CS205内容“06”不,同,同。,28,-18,10Fill,Function,:,:,Fillthecontenttospecifymemory unit.,Format:,F ,地,地址范围,内,内容表,ForExample:,-,F 04BA100L5F3“XYZ”8D,(用指定,的,的5个字,节,节填入04BA:100开,始,始的5个,内,内存单元,),),Note:,若内容表,中,中的字节,数,数少于地,址,址范围,,则,则内容表,被,被重复使,用,用,直到,指,指定范围,被,被填满为,止,止;若内,容,容表的字,节,节数大于,地,地,址,址范围,,则,则多余的,内,内容被忽,略,略。,28,-19,11Move,Function,:,:,Movethecontentfrom specify memoryarea toanother.,Format:,M,源地址,范,范围,目的地,址,址,ForExample1:,-MCS100110500,(将CS,100,110,共,共17个,字,字节内容,搬,搬到DS,500,开,开始的内,存,存区),ForExample2:,-MCS100110CS105,-MCS100110CS0F5,目的地址,与,与源地址,可,可以重迭,,,,,但重迭部,分,分原来内,容,容被覆盖,。,。,例,在程,序,序中插入,一,一段指令,:,:,12.Hex arithmetic,Function,:,:,计算两个16进制,数,数的和与,差,差。,Format:,H,值,值,ForExample:,-H0F8,00170007,(表示0FH+8H=0017H,0FH-08H=0007H),13Name,Function,:,:,Namea program.,Format:,N,文件标,识,识符,文件,标,标识符,ForExample:,ADEBUG,-Nb,:,myprog,-L,28,-21,14Load,Function,:,:,Loada
展开阅读全文