1.8086汇编的基本框架
DATA SEGMENT ;数据定义区,这里面用来定义汇编中的数据 DATA ENDS ;数据段定义结束,所有数据都在数据段或者附加段定义 CODE SEGMENT ASSUME CS:CODE,DS:DATA ;声明将数据段和代码段分别绑定到指定段寄存器,伪指令仅仅声明,实际没绑定,CS是OS系统自动绑定,DS,ES,SS使用户手动绑定 标号1: MOV AX,DATA MOV DS,AX ;这两条语句是将DS指向DATA,使DATA称为数据段 ;段寄存器指向谁谁就是什么段 ;这里面写汇编代码 ;将DOS执行权返回给OS,因为DOS是单用户单任务的OS MOV AH,4CH INT 21H ;这两句是DOS功能调用,返回OS控制权给OS CODE ENDS ;代码段结束 END 标号1 ;汇编程序结束,注这里的标号1就是开头的标号12.8086的模拟器DOSBox
将MS-DOS根目录挂载到自己指定的目录下 – 为了把以后编写的代码放到自己执行的目录下
方法1:
打开DOSBox
每次开启都使用挂载命令
命令1:mount 虚拟磁盘 真实磁盘根目录下的文件夹 命令2: 虚拟磁盘: (切换到虚拟磁盘) 注意: 虚拟磁盘并不存在,可以随便弄,只要你将自己随便想的虚拟磁盘挂载到真实磁盘根目录下文件夹,这个虚拟磁盘就相当于诞生了,他的存储位置就是你挂载的真实目录上,对这个磁盘操作就是对真实磁盘的目录操作 eg:创建一个虚拟盘D盘,并将其挂载到Windows 10下的D:huibianwenjia下 mount d d:huibianwenjianjia d: -- 这个命令是切换到D盘下,就是进入到win10的d盘下的huibianwenjianjia 以后代码放到d:huibianwenjianjia这里 这种方法缺点: 每次DOSBox开启都要重新输入命令,麻烦2.方法2 - — Windows10,其他的系统都一样,不会的私我
找到 ----- dosbox-0.74.conf 配置文件,一般在DOSBox安装目录下
找到文件的最下面加上下面两句话,以后再开启DOSBox的时候,就会自动执行了,不用每次都手动挂载了
#自动挂载,并且切换到挂载的虚拟磁盘上 mount D D:huibianwenjiajia D:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wmFkFYCm-1645171840664)(C:Users15796Pictures日常截图DOSBoxConf.png)]
DOSBox工具的使用Windows10
编译汇编程序的步骤—()表示中间步骤
1.先编译.asm文件,(使用masm 文件名.asm)—>(生成目标代码文件.obj)
2.—>链接需要的所有目标代码文件,(使用link 文件名1.obj,文件名2.obj,…)—>生成可执行文件.exe
3.---->输入:文件名.exe,执行程序 或者 调试 文件名.exe
总结:编译--------->链接-------->执行/调试
汇编工具 masm.exe
使用方法:
编写的汇编文件,使用.asm后缀, eg:我编写了b.asm文件--调用2号功能输出字符串到显示屏b.asm
DATA SEGMENT STR DB 'HAPPY NEW YEAR',0AH,0DH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET STR MOV CX,17 NEXT: MOV DL,[BX] MOV AH,02H INT 21H INC BX LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END STARToperation usage:
masm b.asm[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yQdnZwcs-1645171840665)(C:Users15796Pictures日常截图b.png)]
链接工具 link.exe
链接目标代码 link b.obj
执行 b.exe
调试工具 debug.exe
调试b.exe:debug b.exe -u:反汇编,这里会发现一些伪指令根本没有编译,没有产生目标代码 通过反汇编命令可以看到数据段,代码段,堆栈段,附加段,首地址 我这个程序的代码段地址为:076C,数据段首地址为:076A 代码段的地址是由OS决定的,我们不可以干预 -r:查看寄存器 -g:运行程序 -t:单步执行程序,单步调试程序前应该使用-g命令执行程序 -q:退出调试 -p:退出调试 -d:查看内存空间 usage:-d 地址空间首址:偏移值命令演示:



