栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

8086汇编入门知识

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

8086汇编入门知识

8086汇编入门知识
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就是开头的标号1
2.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 START
    

    operation 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 地址空间首址:偏移值
    

    命令演示:



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/740650.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号