dosbox使用指南

dosbox使用指南_第1张图片
dosbox使用指南_第2张图片
需要同时用到上图的几个应用程序,将他们放在一个文件夹里,方便起见,将asm文件也放在这个文件夹了
dosbox使用指南_第3张图片
d:\masm是实际的文件夹位置,将其mount到了d盘
dosbox使用指南_第4张图片
切换到d盘
dosbox使用指南_第5张图片
执行masm程序
dosbox使用指南_第6张图片
输入asm文件名,敲3下回车表示不采用缺省文件名创建.obj文件,不创建.lst和不创建.crf文件dosbox使用指南_第7张图片
如图表示创建一个ex2.lst文件
dosbox使用指南_第8张图片
输入link ex1(.asm文件名),链接成exe文件
dosbox使用指南_第9张图片
敲3个回车表示采用缺省文件名、不生成映像文件、不用到库文件
警告:没有定义堆栈段(但不影响执行)
在这里插入图片描述
输入程序名字开始运行
dosbox使用指南_第10张图片
输入debug 文件名.exe开始调试
dosbox使用指南_第11张图片
输入-t单步运行
这里用ex2.exe文件为例,如下图

DATA	SEGMENT
		NUM	DB 82H, 68H, 88H
		SUM	DB ?
DATA 	ENDS
CODE 	SEGMENT
		ASSUME CS:CODE, DS:DATA
START: 	MOV		AX, DATA
		MOV		DS, AX
		MOV		BX, OFFSET NUM
		MOV		AL, [BX]
		INC		BX
		ADD		AL, [BX]
		INC		BX
		ADD		AL, [BX]
		MOV		SUM, AL
		MOV		AH, 4CH
		INT		21H
CODE 	ENDS
		END START

dosbox使用指南_第12张图片
如图,可以看到输入-t单步执行,但是没显示程序的第一句
MOV AX, DATA,而是直接显示了第二句MOV DS, AX,因为程序一进入debug就默认执行了第一句,然后屏幕上显示出来的是下一条即将执行的指令。所以如果要看第一句的执行情况,输入任何一个不为-t的指令;
此处我们输入-r(-r用于显示CPU所有的寄存器和标志位)
在这里插入图片描述
此处我么可以看到即将执行的下一条指令就是第一句MOV AX, DATA
ps:因为IP(程序指针)指向的是下一条指令,所以显示的CS:IP和下一条指令,所以寄存器和标志位显示的是该语句的上一句执行后的结果,所以要查看该语句执行后的情况,要用-t运行下一句
所以我们可以的这些寄存器和标志位的值都是程序还没执行时的初始化值。
在这里插入图片描述
这个就是这条指令的机器码,它是一个3字节指令dosbox使用指南_第13张图片
-d可以查看存储单元(默认为CS段里的内容)
dosbox使用指南_第14张图片
这个就是这条即将执行的指令的CS:IP值,图中的各个段寄存器和地址寄存器可以构成一个逻辑地址,根据逻辑地址我们可以算出物理地址。
在这里插入图片描述
这些是标志位,含义如下:

flag 1 0
溢出标志OF(Over flow flag) OV(1) overflow NV(0) no overflow
方向标志DF(Direction flag) Granger DN(1) down UP(0) up
符号标志SF(Sign flag) NG(1) negative PL(0) plus
零标志ZF(Zero flag) ZR(1) zero NZ(0) no zero
辅助标志AF(Auxiliary carry flag) AC(1) auxiliary carry NA(0) no auxiliary
奇偶标志PF(Parity flag) PE(1) parity even PO(0) parity odd
中断标志IF(Interrupt flag) EI(1) enable interrupt DI(0) disable interrupt

dosbox使用指南_第15张图片
-d的用法,如图想查看数据段的内存,看看变量,所有段的偏移地址都是从0开始(只是指针可以变化),一定要将MOV DS, AX执行完,因为前两句是在手动初始化DS,初始化好了之后DS中才会有数据
dosbox使用指南_第16张图片
如图所示,前3个数在数据段中,第4个数应该是变量sum
dosbox使用指南_第17张图片
如图所示,当我们把程序基本执行完后,第四个变量就变成sum了
dosbox使用指南_第18张图片
如图,我们将DS中的第2个数改成33,输入-e (ds):0000,然后输入空格、33、空格、空格、回车
dosbox使用指南_第19张图片
如图,变量已被修改
在这里插入图片描述

一直单步执行,可以看到它这里标出了[BX]所指的值为82,
DS:[BX]=DS:0000,说明所有资源都能看到
在这里插入图片描述
程序结束
dosbox使用指南_第20张图片
如图,不输入地址,就默认从这条语句开始反汇编
dosbox使用指南_第21张图片
-g相当于从断点处开始执行,想让程序跳转到图中的语句前执行

在这里插入图片描述
如图所示,已跳转,可以直接查看AX中sum的值,就方便多了

debug程序功能表:

R——寄存器命令 功能:检查或修改寄存器的值 
R [寄存器名]

D——转储命令 功能:检查存储器 的内容 
D [内存地址]

E——输入命令 功能:检查或修改 存储器的内容 
E [内存地址] •回车:结束输入命令 •空格:不修改存储器内容,显示下一个存储单元的内容 •输入新值,后回车或空格

A——汇编命令 功能:汇编程序指令 
A [起始地址] 

U——汇编命令 功能:反汇编程序指令 
U [起始地址]

T——跟踪命令 功能:跟踪程序执行 
T=[起始地址][指令条数]

G——运行命令 功能:运行程序 
G=[起始地址]

你可能感兴趣的:(dosbox)