编译并进入debug模式
masm是微软出的汇编编译器,支持8088/8086架构的汇编语言,在DOS下运行,需要下载。masm包括:
(1)编辑程序edit.exe
(2)汇编程序masm.exe
(3)连接程序link.exe
(3)调试程序debug.exe
基本使用方法如下,仅供参考:
用之前最好把上面的几个文件保存到盘符下的文件夹里,文件夹名字尽量简单明了,一切为了操作简单。
(1)最好不要用edit.exe,而用记事本编辑汇编程序,这样操作比较方便。保存时,文件类型选为所有文件,再在文件名后面加上.asm,保存即可。
1.下载dosbox并安装
2.举个例子,在D盘新建一个文件夹dosbox,用于存放exe可执行文件
3、安装DOSBox,完成后双击打开DOSBox
4、在输入框状态下z:\>
z:\>mount c d:\
5、把D盘作为模拟的C文件夹位置
z:\>c:
进入c盘
敲命令进入masm所在文件夹,输入masm *.asm(*表示文件名)回车。 注意:最好*.asm在当前DOS提示符的路径下面,否则会出现找不到*.asm的提示。
这时会提示
Object filename [*.OBJ]:
表示要生成的目标文件名称,必须填,然后回车。提示
Source listing [NUL.LST]:
表示是否要生成列表文件,填写这生成.lst文件,不填则放弃生成.lst文件。.lst文件用记事本打开能看到源代码的语法错误,查错想当方便,****强烈建议生成****。回车后提示
Cross-reference [NUL.CRF]:
表示生成交叉引用文件.crf,如果有多个.obj文件参与连接就要生成,回车后显示错误数量等信息,编译完成。
(3)输入link *(.obj文件名)
一路回车,返回时已经生成了*.exe。
(4)debug使用比较复杂,将专门介绍。
6、在输入框状态下c:\>
c:\>cd dosbox 进入dosbox文件夹。在输入框状态下输入debug *.exe进入debug模式。
debug:
-g 直接运行程序
-t 执行一句
-d x y, 输出偏移地址为x到y(闭区间)存储的值,都是8个bit的字节
-q 推出debug模式
不错的总结:
汇编
汇编除法:
对于除数是8位,则被除数是16位存在AX中,除完后,商在AL,余数在AH
对于除数是16位,则被除数是32位存在DX(高位)AX(低位)中,除完后,商在AX,余数在DX
把寄存器DL中的数字输出。(可能为1位或者2位数)
https://zhuanlan.zhihu.com/p/50139518
子程序:(1位或者两位十进制数)
PRINT PROC NEAR
PUSH DX
XOR AH,AH
MOV AL,DL
MOV DH,10
DIV DH
CMP AL,0
JZ ONE
PUSH AX
MOV DL,AL
ADD DL,'0'
MOV AH,02H
INT 21H
POP AX
ONE:
MOV DL,AH
ADD DL,'0'
MOV AH,02H
INT 21H
POP DX
RET
PRINT ENDP