如何在内存中编辑和执行汇编程序_第1页
如何在内存中编辑和执行汇编程序_第2页
如何在内存中编辑和执行汇编程序_第3页
如何在内存中编辑和执行汇编程序_第4页
如何在内存中编辑和执行汇编程序_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PARTA-3ExaminingComputerMemory如何在内存中编辑和执行汇编程序ExecutingInstructionsand一、UsingTheDEBUGProgram

1.StartingDEBUG⑴.Someexamples①C>DEBUGCCCC.EXE↙-②C>DEBUGB:\CCCC·EXE↙-③C>DEBUG↙-NCCCC·EXE↙-L↙-⑵.TheInitialValueAfterStartingDEBUGDEBUG程序起动后,把各寄存器和标志位置成以下状态:

①SegmentRegister(CS、DS、ES和SS)=自由存贮空间的底部,即DEBUG程序结束以后的第一个段。②IP=0100H。③SP=段尾或装载程序临时区底部(两者中取较低的一个)④AX、BX、CX、DX、BP、SI、DI=0若调入DEBUG时指定了文件名,则BX(高位)+CX=文件长度的字节数。⑤标志位置都为清除状态。

2.AnAssemblylanguageExample

DisplayingaCharacter"3"onScreen:

①KeyinginProgramInstructionsandData:C:\>DEBUG↙(进入DEBUG)-A100↙(进入汇编状态)XXXX:0100MOVDL,33↙(数字3的ASCII码)XXXX:0102MOVAH,2↙XXXX:0104INT21↙(调用2号功能在屏上显示DL中字符)XXXX:0106INT20↙(正常结束中断)XXXX:0108↙(回车,结束汇编状态)-G↙(运行当前汇编程序)

3

(Display)Programterminatednormally

②UnAssemble

-U100,108↙XXXX:0100B233MOVDL,33XXXX:0102B402MOVAH,2XXXX:0104CD21INT21XXXX:0106CD20INT20XXXX:0108

③SavingaProgramfromwithinDEBUG

-RBX↙BX0000:↙-RCX↙CX0000:8↙(程序大小)-NW3.COM↙(命名)-W↙(存盘)

④ExitDEBUG

-Q↙C>_二、DEBUGCommands

RulesofDEBUGCommands:

①所有命令均为一单字母,其后跟一个或多个参数。②命令和参数可大写、小写或大、小写混合方式输入。③命令与参数间可用空格或逗号隔开。④修改软件时注意,DEBUG不能改写·EXE类型的文件。所以,如果需要改写,就必须事先将EXE文件的后缀改名,待修改后再恢复原来名字。⑤命令参数中都以16进制数表示。

⑥参数中字符的引号可用双引号,也可用单引号。

1.Assemble

Function:Assemblesymbolicinstructionsintomachinecode.Format:A[Address]Theparameter“Address”:

用字母表示的段寄存器标志加上偏移值,例如“ACS:100”

一个段地址,加上一个偏移值,例如“A4AB:100”。

仅有一个偏移值,例如“A100”。

ForExample:

在屏上显示“梅花”

C>DEBUG↙-A↙08FE∶0100MOVAH,02↙08FE∶0102MOVDL,05↙08FE∶0104INT21↙(调用2号功能显示DL中字符)08FE∶0106INT20↙08FE∶0108↙-RCX↙CX0000:8↙-NA.COM↙-W↙-Q↙

Execution:

C>A.COM↙

2.Unassemble

Function:Unassemblemachinecodeintosymboliccode.Format:U[地址]——Unassemblebeginsatspecificaddress.U〈范围〉——Unassemblewithinspecificarea.ForExample1:

C>DEBUGKEY·EXE↙-U↙(隐含从当前指针开始)0C1C∶000050PUSHAX↙...-U0000L13↙(从0000开始13个单元)-U0000DF3↙(从0000~DF3)

ForExample2:

C>DEBUGWS.COM>11.TXT↙(反汇编存盘)-U100FFFF↙......-Q↙(红框内的字符不可见)

C>_3.DumpFunction:Displaythecontentsofareaofmemory.Format:—D[[地址]-D〈〈范围〉ForExample:-D0000L1F↙↙(显示从0000开始始的1F字节节内容)-D40:13↙↙((显示基本本内存大小))-DFFFF:5↙(CheckingROMBIOSDate)FFFF:0000CD19E000F030362F-31362F393800FCBD06/16/98...4.EnterFunction:Enterdataintomemory,beginningataspecificlocation.Format:E〈地址〉〉〈内容表表〉E〈地址〉〉ForExample1:-EDS:100F2,“XYZ”,8D↙(代替指定地地址开始单元元内容)ForExample2:-EDS∶100↙↙09BC∶010000.3000.3100.3200.↙↙(回车结束))Note:ForExample2格式式有三种操作作方式:①按空格键键—————上一个替替换完成,并并显示下一个个单元的内容容。如要修改改,则键入新新的字节,如如不修改,则则只按空格键键。②输入一个个减号(“--”)—————显示前前一单元的内内容,可进行行修改。连续续使用“-””号、可不断断地反方向修修改。③按回车键键——结结束E命令。。5.RegisterFunction:Displayandmodificationthecontentsofoneormoreregisters.Format:R命令有三种种功能格式::①-R——显示所所有寄存器及及标志位内容容。②-R〈寄存存器名〉——显示和和修改一个指指定的寄存器器的内容。ForExample:-RAX↙↙AXF1F4:3B↙此时,可选择择以下操作之之一:a.若不改变变其内容,则则直接按回车车键。b.若要改变变内容,可用用1~4个16进制值代代替原值,再再回车。③-RF——显示和和修改标志位位态。ForExample:-RF↙NVUPEIPLNZNAPONC-此时,可采用用以下两种操操作之一:a.若不需要要修改,直接接按回车键。。b.若有一个个或多个标志志要修改,则则可输入此标标志的相反值值。输入标志的次次序是无关的的,输入各标标志之间可以以没有空格,,输入完毕,按按回车键。即即-PONZDINV↙PWS中的标标志符号表示示置1:置0:状态:-RF↙NVUPEIPLZRNAPENC-

OF

溢出

DF

方向

IF中断

SF符号

ZF零

AF辅助

PF奇偶

CF进位OVNV有/无

DPUP减/增

