目录
为什么写这篇文章
最近开始学习汇编语言,看的是王爽老师的《汇编语言》。感觉教程通俗易懂,并且这个学期刚好在学计组和操作系统,上手很快,但有些点很容易忘记,故作此文章,记录一些知识点和心路历程。本人才学疏浅,如有错误请指正。
Debug中的几个命令
- 查看寄存器信息 -r
- 修改寄存器内容 -r +寄存器名字
- 查看内存信息-d 段地址:偏移地址 (结尾偏移地址)
- 修改内存单元内容 -e 地址 + (数据+数据+数据…)/(数据 空格下一个)
- 查看汇编指令 -u 地址
- 执行cs:ip指向的命令 -t
- 向内存写入汇编指令 -a 地址+汇编指令
- 退出debug -q
- 执行程序到代码段CS:偏移地址 -g 偏移地址
- 直接执行完loop循环/程序中最后一步-p
我认识的几个寄存器
通用寄存器: ax bx cx(记录程序长度) dx
段寄存器:cs(当前指令的段地址) ds(内存单元的段地址) ss(栈顶元素的段地址)
指针寄存器: ip(当前指令的偏移量) sp(栈顶元素的偏移量)
Hello world!
第一个汇编程序hello.asm
总的过程为 编程->编译(masm)->连接(link)->加载->运行
在dos中用masm和link命令进行编译连接,hello.asm我放在D:\hb文件夹即挂载在C盘的文件夹
运行masm和link命令后,只需输入hello一直回车就可以生成hello.exe文件,如下图
也可以用简化的方式进行编译和连接,只要在命令后加分号;
之后直接键入hello就可以运行程序了。
细节
待补充。。。。
心理活动
一开始做第一章实验时因为win10里没有debug命令,所以在虚拟机用xp做。学习汇编初给我感觉就是很爽,有反馈。每次输入一行命令都能成功的得到结果,不会出现莫名其妙的错误。想起之前学习android时,装个android studio都费了老大劲,写个程序也莫名其妙出错就难受。而学习汇编能给我正反馈,让我有学下去的动力,很舒服啊。
之后严同学告诉我下个dosbox就可以在win10下debug了,我试了下,的确可以,但和虚拟机下的xp相比,分辨率有点问题,尤其是dosbox行数较少,alt+enter全屏后分辨率也不对,而且一开始要挂载目录,然后操作一下,有点麻烦。于是百度了下,解决了。
打开dosbox所在1目录,找到DOSBox 0.74 Options.bat,用记事本打开,找到下面几个参数并修改。
fullresolution=1920x1080
windowresolution=1280x800
output=opengl
保存再打开dosbox就会发现分辨率变了,可以根据自己的需要修改分辨率。
其次同样在DOSBox 0.74 Options.bat中找到[autoexec]
在下面加入几行代码
MOUNT C D:\hb
C:
其中hb是我放exe的地方,如下图。
保存后退出。再打开dosbox会发现已经输入上述代码了,直接输入debug就进入debug了。