随笔 - 110  文章 - 28 评论 - 26 

留言簿(1)

随笔分类(103)

随笔档案(110)

文章分类(25)

文章档案(28)

新闻档案(3)

友情连接

  • 小蜜蜂
  • 马氏膏药网
  • 淋巴结肿大,淋巴结核,淋巴结炎 乳腺增生,小叶增生 颈椎病,腰椎病,腰间盘突出 马氏淋巴消炎贴,马氏增生散结贴,马氏关节肌肉贴
  • 黑客基地
  • 全球最大的黑客门户网站

最新随笔

积分与排名

  • 积分 - 143652
  • 排名 - 44

最新评论

阅读排行榜

评论排行榜

★ A命令 

格式:A[地址] 
功能:将指令直接汇编成机器码输入到内存中。 

参数说明:[地址]指定存放键入汇编语言指令的内存单元的位置。
★ C命令 

格式:C[源地址范围][目的地址] 
功能:比较两内存区域中的内容是否相同。若不同则按字节显示其地址和内容,若相同则不显示任何内容。 

参数说明:[源地址范围]指定要比较的内存第一个区域的起始和结束地址,或起始地址和长度。[目的地址] 指定要比较的第二个内存区域的起始地址。
★ D命令 

格式:D[地址] 或D[起始地址][目的地址] 
功能:以内存映象方式显示内存中的数据。 参数说明:指定要显示内容的内存单元的起始地址和结束地址,或起始地址和长度。如果不指定 [地址],Debug将从以前 d 命令中所指定的地址范围的末尾开始显示 128个字节的内容;第一次从DS:100处开始显示。
★ E命令 

格式:E[地址] [字节串] 或E[地址]
功能:从指定的地址开始修改内存值。 参数说明:[地址]指定存放[字节串]第一个内存的位置,[字节串]是要放入内存单元中的数据。 

★ F命令 

格式:F[地址范围] [字节或字节串] 
功能:将要填写的字节或字节串填入由地址范围指定的存储器中。 

参数说明:[地址范围]指定要填充内存区域的起始和结束地址,或起始地址和长度。[字节或字节串] 指定要输入的数据,可以由十六进制数或引号包括起来的字符串组成。
★ G命令 

格式:G[=起始地址] [[断点]……] 
功能:执行正在调试的程序,当达到断点时停止执行, 并且显示寄存器标志和下一条要执行的命令。 参数说明:[=起始地址]指定当前在内存中要开始执行的指令所在的内存单元的地址。如果不指定[=起始地址],DEBUG将从 CS:IP 寄存器中的当前地址开始执行程序。[[断点]……] 指定可以设置为 g 命令的部分的 1 到 10 个临时断点。
★ H命令 

格式:H[数值][数值] 
功能:分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。 

参数说明:[数值]表示从 0 到 FFFFh 范围内的任何十六进制数字。 

★ I命令 

格式:I[端口地址]
功能:从指定的端口输入并显示(用十六进制)指定端口中的数据(字节)。 参数说明:[端口地址]指定要读取数据的端口地址。
★ L命令 

格式:L[地址][盘号:][逻辑扇区号][扇区数]
功能:将一个文件或盘的绝对扇区装入存储器。 

参数说明:[地址] 指定要在其中加载文件或扇区内容的内存空间的起始位置。[盘号:] 指定包含读取指定扇区的磁盘的驱动器。该值是数值型,表示为:0 = A, 1 = B, 2 = C,…… 等。[逻辑扇区号] 指定要加载其内容的第一个扇区的十六进制数。 [扇区数] 指定要加载其内容的连续扇区的十六进制数。
★ M命令 

格式:M[地址范围][起始地址]
功能:把地址范围内的存储器单元的内容移到起始地址的指定地址中 

参数说明:[地址范围] 指定要复制内容的内存区域的起始和结束地址,或起始地址和长度。[起始地址] 指定要将 range 内容复制到该位置的起始地址。
★ N命令 

格式:N[盘号: ] [路径] [文件名] [扩展名]
功能:定义DEBUG使用的文件。 

