汇编笔记04

  • 几个命令:

    命令 功能
    R 查看、改变CPU寄存器的内容
    D 查看内存中的内容
    E 改写内存中的内容
    U 将内存中的机器指令翻译成汇编指令
    T 执行一条机器指令
    A 以汇编指令的格式在内存中写入一条机器指令
  • 进入debug后,直接输入R查看CPU寄存器的内容
  • 若要修改一个寄存器中的值,比如AX中的值,可用R命令后加寄存器名来进行,输入“r ax”后按Enter键,将出现“: ”作为输入提示,在后面输入要写入的数据后按Enter键,即完成了对AX中内容的修改。若想看一下修改的结果,可再用R命令查看。
  • 如果我们想知道内存10000H处的内容,可以用“d 段地址:偏移地址”的格式来查看。

d 1000:0

  • 使用“d 段地址:偏移地址”的格式,debug将列出从指定内存单元开始的128个内存单元的内容。
  • 使用D命令,debug将输出3部分内容
    1. 左边是每行的起始地址
    2. 中间是从指定地址开始的128个内存单元的内容,用十六进制的格式输出,每行的输出从16的整数倍的地址开始,最多输出16个单元的内容。注意在每行的中间有一个“-”,它将每行的输出分为两部分,这样便于查看。“-”左边是XXXX:X0~XXXX:X7的8个单元,右边是XXXX:X8~XXXX:XF的8个单元。
    3. 右边是每个内存单元中的数据对应的可显示的ASCII码字符。
  • 在使用“d 段地址:偏移地址”之后,接着使用D命令,可列出后续的内容。
  • 也可以指定D命令的查看范围,此时采用“d 段地址:起始偏移地址 结尾偏移地址”的格式。
  • 比如要看1000:0~1000:9中的内容,可以用

d 1000:0 9

来实现。

  • 如果我们就想查看内存单元10000H中的内容,可以用如下3种命令的任一种,因为所有“段地址:偏移地址”都表示了10000H这一物理地址。

d 1000:0 d 0fff:10 10 d 0100:f000 f000

  • 用debug的E命令改写内存中的内容。
  • 可以使用E命令来改写内存中的内容,比如,要将内存1000:0~1000:9单元中的内容分别写为0、1、2、3、4、5、6、7、8、9,可以用“e 起始地址 数据 数据 数据……”的格式来进行,如下图所示:

e 1000:0 0 1 2 3 4 5 6 7 8 9

  • 也可以采用提问的方式来一个一个地改写内存中的内容,步骤如下:
    1. 输入e 1000:10按Enter键。
    2. debug显示起始地址1000:10,和第一单元(即1000:10单元)的原始内容,然后光标停在.的后面提示输入想要写入的数据,此时可以有两个选择:其一为输入数据,然后按空格键,即用写入的数据改写当前的内存单元;其二为不输入数据,直接按空格键,则不对当前内存单元进行改写。
    3. 当前单元处理完成后(不论是改写或没有改写,只要按了空格键,就标识处理完成),debug将接着显示下一个内存单元的原始内容,并提示及进行修改。
    4. 所有希望改写的内存单元改写完毕后,按Enter键,E命令操作结束。
  • 也可以用E命令向内存中写入字符串,比如,用E命令从内存1000:0开始写入:数值1、字符串“a+b”、数值2、字符串“c++”、字符3、字符串“IBM”,如下:

e 1000:0 1 “a+b” 2 “c++” 3 “IBM”

  • 用E命令向内存中写入机器码,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码。(见P42)

  • 用debug的A命令以汇编指令的形式在内存中写入机器指令。(见P44)


转载请注明:guanjianhe的博客 » 汇编笔记04