菜鸟傻问:debug后面跟的参数用法大家能不能介绍一下[100分] debug的参数? 好像只能是被调试的程序名吧, 再后面就是传给这个被调试的程序的参数了. 如果你讲的是debug的命令的参数的话, 你还是找本汇编的书来看, 汇编书上都有debug的用法的介绍的. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 IBM汇编语言 清华 ,有附录呀。再说,就那么几条参数试试不就得了。 DEBUG命令集一、DEBUG功能介绍 EDBUG是为DOS提供的有力的侦错,跟踪程序运行,检查系统数据的工具程序,要很好的使用它必须具备一定的汇编程序设计和硬件基本知识的能力。当然它为汇编语言程序员提供了有效的测试手段它的功能包括以下几方面: 1、直接输入、更改、跟踪、运行汇编语言源程序: 2、观察操作系统的内容: 3、查看ROM BIOS的内容: 4、观察更改RAM内部的设置值 5、以扇区或文件的方式读写软盘数据: 在DEBUG中地址用段地址与段内地址来表示,而段地址可以明确的指出来,也可以用一个段指示器(段寄存器)来代表,用段寄存器表示时,其段地址就是此寄存器的内涵值:如:用段地址和段内地址表示F0FF:0100,用段寄存器和段内地址表示CS:0100 CS<--指向F0FF 二、DEBUG命令1、“?”命令:对DEBUG所有命令的说明2、“A”命令:将汇编语言源程序译成机器码,并存入内存地址 格式:-A[起始地址] 如果A后无地址,则DEBUG会将DS:0100定为起始地址: 例 C:>DEBUG -A 0100 08F1:0100 MOV CH,09 08F1:0102 MOV DX,109 08F1:0105 INT 21H 08F1:0107 DB ‘May I help you $' 08F1:0113 ↓(回车,离开A状态) -G (运行) May I help you (运行结果) Program terminated normally(表示运行正常)3、“C”命令:比较两段内存区内容,并列出相异处 格式:-C 第一段起始地址 第一段制止地址 第二段起始地址 如:C 4000:0 3F 100 即比较4000:0000--4000:003F 与 DS:0100--DS:013F 之间的内容 显示格式: 内存地址1 内含值1 内含值2 内存地址2 (只显示内容的差异处) 当要比较的范围都在DS内,则段地址不必指出 如:-C 0 3F 100 “C”命令还有一种格式: -C 地址1 L长度 地址24、“D”命令:将指定内存区内容列出 格式:-D [范围](如没有指出段地址则其默认为DS段) 列出的内容分别以十六进制及ASCLL码字符显示 例:-D 10,4F 即显示DS:0010-004F的内存内容 和“C”命令一样后面也可以带长度 例:-D 100 L20 即显示DS:100-DS:11F的内容一共20H个字节 若没有指定范围,则每次自动显示7FH(即128个)字节5、“E”命令:修改内存内容 格式:-E 起始地址[数据行] ①用给定内容代替指定范围的单元内容 例:-E 100 41 42 43 44 48 47 46 45(其中41--45均为键入的ABCD...的 ASCLL码值) 再用“D”命令则可以显示出来 -D 100,L08 08F1:0100 41 42 43 44 48 47 46 45 ABCDHGFE....(这就是所编辑的内容) ②逐个内存的内容 例:-E 100(修改100内存中的内容,当然DS为默认值)(回车) 08F1:0100 76 42 (42为操作员键入目的是将76改为42,回车即可) 然后可以用“D”命令查看6、“F”命令:将指定数据填入指定范围 格式:-F 范围 数据行 例:-F 100 120 61 62 63 64 即将61 62 63 64 依次填入DS:0100--DS:0120中7、“G”命令:运行机器码程序 格式:-G [=起始地址][中断点1].... 例:C:>debug tan.exe (在C盘运行DEBUG 并将tan.exe程序装入) -U (反汇编成汇编语言程序) ....... ...... -G 200 (根据上面反汇编结果自己确定一个中断点,如200处) 如果 -G 后面不带任何参数,则表示可是运行此程序,和在DOS下运行完全一 样8、“H”命令:以十六进制就是两个数的和与差 格式:-H 数值1 数值2 例:-H 4538 5623 9B5B (和)EF15(差)9、“I”命令:显示I/O端口数据 格式:-I I/O口地址 例:-I 70 F9 (70端口内容为F9)10、“L”命令:将文件或扇区的内容装入内存 格式:①-L 装入地址 驱动器名 起始扇区/扇区数 ②-L 装入地址11、“M”命令:移动内存中数据 格式:-M 范围 目的地址 (其实M 做的不是移动而是拷贝) 例:-M 100 104 110 (将100-104 5个字节的内容复制到110开始的5个单元 只)12、“N”命令:命名 格式:-N 路径名1 [路径名2]13、“O”命令:将一个字节的数据送往I/O端口 格式:-O 输出地址 数据 例:-O 70 10 (回车) -O 70 00 (回车) 当我们开机要求输入口令时,可以用以上方法取消14、“P”命令:运行指定地址上的程序可以指定指令个数 格式:-P [=地址][指令个数] “P”命令和“T”命令一样用来跟踪程序运行过程,我们可以在“P”命令中指定程序运行的起始地址、指令个数。如未指定则从CS:IP所指定的地址开始一次运行一条指令。 “P”与“T”命令的差别在于“P”命令把CALL/INT当成一条指令来执行,因而简化了跟踪过程,“P”命令只运行RAM内存的命令,而“T”命令可以运行RAM 和ROM里的程序。15、“R”命令:显示及更改寄存器值 格式:-R [寄存器名] 例:-R BX BX 0050 (显示BX中的内容,此时可输入新的值,如51。若不想改变则直接回车) :51 (程序员键入的新值) “R”后面不带任何参数,直接回车,则显示所有寄存器的内容16、“S”命令:从指定的内存区找出指定的数据 格式:-S 内存 字符串 (数据行) 例:-S 100 L0F “AC”(从100开始的16个字节中查找AC两个字符,回车) 08F1:0102 (表示找到,在0102开始处) 注:内存:即可以向上面[起始地址 长度]也可以[起始地址 末地址] 查找的数据也可以和字符串混合使用,如:02,76“BC”17、“T”命令:跟踪程序运行 格式:-T [=起始地址][运行次数] ①逐条指令跟踪 -T [=起始地址]:从指定地址开始每次执行一条指令,并显示所以的寄存器内容和标志位,如未指定地址则从当前CS:IP开始执行。 ②一次运行多条指令 例:-T 100 10 (由CS:100开始跟踪10条指令) 用Ctrl+S 可以暂停屏幕显示,以便观察。18、“U”命令:反汇编命令 格式:-U [内存范围]或[地址] ① -U (回车,不带参数,则从CS:100开始每次反汇编32个字节,再打U又反汇编32个字节) ②对指定的存储范围进行反汇编 -U 100 109 (即将CS:0100-CS:0109的机器码反汇编成程序) 例:一个将COM、EXE文件转换成ASM文件的方法: C:>DEBUG TT.EXE>A.ASM (回车) -[U 0100 FFFF (回车)] ([ ]内操纵均不显示) ..... (稍等一会儿) -[Q (回车)] (同样不显示) 退出后便可以对A.ASM进行分析或编辑 注:当然有SOURCER 则更方便19、“W”命令:将程序写入软盘或文件只 格式:-W [起始地址 [驱动器名 起始扇区 扇区数]] 运行W 时需要设置文件名及文件的大小CX或BX寄存器 ①把数据写入磁盘的指定扇区 -W 起始地址 驱动器名 起始扇区 扇区数 ②把数据写入指定文件中 例:写一个冷启动程序 DEBUG RESET.COM ↓ ;定义一个以COM为扩展名的文件 -A 0100 ↓ ;在0100处开始汇编 JMP FFFF:0 ↓ ;转到BIOS的入口地址 INT 20 ↓ ;BIOS的隐含中断,程序结束 ↓ -R CX ↓ ; 0007 ↓ ;该文件字节数写入CX -W↓ ;保存该文件到磁盘 -Q↓ ;退出到DOS 例:写一个热启动的程序 DEBUG BOOT.COM ↓ ;建立文件名 -A 0100 ↓ ;开始汇编 MOV AX,0040 ↓ ; MOV DS,AX ↓ ;数据段 MOV AX,1234 ↓ MOV SI,0072 ↓ MOV (SI),AX ↓ ;将1234写入0040:0072单元中 JMP FFFF:0 ↓ ;转到程序开始处 INT 20 ↓ ;程序结束 ↓ -R CX ↓ 0014 ↓ ;字节数送CX -W ↓ ;存盘 -Q ↓ ;退出DEBUG 说明:按RESET 是冷启动,Ctrl+Alt+Del 是热启动,两者都是转到BIOS的入口地址FFFF:0处启动系统,在启动过程中需检测复位标志字(位于BIOS 数据区地址0040:0072)的值若为1234则启动时不检测内存(热启动),否则先检测内存再启动系统(冷启动) 请教一下VC中以LP开头的数据类型的疑问。 100分求教:怎样用VC编写一个程序,能实现读取一个BMP图片,改变大小后,保存为新的BMP图片! 在多文档应用程序中中实现多重文件编辑时,如何实现指定新建某种类型的文档? access的文本类型最大只有255,程序要求可以存更多的内容,怎么办? 怎么控制播放声音的音量? 怎样把CString 中的字符串赋值到char定义的字符串中??大家赐教 谢谢! 关于CSocket的AsyncSelect方法 语音聊聊的控件包 再问一个!!!大侠帮忙,socket编程 [win]主线程等待子线程结束 关于MFC的问题 如何让主窗口的toolbar显示在最下方。并加button在主窗口的右方
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货