参数说明:[盘号: ] [路径] [文件名] [扩展名]指定文件所在的盘符,路径,文件名和扩展名。
★ O命令 

格式:O[端口地址] [数据]
功能:发送数据(字节)到指定的输出端口。 

参数说明:[端口地址]指定要写入数据的端口地址,[数据] 指定要向[端口地址] 中写入的字节值。
★ P命令 

格式:P[=地址] [数据] 
功能:执行一个子程序调用指令,循环指令,中断指令或一个重复字符串指令,停止在下一条指令上。 

参数说明:[=地址] 指定第一 条要执行指令的位置。如果不指定地址,则默认地址是在 CS:IP 寄存器中指定的当前地址,[数据] 指定在将控制返回给 Debug 之前要执行的指令数,默认值为 1。
★ Q命令 

格式:Q 

功能:退出DEBUG返回DOS。 

参数说明:无参数。
★ R命令 

格式:R[寄存器] 
功能:1. 显示单个寄存器的内容,并提供修改功能。2. 显示所有寄存器内容, 再加上字母标志位状态以及要执行的下一条指令。3. 显示8个标志位状态, 并提供修改功能。 

参数说明:[寄存器]指定要显示其内容的寄存器名。
★ S命令 

格式:S[地址范围] [字符串]
功能:在指定的地址范围内查找给定的字符串。 

参数说明:[地址范围] 指定要搜索范围的开始和结束地址。[字符串] 指定要搜索的字节值或字符串。字符串应包括在引号中。
★ T命令 

格式:T[=地址] [指令条数]
功能: 逐条跟踪程序的执行,每条指令执行后都将显示各寄存器的内容。 

参数说明:[=地址] 指定第一 条要执行指令的位置。如果不指定地址,则默认地址是在 CS:IP 寄存器中指定的当前地址,[指令条数] 指定在将控制返回给 Debug 之前要执行的指令数,默认值为 1。
★ U命令 

格式:U[起始地址]或者[地址范围]
功能:将内存中的内容转换为汇编语句。 

参数说明:[起始地址]或者[地址范围]指定要反汇编代码的起始地址和结束地址,或起始地址和长度。
★ W命令 

格式:W[地址] [盘符:] [起始扇区] [扇区数] 
功能:将内存中的数据写入磁盘中。 

参数说明:[地址]指定要写到磁盘文件的文件或部分文件的起始内存地址。如果不指定 address,Debug 程序将从 CS:100 开始。[盘符:] 指定包含目标盘的驱动器。该值是数值型:0 = A, 1 = B, 2 = C,等等。[起始扇区] 指定要写入第一个扇区的十六进制数。[扇区数] 指定要写入的扇区数。
★ XA命令 格式:XA[页面数] 功能:分配扩展内存的指定页面数 参数说明:[页面数] 指定要分配的扩展内存的 16KB 页数。 ★ XD命令 格式:XD [释放的句柄] 功能:释放指向扩展内存的句柄。 参数说明:[释放的句柄] 指定要释放的句柄。 ★ XM命令 格式:XM [要映射扩展内存的逻辑页面号] [映射到的物理页面号] [句柄] 功能:将属于指定句柄的扩展内存逻辑页映射到扩展内存的物理页。 参数说明:[要映射扩展内存的逻辑页面号]指定要映射到物理页的扩展内存的逻辑页面号。[映射到的物理页面号]指定将映射到的物理页面号。 [句柄]指定句柄。 ★ XS命令 格式:XS 功能:显示有关扩展内存状态的信息。 参数说明:无参数 




★ A命令使用 

说明:用于小段程序的汇编及修改目标程序,所有输入的数字均默认为十六进制,并且不需要以“h”字符结尾。用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,该语句被汇编到 CS:0100区域,则在它上次停止处开始汇编。 

注意: 1. 直接在A命令下输入跳转指令时,跳转指令后应跟跳转到的语句所在内存单元的地址,不能跟标号;使用跳转指令时,可以指定跳转指令的属性:near,far。near 前缀可以缩写为 ne。如下例所示: -a0100:0100 


