1.汇编运行程序时卡住:一般是没有设置开始标识符和CX编写错误
2.重新编写程序后没有变化:一般是没有重新编译(masm xx;)和连接(link xx;)
3.程序有结果,但是没有结束运行:1.少写了mov ah,4ch , int 21h;2.CX编写错误
4.根据调试需要,可以修改初始值,能使程序更快地进入所需要观察的状态。
5.要想查看程序对内存单元的修改:若程序很长,逐句编译查看内存很麻烦。只需运行一次程序后再用debug查看寄存器,然后通过寄存器来获得内存单元的地址,从而查看内存单元的内容。
6.不能直接把数据送到内存单元,需要间接借助寄存器(某些)
如:
mov word ptr es:[bx],ds:[bx+si+3]是错的
要改为
mov ax,ds:[bx+si+3]
mov es:[bx],ax
add byte ptr ds:[bx],es:[bx]是错的
要改为
mov al,es:[bx]
add ds:[bx],al
7.不能直接把数据送到段寄存器(cs,ss,ds,es),需要间接借助寄存器(某些)
如:
mov ds,data是错的
要改为
mov ax,data
mov ds,ax
8.当两个数值/寄存器都不确定大小(byte/word/dword)时,使用byte/word/dword ptr
其中offset ,[]:[]属于不确定大小;ax,al等寄存器属于确定大小