汇编语言编译调试帮助
时间:2025-03-13
时间:2025-03-13
汇编语言编译调试帮助
汇编语言的源代码是文本格式的,可以使用记事本编写,打开记事本,输入代码:
代码如下:
;test.asm by xecle
data segment
mesg1 db 'what is your name?',0dh,0ah,'$' mesg2 db 'Hello ','$' buff db 20,? db 20 dup(?) data ends
;------------------------------------------ stack segment para stack dw 10h dup(0) stack ends
;------------------------------------------ code segment assume cs:code,ds:data,ss:stack main: mov ax,data mov ds,ax mov es,ax mov ax,stack mov ss,ax
output:
mov dx,offset mesg
mov ah,09h int 21h
input: mov dx,offset buff mov ah,0ah int 21h
Chello: mov dx,offset mesg2 mov ah,09h int 21h mov dx,offset buff add dx,2 int 21h
m_end: mov ah,4ch int 21h code ends end main
由以上示例代码可见,汇编文件共分为三个段,分别为数据段,堆栈段,代码段,其中代码段必须有,在代码段末尾由end lable指出程序的入口地址lable,若程序没有定义数据段或者堆栈段,连接时会提示waring ,若程序中确实没有用到,可不用理会。
编译汇编文件使用的是masm,也可以使用tasm,此处以masm为例,首先需要现在masm,自己解决,然后解压缩,假设解压缩后位置为d:\masm\,(建议放在某个盘的根目录下面,会方便很多,另外文件夹名称最好不要用中文),然后桌面左下角点开始》附件》命令提示符,或者开始》运行,输入cmd回车,这样可以打开命令行:
Xp系统显示的内容应该会略有不同,因为我是win7系统,然后进入masm的文件夹, 输入d:回车(用搜狗输入法的注意输入状态必须是英文^_^),然后输入cd masm进入masm文件夹,cd表示进入目录,cd ..表示返回到上一层目录:
把刚才写好的汇编文件test.asm拷到masm这个文件夹里面,然后在命令行输入编译命令:masm test.asm;回车,
这里显示的语法错误,上面几行有提示错误位置,回到源文件更改,把24行处mesg改为mesg1,重新编译,没有错误,编译输出的为.obj文件,本例中输出为test.obj。
连接是把编译好的二进制文件按照可执行文件格式进行打包。输出文件为.exe文件。连接命令为:link test.asm;回车,如果程序中没有数据段或者堆栈段定义,此时会提示waring,如果确实不用到数据段或者堆栈段,则不用理会:
然后输入test回车运行test.exe程序:
按照提示输入姓名,回车,
可以看见输出,输入自己消失了。 调试程序使用TD,TD是turbo公司的调试器,全程turbo debuger,跟debug的功能一样,不过TD有图形界面,支持鼠标,所以使用简单。 把TD解压到mams文件夹,输入TD启动。
点击OK或者按回车,用鼠标把蓝绿色区域的左下角拖到最大:
用鼠标点file>open,然后选择要调试的test程序,就可以载入程序,TD界面中各部分从上到下,从左到右分别为:菜单、代码窗口、寄存器窗口、标志位窗口、内存窗口、堆栈窗口,各个分窗口均有右键功能,需要先左键单击激活相应窗口,然后用右键召出菜单,其中堆栈段窗口右键单击位置需位于字母SS上或左边,若在堆栈偏移地址或堆栈数据上右键单击则不要松开右键,按下右键为出现菜单,松开为选择相应功能。 TD支持断点和单步,等常用调试功能,
还支持内存断点和标志位触发等高级调试功能,
具体请查看相应菜单(不认识的单词自己查),菜单后附有快捷键可以加速输入:
TD与TC均属于turbo公司产品,因此功能很类似,可以参考TC操作。Help文件里面可以找到帮助文件。 常用功能: 1、 断点
断点位于breakpoints菜单,常用断点为代码断点,在代码窗口找到相应代码行,打击选中,按breakpoints菜单中Toggle或者直接按快捷键F2触发断点,同一行再次触发断点则会取消断点。设置断点后可以用run菜单中的run运行到断点处,如果嫌断点太麻烦,可以直接选中需要停止的代码行,然后运行run菜单中的go to cursor,运行到光标所在行停止。 2、 单步
每次执行一行代码,寄存器、标志位、堆栈、内存窗口中在本步发生变化的值会以白色显示。 3、 查看内存
激活内存窗口,拖动滑块查看,其中内存窗口左半部分为十六进制,右半为对应的ASCII码,这对查看字符串变量很有帮助。
内存窗口常用查看方式为右键中go to……,然后输入要查看的地址,如ds:bx、ds:0000、1234:4321等合法的地址表达式。
4、 查看表达式
View菜单中的watchs看以查看合法表达式的值,首先VIEW》wachs召出watch窗口, 然后右键》edit…,输入监视的表达式值:
任何合法的表达式均可以被监视:
输入完毕按回车或单击OK,watch可以同时查看5个表达式的值,单击代码窗口并运行到适当位置,然后通过菜单召出watch窗口,即可查看所监视的表达式。
其他操作或其他问题请google或者联系我。
2009/6/13
xecle
…… 此处隐藏:409字,全部文档内容请下载后查看。喜欢就下载吧 ……