0100:0100 jmp 102 

0100:0102 jmp near 105 

0100:0105 jmp far 10a 2. 汇编语言指令所涉及到的操作数可以是字操作数也可以是字节操作数,在语句不能判别操作数的类型时,可以使用前缀 word ptr 或者前缀 byte ptr 指定操作数的类型。缩写分别是 :wo 和 by。如下列所示: -a0100:0100 

0100:0100 dec word ptr [100] 

0100:0102 dec wo ptr [100] 

0100:0105 dec byte ptr [100] 2. 在DEBUG下,应注意区分立即操作数和内存地址的操作数,使用包括在中括号 ([ ])中 的操作数表示内存地址。 3. 在DEBUG下,能够使用的伪指令仅有DB和DW两个,分别用于定义字节和字操作数,此时定义的操作数被存放在该定义指令所在的内存空间中。如下列所示(注意内存空间的变换,why?): -a 0100:0100 

0100:0100 DB ‘ABCDEFG’ 
0100:0107 

★ C命令使用 说明:如果 [源地址范围]和[目的地址]中内存单元的数据相同,Debug 将不显示任何内容而直接返回到 Debug 提示符。如果有差异,Debug将按如下格式显示: [源地址] 源地址中内容 目的地址中内容[目的地址] 
如下列所示: 

-C CS:100 105 DS:300;(假定CS=0AF6;DS=1000) 0AF6:0100 88 00 1000:0300 

0AF6:0101 C0 00 1000:0301 

0AF6:0102 89 00 1000:0302 

0AF6:0103 D8 00 1000:0303 

0AF6:0104 65 00 1000:0304 

0AF6:0105 66 00 1000:0305 

★ D命令使用 

说明:当使用 d 命令时,Debug分两个部分显示内存单元内容:左边显示内存单元中存放的十六进制数;右边显示左边的十六进制所表示的ASCII字符,所有不可打印字符用句号(.)表示。每行显示16个字节的内容,在第八和第九个字节之间有一个连字符“–“ 。 

从键盘键入下面命令: -d cs:100 10f Debug 按以下格式显示地址范围中的内容(假定CS=0AF6): 

0AF6:0100 77 61 6E 67 78 69 61 6F-69 6A 6B FF 0E 00 01 FF wangxiaoijk….. 键入以下命令,Debug 将从 CS:100 开始显示 20h 个字节的内容: -d cs:100 l 20 键入以下命令,Debug 将显示范围从 DS 段的 100h 到 115h 中所有字节的内容: -d 100 115 

注意:在D命令中若不指定段寄存器,默认规定为DS。
★ E命令使用 说明:当使用E命令时,有两种使用格式: 1、 用E命令中包含的字节串替换从指定的地址开始的多个字节的内容; 2、 E命令后不跟字节串,则允许按顺序方式显示和修改内存值,按下空格键显示下一字节内容,若想修改,直接输入相应值;按下减号键显示上一字节内容,若想修改,直接输入相应值。 3、 停止执行 e 命令。按 ENTER 键。在任何字节位置都可以按 ENTER。 

注意: 

1. 若地址部分只输入偏移量,则 E 命令认为段包括在DS寄存器中。 

2. [字节串]的值可以是十六进制字节或字符串。使用空格、逗号或制表符来分隔值。必须将字符串包括在单或双引号中。 

3. 使用E命令后,内存单元中原来的数据将丢失,或者说被新输入的数据覆盖。 从键盘键入下面命令: -E 100 Debug 按下面的格式显示第一个字节的内容(假定DS=0AF6): 0AF6:0100 EB. 要将该值更改为 61,请在插入点键入(使用符号”_”表示) 61,如下所示: 0AF6:0100 AB.61_ 此时,若按下空格键,将显示下一个内存单元中的内容: 0AF6:0100 AB.61 EF._ 此时,又可以在插入点键入新的内容,改写当前显示的内存内容,若不需要改写当前内存单元的内容,可以直接按下空格键,将显示下一个内存单元的内容,如此,一直到按 ENTER 停止 e 命令并返回到 Debug 提示符下。 若使用减号键,操作和按下空格键一样,区别在于将显示上一个内存单元的内容。 