EIDI开/关NGPL负/正ZRNZ零/非ACNA有/无PEPO奇/偶CYNC有/无6.GoFunction:RuntheexecutableprogramInmemory.Format:G[=〈〈始地址〉]][〈断点〉〉…]C>DEBUGB:KGY.EXE↙↙-G=023↙(在地址CS:0023中断)7.TraceFunction:Tracetheexecutionofoneinstruction.Format:T[=地址址]——执行行CS:IP或指定地址址处的指令。。T[=地址址][n]——执执行指定地地址后n条条指令。ForExample:-T03↙↙(执行CS:IP后后3条指令令)-T=CS:0F3B↙(执行地址址CS:0F3B处处指令)8.SearchFunction::Searchaaddressofspecifycontent.Format:S〈地址范围围〉〈内内容表〉ForExample1:-S1001206↙(在DS∶∶100~~120的的范围内查查找06H地址)08FF∶∶0101(查得08FF∶0101内内存单元的的内容为06H)ForExample2:-SCS∶00010041“XYZ”↙↙〖28-17〗9.CompareFunction::Comparethecontentbetweentwomemoryarea.Format:-C〈源地址范范围〉〈〈目的地地址〉DisplayFormat:〈源地址〉〉〈源内容容〉〈目标标内容〉〈〈目标地址址〉ForExample1:-CCS∶100L20200↙08FF∶∶0105000608FF∶0205Note:以CS∶100为内内存首地址址的32个个(20H)字节与与以CS∶∶200为为首地址的的32个字字节进行比比较。其中中的CS∶∶105内内容“00”与CS∶205内容“06”不同同。〖28-18〗10.FillFunction::Fillthecontenttospecifymemoryunit.Format:F〈地地址范围〉〉〈内内容表〉ForExample:-F04BA∶100L5F3“XYZ”8D↙(用指定的的5个字节节填入04BA:100开始始的5个内内存单元))Note:若内容表中中的字节数数少于地址址范围,则则内容表被被重复使用用,直到指指定范围被被填满为止止;若内容容表的字节节数大于地地址址范围,则则多余的内内容被忽略略。〖28-19〗11.MoveFunction::Movethecontentfromspecifymemoryareatoanother.Format:M〈源地址范范围〉〈〈目的地址址〉ForExample1:-MCS∶100110500↙↙(将CS∶∶100~~110共共17个字字节内容搬搬到DS∶∶500开开始的内存存区)ForExample2:-MCS∶100110CS∶105↙↙-MCS∶100110CS∶0F5↙↙目的地址与与源地址可可以重迭,,但重迭部分分原来内容容被覆盖。。例,在程序序中插入一一段指令::12.HexarithmeticFunction::计算两个16进制数数的和与差差。Format:H〈值〉〈〈值〉ForExample:-H0F8↙00170007(表示0FH+8H=0017H,0FH-08H=0007H)13.NameFunction::Nameaprogram.Format:N〈文件标识识符〉[[〈文件标标识符〉………]ForExample:A>DEBUG↙↙-Nb:myprog↙-L↙〖28-21〗14.LoadFunction::Loadaprogramtomemory.Format:L〈起址〉〈〈驱动器号号〉〈扇区区号〉〈〈扇区数〉〉L[地址](装入文文件到指定定地址,省省地址则为为CS:0100)ForExample1:-LCS:1200053↙↙(“0”为为A盘)ForExample2:-NB:XEARCH.EXE↙↙;设置文件件标识符-L↙↙;读入文件件……-RBX↙;检查文件件长度BX0000:↙-RCX↙CX014A;原文件长长度为014AH字字节:012E↙;修改文件件长度为012EH字节-W↙;写盘命令令(Write)〖28-22〗15.WriteFunction::Writeaprogramontodisk.Format:W〈起址〉〈〈驱动器号号〉〈扇区区号〉〈扇扇区数〉——把数数据写到指指定的区段段W[地址]]——把指指定的内存存中数据写写入文件中中-NB:PROG↙;设置文件件标识符-L↙……-RBX↙↙;修改BX、CX的的内容BX0000:0↙↙;文件长度度的高位字字节数-RCX↙↙CX001F;文件长度度的低位字字节数:22↙↙-W↙;写入磁盘盘。〖28-23〗Note:Writeprogramfilesonlywithextenstion,becauseWdoesnotsupportthe.exeformat.tomodifya.exeprogram,youmaychangetheextensiontemporarily.16.InputFunction::Getdatafromaport(某端口).Format:I〈端口地址址〉ForExample::-I2F8↙6B(表示从端端口02F8取得的的数据为6BH)17.OutputFunction::Outputdatatoaspecialport(指定端口口).Format:O〈端口地址址〉〈〈字节〉ForExample::-O2F84F↙↙(把字节值值4FH送送到端口2F8去))〖28-25〗18.ProceedFunction::executeasetofrelatedinstructions.(Executesasubroutinecall(call),loop(LOOP),interrupt(INT),orrepeatstringinstruction(REP)throughtothenextinstruction)ForExample:Editingandexecutingaprogram.编辑并执行行一个程序序:-A100↙xxxx:0100MOVDL,1↙↙(“1”为为笑脸的AscII码)xxxx:0102MOVAH,2↙↙xxxx:0104INT21↙xxxx:0106INT20↙xxxx:0108↙-T-T-P(用“P””命令执行行INT21h))〖28-26〗19.QuitFunction::QuittheDEBUGsessionForExample:Editingandexecutingaprogram.编辑并执行行一个程序序:-A100↙xxxx:0100MOVDL,1↙↙(“1”为为笑脸的AscII码)xxxx:0102MOVAH,2↙↙xxxx:0104INT21↙xxxx:0106INT20↙xxxx:0108↙-G=100↙↙☺Programteminatednormally-Q↙↙〖28-27〗Questions::Page493-23-43-73-83-103-12(参考考P.46显显示示字字符符!!))9、静夜四四无邻,,荒居旧旧业贫。。。12月-2212月-22Friday,December23,202210、雨中黄黄叶树,,灯下白白头人。。。22:26:5422:26:5422:2612/23/202210:26:54PM11、以我我独沈沈久,,愧君君相见见频。。。12月月-2222:26:5422:26Dec-2223-Dec-2212、故人江海海别,几度度隔山川。。。22:26:5422:26:5522:26Friday,December23,202213、乍乍见见翻翻疑疑梦梦,,相相悲悲各各问问年年。。。。12月月-2212月月-2222:26:5522:26:55December23,202214、他乡生白发发,旧国见青青山。。23十二月月202210:26:55下午午22:26:5512月-2215、比不不了得得就不不比,,得不不到的的就不不要。。。。。十二月月2210:26下下午12月月-2222:26December23,202216、行动动出成成果,,工作作出财财富。。。2022/12/2322:26:5522:26:5523December202217、做做前前,,能能够够环环视视四四周周;;做做时时,,你你只只能能或或者者最最好好沿沿着着以以脚脚为为起起点点的的射射线线向向前前。。。。10:26:55下下午午10:26下下午午22:26:5512月月-229、没有失失败,只只有暂时时停止成成功!。。12月-2212月-22Friday,December23,202210、很多事事情努力力了未必必有结果果,但是是不努力力却什么么改变也也没有。。。22:26:5522:26:5522:2612/23/202210:26:55PM11、成功就是日日复一日那一一点点小小努努力的积累。。。12月-2222:26:5522:26Dec-2223-Dec-2212、世间成事,,不求其绝对对圆满,留一一份不足,可可得无限完美美。。22:26:5522:26:5522:26Friday,December23,202213、不知香积积寺,数里里入云峰。。。12月-2212月-2222:26:5522:26:55December23,202214、意意志志坚坚强强的的人人能能把把世世界界放放在在手手中中像像泥泥块块一一样样任任意意揉揉捏捏。。23十十二二月月202210:26:55下下午午22:26:5512月月-2215、楚塞塞三湘湘接,,荆门门九派派通。。。。。十二月月2210:26下下午12月月-2222:26December23,202216、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论