汇编学习总结
汇编学习笔记
一、基础知识
汇编语言的组成
- 汇编语言由 3 类指令组成
- 汇编指令:机器码的助记符,有对应的机器码
- 伪指令:没有对应的机器码,由编译器执行,计算机并不执行
- 其他符号:如
+ 、- 、 * 、 /
等,由编译器识别,没有对应的机器码
汇编语言的核心是汇编指令,它决定了汇编语言的特性
存储器
即为内存
指令和数据
存储单元
存储器被分为若干个存储单元,每个存储单元从 0 开始顺序编号,例如 0 ~ 127
计算机最小信息单位是 bit
也就是一个二进制位。8 个bit
组成一个 byte
也就是通常所说的一个字节。
一个汇编程序的基本结构
-
这是定义一个段,名称为 abc
abc segment . . abc ends -
在这个段中写入汇编指令,来实现相关任务
abc segment mov ax,2 add ax,ax add ax,ax abc ends -
然后 要指出程序在何处结束
abc segment mov ax,2 add ax,ax add ax,ax abc ends end -
abc 被当做代码段来用,所以,应该将 abc 和 cs 联系起来。(当然这个程序,也不是非这样做不可)
assume cs:abc abc segment mov ax,2 add ax,ax add ax,ax abc ends end -
程序返回
一个程序结束后,将 CPU 的控制权 交给使它得以继续运行的程序,我们称这个过程为:程序返回。
那么如何返回呢? 应该在程序的末尾 添加返回的程序段
mov ax,4c00H int 21H // 这两条指令 所实现的功能就是程序返回
- 与结束相关的概念
目的 相关指令 指令性质 指令执行者 通知编译器一个段结束 段名 ends 伪指令 编译时,由编译器执行 通知编译器程序结束 end 伪指令 编译时,由编译器执行 程序返回 mov ax,4c00H int 21H 汇编指令 执行时,由 CPU 执行
执行一个汇编源程序的步骤在 dosbox 下
在 dosbox 下 输入 masm 可以显示出版本
-
masm
编译文件
masm xx.asm
第一个回车 确定输出目标文件名称
第二个回车 忽略列表文件生成
第三个回车 忽略交叉引用文件生成
在 dosbox 下 输入 link 可以显示出版本
-
link
连接 目标文件 从而得到可执行文件
连接文件link xx
第一个回车 输入可执行程序的名称
第二个回车 忽略映像文件生成
第三个回车 输入调用的子程序 忽略库文件的连接 忽略按回车
最后会报一个错LINK : warning L4021:no stack segment // 没有栈段 这里我们不理会这个错误
说完复杂的 方法 现在换简单的
masm xx; // 在结尾加上分行,按enter后,编译器就对xx文件进行编译,在当前目录生成目标文件xx.obj,并在编译的过程中自动忽略中间文件的生成
link xx; // 同上
有什么不同见解可以在评论区共同讨论
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现