注意:使用该种方法,只能键入16进制数,不能键入字符串。 

从键盘键入下面命令: 

-E DS:100 EF’ABC’41 

则执行上面的命令后,从DS:100内存单元开始的5个连续的字节中的内容将被数据0EFH,字符“A”“B”“C”的ASCII码和数据41H替换。 

★ F命令使用 说明:如果[地址范围]包含的字节数比[字节或字节串]中的数值大,Debug 将对[字节或字节串]中提供的值反复使用,直到[地址范围]中的所有字节全部填充。如果在[地址范围]中的任何内存单元损坏或不存在,Debug 将显示错误消息并停止f命令。 如果[字节或字节串] 包含的数值多于[地址范围]中的字节数,Debug 将忽略[字节或字节串]中额外的值。 从键盘键入下面的命令: -F 1000:100 105 ‘ABCDEFG’ 指令执行后,DEBUG使用’ABCDEF’填充1000:100到1000:105内存单元。 从键盘键入下面的命令: 1000:100 150 40 45 51 52 44 指令执行后,DEBUG反复使用40,45,51,52,44填充从1000:100 到 1000:150的内存单元,直到 50h 个字节全部填满为止。
★ G命令使用 

说明:G命令中的=不能省略,可以只给出偏移地址,默认段地址为当前的CS;若省略=,则该地址就成为G命令中的断点地址。程序将从指定的开始地址不停的执行程序,一直到遇到结束指令为止,并显示“Program terminated normally”。断点地址只对本次G命令有效;下一条G命令若需要断点地址,应重新进行指定。当使用G命令执行程序到断电地址后,显示断点地址处的指令和寄存器的内容。 

注意:断点地址应为一条指令在内存单元中的首字节地址。
★ H命令使用 

说明: Debug 首先将指定的两个参数相加,然后用第一个参数中减去第二个参数。并将计算的结果以4位16进制形式显示在下一行中:先显示计算和,然后显示计算差。 

从键盘键入下面的命令: 

H 12 34 

执行后,将在下一行显示: 

0046 FFDE
★ I命令使用 

说明:[端口地址]的分为应在0~FFFFH的范围内。 

从键盘键入下面的命令: 

I FFFF 

执行后,将在下一行显示(假定端口0FFFFH中的内容为FFH): 

FF
★ L命令使用 说明: 单个L命令能够装入的最大扇区数是 80H,其中盘号 0,1,2,3……分别代表 A,B,C,……;若出现读盘错,显示错误信息。只有加载特定扇区的内容而不是加载 debug 命令行或最近的 Debug n(名称)命令中指定的文件时,才能使用 drive、start 和 number 参数。 L命令使用情况,可以分为下列几种情况: 1、使用不带参数的L命令 当使用不带参数的L 命令时,在 debug 命令行上指定的文件将加载到从地址 CS:100 开始内存中。Debug 同时将 BX 和 CX 寄存器设置为加载的字节数(CX表示低位,BX表示高位)。如果不在 debug 命令行指定文件,所装入的文件将是最近使用 n 命令经常指定的文件。 2、使用带有 address 参数的L命令 


使用带 address 参数的L命令,Debug 将从内存位置 address 开始加载文件或指定扇区的内容。??? 

3、使用带全部参数的L命令 使用带所有参数的L命令,Debug 将加载指定磁盘扇区的内容而不是加载文件。加载特定扇区的内容,指定范围内的每个扇区均从 drive 读取。Debug 从 start 开始加载,直到在 number 中指定的扇区数中的内容全部被加载。 从键盘键入如下命令(假定文件abc.exe存在当前目录之下): N wangxiao.exe L
则把文件wangxiao.exe加载到CS:100开始的内存单元中。 若要将文件加载到1000:100开始内存单元中,键入: L 1000:100
★ M命令使用 
说明:传送期间,源数据区和目标数据区可以部分重叠;传送后源区数据保持不变,目的区的数据将使用源区中的数据进行改写。
从键盘键入如下命令: -M CS:100 150 DS:500 

