MOV SI,2000 CLC
LOP: MOV ADC [DI],AL INC SI INC DI LOOP LOP INT 20
AL,[SI]
步骤:
1)用A命令键入此程序
2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。
3)用G命令运行此程序,并用D命令检查其结果(存放在哪里?),是否正确?
4)将INT 20H指令改为INT 3,有何区别?若这条指令不加,行不行?试 试。
5)请说明这个程序完成的功能是什么?
四、 实验说明
1. 初学者在使用DEBUG命令修改内存或执行程序时,由于多种原因,
出现死机是较经常的现象,可按RESET复位按钮,重新启动系统。 2. 用连续执行命令G执行程序时,注意给出执行的首地址,或查看当
前CS和IP值是否为要执行程序段的首地址,并注意查看执行的指令流程中有无返回DEBUG功能的程序段,如指令INT 20T或断点设置INT3,否则发出命令后,很容易出现死机,原因是如无程序段使系统返回命令接受状态,CPU将不断到内存取指令、执行指令,使作户失去对系统的控制,出现死机。为避免这种情况,可在用户程序段的最后加上一条INT 20H指令,或用断点方式执行。避免出现死机。
3. 关于任务2,在命令A下汇编各条指令,对于错误的指令,DEBUG
指令出其错误位置,对于正确的指令,将其汇编到相应内存,据此可判断指令正误,而具体原因需自己分析。
4. 关于任务3,用A命令汇编好后,用T,P,G命令分别执行,记录
指令执行前后各寄存器(包括标志寄存器各标志位值)、堆栈指针及堆栈内容变化情况,以及与指令有关内存单元的内容,总结T和P执行某些指令的不同之处及适用场合。 5. DEBUG下不支持符号地址,如任务1中的标号LOP和J 等,在命令