编写汇编程序常用的命令
1、使用“a命令”在debug环境下编写简单的程序
a命令语法格式:-a [地址]
说明:1)如果省略地址接着上一个a 命令的最后一个单元开始;若第一次使用a 命令省略地址,则从当前CS:IP开始
2)每输入一行指令后按回车,若要结束输入命令,则不输入指令按下回车,或按下Ctrl+C(在不同系统中有所不同)
2、使用d命令显示存储单元的内容:
d命令语法格式:-d 地址范围 显示指定范围内存储单元的内容
-d 地址 从指定的偏移地址开始显示128的字节内容
-d 从计算机系统当前偏移地址开始,显示128个字节内容
3、使用e命令修改存储单元内容:e命令语法格式:-e 地址 从指定偏移地址开始修改(或连续修改)存储单元内容
-e 地址 数据表 从指定偏移地址开始用数据表给定的数据修改存储单元(数据表中的数据以空格间隔)
4、调试输入的汇编程序:
1)g命令语法格式:-g=偏移地址1 偏移地址2 运行代码段中从偏移地址1到偏移地址2之间的程序
-g=偏移地址 从指定地址开始执行程序,直到程序结束或遇到INT
-g 偏移地址 从当前偏移地址执行到指定偏移地址之前的指令
-g 从CS:IP指向的指令开始执行程序直到程序结束或遇到INT
2)t命令和p指令:-t=偏移地址 或 -p=偏移地址 从指定的偏移地址处单步执行程序
-t 或 -p 从CS:IP指向的指令开始单步执行程序
说明:t命令和p命令的区别
单步执行程序时,如果遇到子程序或中断服务程序:
t命令:进入子程序或中断服务程序,继续单步执行
p命令:把子程序或中断服务程序当作是一个整体执行
实验一 《汇编语言》P45 实验任务
1、使用a命令输入汇编指令并使用t命令单步执行观察寄存器变化:
使用a命令输入书中对应的汇编代码
使用d命令查看上一步使用a命令输入的汇编代码在内存中的机器码
使用t命令单步执行程序并观察寄存器变化
2、用e命令写入机器码,用t命令逐条执行,观察相关寄存器,与a命令写入指令对比:
使用d命令查看机器码,在之后的内存单元中直接用e命令向内存中写入机器码
使用t命令单步执行机器码(每张图片包含多次t命令)
通过观察可以发现,使用汇编指令和使用其对应的机器码两种方式对寄存器的操作是完全相同的。
实际上,通过返汇编指令-u将写入的机器码进行反汇编所得到的汇编指令和第一步中我们所输入的完全相同。
通过反汇编指令将机器码反汇编所得的汇编指令与我们第一步输入的汇编指令完全相同
3、将指定指令写入从2000:0开始的内存条中,利用这3 条指令计算2的8次方:
修改cs和ip两个寄存器的值,往特定地址的内存中写入汇编指令
多次使用t命令可以实现ax不断乘以2,最终可以得到 AX=0100H,即 (28)10
4、查看pc机主板上ROM中的一个生产日期,再内存fff00h~fffffh的某几个单元中,请找到这个生产日期并试图改变它。
使用d命令发现 FFF0:00F6 到FFF0:000D 是一段日期(可能为生产日期)
使用e命令尝试改变日期所在内存单元中的数据
使用e命令尝试修改日期,但是修改后再次使用d命令所读取到的日期并没有发生改变,可以推测此处的内存为只读的ROM。
5、向内存从b8100h开始的单元中填写数据:
向指定内存中写入数据
通过输入不同的数据,会显示不同的图像以及设定其颜色