执行该指令,Debug 首先将 CS:150 地址中的内容复制到地址 DS:550 中,然后将 CS:14F 地址中的内容复制到 CS:54F 中,如此操作直至将 CS:100 地址中的内容复制到地址 DS:500 中。
★ N命令使用 

说明: 可同时定义两个操作文件,并将形成的文件控制块相应的设置在内存 CS:5C和CS:6C上,供以后的L和W命令操作之用。 N命令的两个用途: 

1、 可以使用N为后面的L(加载)或W(写入)命令指定所使用的文件。 

2、 可以使用N命令指定正在被调试文件的命令行参数和开关。 

如下所示: 假定在Debug中正在调试的程序wangxiao.com。若想为wangxiao.com指定两个参数并运行此程序。可以键入如下的命令: -N param1,param2 -G 从键盘键入如下的命令序列: -N wang.exe -L -N xiao1.dat xiao2.dat -G 则第一个 N 命令将wang.exe 指定为后接的 L(加载)命令的文件,该命令将wang.exe 加载到内存。第二个N 命令指定wang.exe 将使用的参数。最后G命令将使用参数xiao1.dat和xiao2.dat运行wang.exe文件。此功能如同在 DOS命令行中键入了wang.exe xiao1.dat xiao2.dat。 注意:不要在N命令的第二种形式后再次使用L命令,否则N命令的第二种形式中指定的参数将不起作用。此外,如果在N命令的第二种形式后使用W(写入)命令,将使用名称 xiao2.dat保存正在调试的文件 wang.exe。 每次使用N命令,都将影响下面的四个内存区域: 内存位置 内容 CS:5C 文件 1 的文件控制数据块 (FCB) CS:6C 文件 2 的文件控制数据块 (FCB) CS:80 N命令行的长度(以字符表示) CS:81 N命令行字符的开头 N命令指定的第一个文件名被放在 CS:5C 的 FCB 中。如果指定第二个文件名,第二个文件文将放置到 CS:6C 的 FCB 中。N命令行上键入的字符数(除第一个字符N之外)存储在位置 CS:80。N命令行上的实际字符(再次,除了字母N之外)存储在以 CS:81 开头的位置。★ O 命令使用 

说明:[端口地址]的分为应在0~FFFFH的范围内,[数据]应为字节数据。 

从键盘键入下面的命令; 

-O 73 FF 

指令执行后,端口73H中的数据为0FFH。
★ P命令使用 

说明: 使用P命令执行程序,该程序不间断运行,直到循环、重复字符串指令、软件中断或者完成了指定地址的子例程为止,或者直到执行了指定数量的机器指令为止。若被执行的指令不是循环、重复的字符串指令、软件中断或子程序,则P 命令与T(跟踪)命令的作用相同。 考虑程序在地址 CS:168F处有一个 call 指令。要运行完call目标位置的子程序然后将控制返回Debug,从键盘键入下面命令: P=168F 执行指令后,按如下格式显示结果: AX=0000 BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0AF6 ES=0AF6 SS=0AF6 CS=0AF6 IP=1692 NV UP EI PL NZ AC PO NC 

0AF6:1692 BA2601 MOV AX,0126
★ Q命令使用 

-Q 

