爱问知识人 爱问教育 医院库

求一篇汇编语言关于debug的实验报告

首页

求一篇汇编语言关于debug的实验报告


        

提交回答

全部答案

    2018-04-08 05:05:54
  •   debug命令及参数如下,你根据你的报告要求适当修改下就可以了,参数挺多,如果字数多捡主要的几个介绍下就可以了,比如-A ,-R,-D-U等等常用的就可以了

    DEBUG的命令及功能如下:
    * A[地址] 汇编命令
    功能: 将指令直接汇编成机器码输入到内存中。
       说明: 用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制, 用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,改语句被汇编到 CS:0100区域。 例A:>DEBUG -a 0100 08F1:0100 MOV AH,09 08F1:0102 MOV DX,109 08F1:0105 INT 21H; 08F1:0107 INT 21H;debug tan。
      exe -u:反编译成汇编语言程码 ………… 。 。 -g 100 指定中断点 Program terminated normally: 另外:我们在DEBUG下可运行一个文件。EXE 如:A:>debug tan。
      exe -g 即可开始运行此程序,和在DOS下完全一样: * H[数值][数值] 十六进制算术运算命令 功能: 分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。 说明: 替用户完成简单的十六进制数的运算。 例:-h4538 5623 9B5B EF15
    * I[端口地址]
    功能: 从指定的端口输入并显示(用十六进制)的一个字节。
       例:-i70 F9;显示70端口的内容为F9 I命令可由80X86的64K个端口取数据
    * L[地址][盘号:][逻辑扇区号][扇区数]
    功能: 将一个文件或盘的绝对扇区装入存储器。 说明: 单个L命令能够装入的最大扇区数是 80H,其中盘号 0,1,2,3……分别代表 A,B,C,……出现读盘错,显示错误信息。
       (1)格式1。L装入地址 驱动器名 起始扇区/扇区数 这种方式可把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中,在此外扇区编号引用逻辑/扇区的方式。 例:-L 100 0 01,将A驱的0扇区装至CS:100上 -d 100 10f 08F1:0100 EB 3C 90 3C 53 44 4F 53 -36 2E 32 32 02 01 01 00。
      L,MSDOS 6。22…… (2)格式2:L装入地址 这种方式可把指定文件装入内存,装入的文件可在进入DEBUG时指定亦可用N命令建立,格式为-n文件名: 例1 DEBUG tan。pas -L 100 例2 DEBUG -n tan。
      pas -L 100 须知:L命令只能读取逻辑扇区,不能读取硬盘分区表 L命令中所用的磁盘代码A=00,B=01,C=02……
    * M[地址范围][起始地址] 数据传送命令
    功能: 把地址范围内的存储器单元的内容移到起始地址的指定地址中 说明: 传送期间,源区和目标区可以部分重叠;传送后源区域数据保持不变。
       例:-e100 41 42 43 44 45 -d100 10f 08F1:0100 41 42 43 44 45 62 62 63 64 -61 62 63 64 61 62 63 64 ABCDEBCDABCDABCD -M 100 104 110 -d110 L1F 08F1:0100 41 42 43 45 0A 21 19-20 01 01 20 07 96 87 9F ABCDE……
    * N[盘号: ] [路径] [文件名] [扩展名]
    功能: 定义操作文件名。
       说明: 可同时定义两个操作文件,并将形成的文件控制块相应的设置在内存 CS:5C和CS:6C上,供以后的L和W命令操作之用。我们在运行程序侦错时,在启动DEBUG时在其后加文件程序名以及该程序的参数或运行文件,但当我们侦错一段后,可能装入其它文件来测试,这时我们可利用N命令来设置而无需退出DEBUG。
       例:A:>DEBUG tan。exe -n youg。pas 当程序侦错一段时间后,若要把tan。exe装入tan1。pas则-ntanl。pas
    * O[端口地址][数据] 输出命令
    功能: 发送字节到指定的输出端口。
       例:当我们遇到开机要求输入口令时,可用如下方式取消 -O 70 10 _O 71 00
    * P[=地址] [数据] 进程命令
    功能: 将一个子程序调用指令,循环指令,中断指令或一个重复字符串指令,停止在下一条指令上。
       说明: 在执行一条子程序调用指令,循环指令,中断指令或一个重复字符串指令时,发出P命令去执行有关指令,并且返回到要执行的下一条指令。 P命令和T一样选用来跟踪程序运行过程用的命令,我们可以在P命令中指定程序运行的起始地址,指令个数,如未指定则CS:IP所指定程序的地址开始一次运行一条令。
       P与T命令的差别在于P命令把CALL/INT当成一条指令来执行,简化了跟踪过程,P命令只运行RAM内存的命令,而T命令则可运行RAM和ROM里的程序。
    * Q 退出命令。
    * R[寄存器] 寄存器命令
    功能: 一,显示单个寄存器的内容,并提供修改功能。
       二,显示所有寄存器内容, 再加上字母标志位状态以及要执行的下一条指令。 三,显示8个标志位状态, 并提供修改功能。若不想改变则回车即可。 例:-r bx bx 0050 :51 -r AX=0000 BX=0051 CX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0003 ES=0CD3 SS=0CD3 IP=0100 NV UP EI PL NZ NA OP NC 0CD3:0100 0F DB OF 若想改变标志寄存器,用-RF回车,则DEBUG会将标志内容显示出来,若想改变任一标志,只要输入该标志的名称即可。
       标志名称 设置 未设置 标志名称 设置 未设置 滋出 OV(未溢出) NV(未溢出) 零位 ZR NZ(不等于零) 方向 DN(减少) UP(增加) 辅助进位 AC NA(无进位) 中断 EI(许可) DI(禁止) 奇偶标志 PE(偶) PO(奇) 符号 NG(负) PL(正) 进位 CY NC(清除进位) 例:-Rf NV UP EI PL NZ NA PO NC :-OV DI← 输入值
    * S[地址范围] [字符串]
    功能: 在指定的地址范围内查找给定的字符串。
       说明: 用来指定在地址范围内查找一个字符串,若找到则显示其地址, 否则直接显示DEBUG提示符。隐含地址为DS段值。 在此内存可以用(起始地址)(终止地址)或(起始地址)L(长度)的方式来表示,而字符串与数据行则可混合使用:如:02。
      76"BC"。 例:-d100 lof 08F1:0100 OF 2A 41 43 0B 31 42 96 -FF F0 B9 8A F3 00 B1。。 AC,1B。。。 -S 100 lof"AC" 08F1:0102← 表示找到,由0102开始,
    * T[=地址][指令条数] 跟踪命令
    功能: 逐条跟踪程序的执行,每条指令执行后都将显示各寄存器的内容。
       说明: 通常采用跟踪一条指令,但用户也可以用指令条数设定一次跟踪多条指令, 每执行一条指令之后,显示所有寄存器的内容和标志状态。 逐条指令跟踪 -T[=起始地址] 从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值,如来指定地址则从当前CS:IP开始执行。
       A:>DEBUG -A 08F1:0100 MOV DL,03H 08F1:0102 MOV AH,02H 08F1:0104 INT 21H 08F1:0106 INT 20H 08F1:0108 -T AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=08F1 ES=08F1 SS=08F1 CS=08F1 1P=0105 NV UP EI PL NZ PO CY 09F1:0102 B402 MOV AH,02 若指定起始地址,则T命令会从指定的地址开始跟踪,我们还可以指定跟踪一次所运行指令的个数,用Ctrl S暂停屏幕的显示,以便观察。
       -t=100 10;由CS:100开始跟踪10条指令
    * U[起始地址]或者[地址范围]
    功能: 将内存中的内容转换为汇编语句。 说明: 反汇编的字节数取决与用户的系统显示形式,以及在U命令中使用的可选项。
       (1)从指定地址开始编译,反汇编32个字节 -U[地址]←从CS:100开始,其反汇编32个字节 如果地址被省略,则从一个U命令的最后一条指令的下一条单元开始汇编32个字节。 (2)对指定的存贮范围进行反汇编 -u起始地址 终止地址(L 长度) 例:-U 100 109 08F1:0100 CD20 INT 20 08F1:0102 FF9F009A CALL FA12[BX 9A00] 08F1:0106 F0 LOCK 08F1:0107 FE1D CALL FAR [DI] 08F1:0109 F0 LOCK 说明:如指定了范围则整个范围全都会被反编译
    * W写盘命令
    * W[地址] [盘符:] [起始扇区] [扇区数] 写盘命令 功能: 将修改过的数据写到磁盘上。
       说明: 可以将指定内存地址开始的数据写在磁盘上,可以在没有指定参数, 或指定地址参数的情况下,将调试文件写在磁盘上。 在运行W时需设置文件的大小CX或BX寄存器 (1)把数据写入磁盘的指定扇区 -W 起始地址 驱动器名 起始扇区 扇区数 (2)把数据写入指定文件中 -W 起始地址 例A:>DEBUG -A 08f1:0100。
      。。。 。 写入程序段 08F1: 012A。。。。 -R CX CX:0000 :2A←写入字节数,即为程序结尾地址减起始地址 -n tan。com←设置文件名,需后缀为com -w Wring 002A bytes -q A:>TAN←即可执行此程序 * "XD"命令:释放EMS内存 例:-XD 0001 handle 0001 deallocatel←释放了 利用XD释放后可再分配 *"XM"命令;把扩充内存上的内存页区映射到主内存区 格式:XM RAM 长页码 主内存页码句柄 例:-XM3 2 0001←把0001号句柄的第3号逻辑页区映射到2号真实页区 Logical page 03 mapped to physical page 02 *"XS"命令:显示当前EMS使用情况。
       格式 -XS。

    V***

    2018-04-08 05:05:54

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 180-199
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):