目录 上一页 下一页 下一章

第2章 开始设计程序 -15-

-a[Enter]← 输入的命令,大小写均可,[Enter]代表“回车”。
0B01:0100← 可用存储器的起始地址,你的程序从这里开始存放
"A"命令的作用是告诉DEBUG现在开始编写程序,它可以后加一个地址作为参数,即可以从代码段的任何位置开始输入程序。对于新编一个程序来说,必须从100H开始。因此我们也可打入"A100[Enter]"。对于修改一个已经存在的程序中的部分指令,可在A后面打入将要修改指令的偏移地址即可。例如要重写位于偏移量200H处的指令,可打入"A200[Enter]"。此时屏幕上将显示0B01:0200。
  输入了"A"命令之后,屏幕上应出现一个以"段:偏移"形式表示的逻辑地址。这个地址就是程序的起始地址。它和CPU中CS:IP指向的位置相同。
  在不同的机器,不同的DOS版本中,用户程序的起始段地址是不同的。如果看到的段地址不是0B01,那并没有任何关系。关于偏移地址必为0100的原因前面说过,这是DOS的安排。
  看到逻辑地址后,我们即可敲入我们的第一个程序。DEBUG会自动把输入的汇编指令译成机器码并保存在相应存储单元中。每条指令译完后DEBUG会自动列出下条指令的逻辑地址,因此我们只要打入程序右侧的那些指令即可,左边的逻辑地址是自动给出的。注意分号(;)后面的文字是对这一行指令的说明,不用输入。
-a[Enter]
0B01:0100
0B01:0102
0B01:0104
0B01:0106
0B01:0109
0B01:010B
0B01:010D
in al,61
xor al,2
out 61,al
mov cx,400
loop 109
jmp 100
[Enter]
;用户输入的内容





;← 此处直接回车
  在运行这个程序前,我们应先将此程序存盘。因为程序中的一个细小的"BUG"都可导致"死机"的后果。那如何保存此程序呢?
  既然要存盘,总要给程序取个名字。程序命名要用到DEBUG的第三条命令--N,操作如下:
  -NPROG1.COM[Enter]
"N"命令实际来自于英文单词"Name"。有些参考书讨论这个命令时常提醒用户注意不要在"N"后面加空格,其实有无空格并没有关系,至少在6.0以上版的DOS系统没有这个要求。当然,文件扩展名必须是"COM",不能是"EXE"或其它的。
  有了名字后,我们还应告诉DEBUG此程序的字节数。由于程序从100H开始,因此我们只要把最后一条指令的下一个地址减去100H即可得到程序长度。前面那个程序的长度应该是010D-100=0D。
  DEBUG规定存盘程序的长度应放在"BX"和"CX"寄存器中,也就是说把BX,CX两个16位寄存器联合起来存放一个32位的长度值,高16位在BX中。因此,若要存盘的内容不足64K,则应将BX置0,而将长度放入CX中。这就要用到前面介绍的"R"命令。操作如下:

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章