执行该命令后,结束DEBUG,返回DOS。
★ R命令使用 说明:可以使用的寄存器名有:AX、BX、CX、DX、SP、BP、SI、DI、DS、ES、SS、CS、IP、PC 及F。键入R命令不跟任何可用的寄存器名,则将显示所有的寄存器的内容以及CS:IP指向的存储单元中的内容;若键入R命令指定了寄存器名称,将以十六进制数形式显示该寄存器中的内容,下一行显示冒号提示符,在冒号提示符后面可以为寄存器键入新的数据。若不需要修改寄存器的数据,直接按 ENTER 键返回 Debug 提示符。如果键入 f 字符代替寄存器名,Debug 将每个标记的当前设置显示为两字母代码,然后显示 Debug提示符。要更改标志的设置,请从下表中键入适当的两字母代码;若不需要修改,直接ENTER 键返回 Debug 提示符。可以修改全部或部分标志位,可以按任何顺序键入新的标志值。不需要在这些值之间留出空格。任何没有指定新值的标志保持不变。在DEBUG下,标志位表示如下: 标志名 标志为1 标志为0 OF OV NV DF DN UP IF EI DI SF NG PL ZF ZR NZ AF AC NA PF PE PO CF CY NC 注意:若输入的寄存器名不在上面的有效寄存器名之内,将显示: bf error R命令后只能跟一个有效的寄存器名。修改标志位如果指定没有在前面的表中列出的标志代码,将显示: bf error 若为一个标志位指定了多个值,Debug 将显示以下消息: df error 要只查看标志的状态,键入以下命令: -R F 将按如下格式显示: NV UP DI NG NZ AC PE NC - _ 此时可以按任意顺序键入一个或多个有效的标志值,其中可以有或没有空格,如下所示: NV UP DI NG NZ AC PE NC –PLEICY 执行指令后,将使用新的标志位数值代替旧值。 要查看当前所有寄存器的取值、所有标志位的内容和CS:IP指向的内存单元指令,键入以下命令: -R 如果当前位置是 CS:1692,显示外观将类似于以下内容: AX=0000 BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0AF6 ES=0AF6 SS=0AF6 CS=0AF6 IP=1692 NV UP EI PL NZ AC PO NC 0AF6:1692 BA2601 MOV AX,0126 从键盘上键入如下命令: -R CX 执行后,将显示: CX 0000 : 在冒号后可以位CX键入新值,若不需要改变,直接按ENTER。 ★ S命令使用 

说明: 若在给定的分为内要搜索字节出现多次,将显示出所有地址。隐含地址为DS段值。 假定从范围DS:100 到 DS:110查找是否包含 61,键入下面命令: -S 100 110 61 执行程序后,显示: 0AF6:010A 0AF6:010F - 若要在范围CS:100 到 CS:200内搜索字符串“wangxiao”,键入下面的命令: -S CS:100 CS:200 ‘wangxiao’
★ T命令使用 

说明: 通常采用跟踪一条指令,但用户也可以用指令条数设定一次跟踪多条指令,每执行一条指令之后,显示所有寄存器的内容和标志状态以及下一条指令在内存中的保存情况。T命令若不跟[=地址]参数,则从当前CS:IP处开始执行,第一次键入的T命令从CS:100处开始执行程序。T命令默认寄存器位CS。参考P命令。 

键入下面得到命令: 

-T 

若是第一次执行,则显示: AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0AF6 ES=0AF6 SS=0AF6 CS=0AF6 IP=0103 NV UP EI PL NZ AC PO NC 

0AF6:0103 BA2601 MOV AX,0126
若要从CS:200处开始执行程序,则键入下面的命令: 

T=CS:200 


★ U命令使用 

说明:U命令中如果没有使用参数,第一次使用,则U命令从CS:IP开始对20h个字节内容进行反汇编;若不是第一次使用,则从前面U命令所显示地址后的第一个地址开始开始对20h个字节内容进行反汇编。 若要从CS:100开始反汇编 8 (10h) 字节,键入下面命令: -U CS:100 108 程序执行后,显示下面的结果: OAF6:01OO 21725F AND [BP+SI+5F],SI OAF6:01O3 C606E3991A MOV BYTE PTR [99E3],1A OAF6:01O8 C3 RET - 


★ W命令使用 

说明: 在使用不带参数的W命令之前,BX和CX中应包含要写入文件的字节数,BX为高位,CX为低位,写入的文件为最近N命令命名的文件。不能用W命令写入 .exe 或 .hex 文件。 

从键盘键入下面的命令: 

-N ABC.DAT 

-W 

则执行上面的命令后,把当前CS:100指向的内存开始的数据写入到ABC.DAT文件中,写入字节大小有BX和CX中大小规定。 假定要将起始地址为 DS:200 的内存内容写入到驱动器A的磁盘中。需要将数据从磁盘的逻辑扇区号 10H 开始并持续10H个扇区。则键入下面命令: -W DS:200 0 10 10 ★ XA命令使用 

