《汇编语言·第三版》--王爽
1 Debug
Debug是DOS(Disk Operating System,磁盘操作系统)、windows提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
用到的Debug参数:
- r命令查看、修改CPU寄存器的内容;
- d命令查看内存中的内容;
- e命令改写内存中的内容;
- u命令将内存中的机器指令翻译成汇编指令;
- t命令执行一条机器指令;
- a命令以汇编指令的格式在内存中写入一条机器指令。
2 Win 7 64位调debug
安装DOSBOX后打开DOSBOX,将debug.exe拷贝到F盘(某盘根目录),在DOSBOX中输入“mount c f:\”命令(此命令输入后有“Drive C is mounted as local directory f:\”,再输入“c:”回车。然后就可以去实现《汇编语言·第三版》—王爽P.45的实验任务了。
3 用debug向指定内存写入汇编指令并执行
(1) 查看CPU各寄存器中的值
CS:IP当前指向的内存地址为(073F0 +0100),此地址里面的二进制内容翻译成汇编语句为ADD [BX+SI], AL。
(2) 向指定内存地址输入汇编指令
向内存地址CS:IP = 073F:0000写入以下框内的汇编指令,并执行它们,观察CPU各寄存器值的变化。
mov ax, 4E20H add ax, 1416H mov bx, 2000H add ax, bx mov bx, ax add ax, bx mov ax, 001AH mov bx, 0026H add al, bl add ah, bl add bh, al mov ah, 0 add al, bl add al, 9cH |
[1] 向指定内存地址写入汇编指令
内存073F:0000 – 073F:001F段内保存了这些汇编指令。
[2] 修改CS:IP内容
CS:IP内的内容代表即将访问的内存地址。要求将这段指令写入起始地址为CS:IP = 073F:0000的段内,那么只需要修改IP的值即可:[3] 执行汇编指令
在[2]后,CS:IP指向内存073F:0000即刚输入汇编指令的首地址。4 查看内存中的内容
PC机主板上的ROM中写有一个生产日期,在内存FFF00H ~ FFFFFH的某几个单元中,请找到这个生产日期并试图改变它。5 向内存从B8100H开始的单元中填写数据
B810:0000地址属显存部分,当向这个内存中写入数据时会显示到屏幕上来。
8086PC机内存地址空间分配:
- 00000 ~ 9FFFF:主存储器地址空间(RAM);
- A0000 ~ BFFFF:显存地址空间;
- C0000~ FFFFF:各类ROM地址空间。