说明:要使用扩展内存,必须安装符合 4.0 版的 Lotus/Intel/Microsoft 扩展内存规范 (LIM EMS) 的扩展内存设备驱动程序。如果指定的页面数可用,则将显示消息表明所创建的句柄的十六进制数;否则显示相关的错误消息。 要分配扩展内存的8个页面,键入下面命令: -XA 8 执行指令后,若执行成功,显示下面消息: Handle created=0003 若失败,则可能显示: EMS not installed - ★ XD命令使用 说明:见XA命令说明 若要释放句柄 0003,键入下面命令: -XD 0003 执行指令后,若执行成功,显示下面消息: Handle 0003 deallocated 若失败,则可能显示: EMS not installed - ★ XM命令使用 说明:见XA命令说明 若要将句柄 0003 的逻辑页3映射到物理页4,键入下面命令: -XM 3 4 0003 执行指令后,若执行成功,显示下面消息: Logical page 03 mapped to physical page 04 ★ XS命令使用 

说明:见XA命令说明 
posted @ 2009-03-05 16:28 小叶子 阅读(496) | 评论 (0)编辑 收藏
DEBUG是在DOS状态下面供程序员使用的程序调试工具。它可以用来检查内存中任何地址中的内容以及修改特定地址中的内容。DEBUG还可以用于逐指令执行某个程序,追踪程序的执行过程,比较一条指令执行前后数值变化情况,读写文件与磁盘扇区。此外,DEBUG还可以用于读写端口中的数值。 

在DEBUG状态下,所有数据都作为字节序列,可以用DEBUG把任何类型的文件读入内存中。DEBUG能够处理的数据为两种: 十六进制数和ASCⅡ码,使用两位数表示十六进制数据(0~9,A~F)。在DEBUG中涉及内存中的数据时,要指定数据所在的内存单元的地址,地址的输入格式是: [段地址]: [位移]。如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。前100H字节保留给程序段前缀使用(称PSP结构,包含程序执行的各种信息),该区域用于建立DOS与程序之间的联系。在DEBUG中,使用四位十六进制数表示地址(0~9,A~F)。
DEBUG输入数据时有两种方法: 提示方法和非提示方法。在提示方法下,输入要求输入数据的命令,后跟保存数据的地址。执行后可以看到该地址中已有的内容及一个冒号提示符。此时可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到“—”提示符。在非提示方法下,输入保持数据的内存地址以及要输入的数据。 DEBUG的启动: 进入DOS状态下,键入DEBUG ‏,按ENTER键,如: C:\>DEBUG ‏,则屏幕显示: - 

符号“-”是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。 

DEBUG的退出: 

在DEBUG的提示符后输入Q命令,按ENTER键,则退出DEBUG返回DOS。 

DEBUG的使用: 

在DEBUG的提示符后输入DEBUG命令,按ENTER键。
posted @ 2009-03-05 16:26 小叶子 阅读(566) | 评论 (0)编辑 收藏
栈:
栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一堆称栈底。插入一般称为入栈(PUSH),删除则称为出栈(POP)。 栈也称为后进先出表(LIFO表)。
存在内存,具有特殊访问方式的存储空间

CPU访问栈机制:
任何时刻,SS:SP    指向栈顶元素
PUSH入栈时,寄存器SP自动减,入字时减2,入字节时减1
POP出栈时,与PUSH相反

SS:SP只说明栈顶的地址,而无法指明栈的大小,使用时就有可能超界
posted @ 2009-03-04 21:49 小叶子 阅读(228) | 评论 (0)编辑 收藏
多了的部分,高位丢失
如:
mov al,e6
mov bl,26
add al,bl          ->al=10c,因为只放8位二进数(两个16进制)所以  al=0C
posted @ 2009-03-04 21:32 小叶子 阅读(291) | 评论 (0)编辑 收藏
在内存中,每个单元是字节单元(8位),而字占用两个8位,那么一个字的存储就要占用两个连续的内存单元来存储了
存储时,低位对低位,高位对高位
如:
用0和1两个连续内存单元存放20000(4E20 H),也就是说4E高在高位1单元,20放在内存低单元0中

书中出现了丙个概念:
1.字节单元:8位,存一个字母数字等
2.字单元:16位,存一个字
posted @ 2009-03-04 21:06 小叶子 阅读(252) | 评论 (0)编辑 收藏
  -A 地址 从指定地址开始编写汇编程序,按两个回车键结束编辑
  -U 地址 把内存内的机器指令译成汇编指令
  -D 始址 查看内存内容,每行显示10H个字节
  -E 地址 更改内存内容,例:-E 100 'v' 1F 'hello'
  -N 文件名 为后续的L/W命令约定所操作的文件名
  -L 地址 将N命令所指定文件的内容读入到指定内存位置。另,逻辑卷扇区直接读:-L 地址 逻卷号 起始逻扇号 扇数
  -W 地址 将BX-CX个字节的内存数据写入N命令指定的文件中。另,逻辑卷扇区直接写:-W 地址 逻卷号 起始逻扇号 扇数
  -R 寄存器名 查看并允许修改指定寄存器的内容
  -G=始址 终址 执行指定内存中的机器指令程序
  -T=地址 单步执行机器指令,缺省地址则从上一T命令继续。另,继续跟踪m条指令:-T m
       -Q 退出
posted @ 2009-02-28 04:08 小叶子 阅读(270) | 评论 (0)编辑 收藏
物理地址=断地址*16+偏移地址

CS:IP是CPU读取的指令
posted @ 2009-02-28 04:04 小叶子 阅读(299) | 评论 (0)编辑 收藏

最小的是一个二进制(bit)
8bit=1b
1024B=1KB
1024KB=1MB
1024MB=1GB

posted @ 2009-02-28 03:51 小叶子 阅读(285) | 评论 (0)编辑 收藏
共14个,全部为16位,为了与8086以前版本兼容,设置了高低位
名称    释义                  拼写                                 用途
AX    算术累加寄存器    Accumulator Register    各种广泛用途
BX    基址指针寄存器    Base Register                可以和ds配合来进行基址指针的变换,比如mov al,ds:[bx],这里你
                                                                               就不能使用 除了bx以外的寄存器
CX    计数寄存器          Count Register                 主要用于循环等计数操作
DX    数据寄存器          Data Register  
DS    数据段寄存器       Data Segment Register      这是最通用的段寄存器,通常也是内存地址的第一个段寄存器
ES    附加段寄存器       Extra Segment Register  
SS    栈段寄存器           Stack Segment Register    栈段的段地址放在这个寄存器里面
CS    代码段寄存器     Code Segment Register      命令段的段地址
SI    源变址寄存器       Source Index  
DI    目标变址寄存器    Destination  
SP    堆栈指针                Stack Point  
BP    基址指针                Base Point  
IP    指令指针                 Instruction Point
PSW即程序状态字         Program Status Word
posted @ 2009-02-28 03:42 小叶子 阅读(501) | 评论 (0)编辑 收藏
电脑的CPU和其它主板上的芯片进行通信,就要有导线相连,而这些导线的集合就叫做总线,这是从物理上讲,如果在逻辑上讲,总线分为3类:地址总线,控制总线,数据总线,这些具体来说是外部总线,而在CPU内部,也就是说寄存器,运算器,控制器它们通信就是内部总线

关于电脑的一些术语:
地址总线宽度
寻址能力
内存地址空间

内存地址分配情况:
0-7FFF的32KB内存空间为主随机存储器
8000-9FFF的8KB空间为显存
A000-FFFF的24KB为电脑各个ROM的地址空间
posted @ 2009-02-28 03:35 小叶子 阅读(705) | 评论 (0)编辑 收藏
仅列出标题
共11页: 1 2 3 4 5 6 7 8 9 Last 

笔记和文章,可能抄袭,只为学习,请原谅