汇编语言学习篇1——DOSBox、汇编语言、汇编器的认识
说明:
本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
QQ 群 号:513683159 【相互学习】
内容来源:
在DOS年代,人们买电脑干什么?、DOSBox是什么
什么是NASM、nasm与masm编译器的优劣、什么是MASM?
(转)gas汇编小手册 学习Linux内核代码的必备、GNU Binutils 介绍
Linux 汇编语言开发指南
上下文链接
下一篇:汇编语言学习篇2——MASM的环境搭建(win10与Ubuntu1604下的配置)
DOSBox简介
DOSBox 是一个x86 DOS 模拟程序,采用的是 SDL 库,故方便移植。
作用:运行现代计算机不能运行的MS-DOS软件。
DOS = Disk Operation System = 磁盘操作系统 ,即:一个基于磁盘管理的操作系统。
1.以命令行的形式,靠输入命令进行人机交互。(也有很多软件:游戏、办公软件、财务软件等)
2.基本功能:执行命令和程序功能、I/O管理功能、磁盘与文件管理。
3.由微软开发,在微软后续发布的计算机操作系统中,磁盘系统一直被保留着。(微软图形界面操作系统Windows NT问世以来,DOS以后台程序的形式出现。名为Windows命令提示符【运行(Win+R)——》CMD】)
汇编语言(符号语言)
简介:
一种面向机器的程序设计语言(低级编程语言),用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。
特定的汇编语言和特定的机器语言指令集是一一对应的,即:不同设备的汇编语言对应不同的机器语言指令集,不同平台之间不可直接移植。
优缺点:
优点:
1.能直接访问与硬件相关的存储器或 I/O 端口;
2.能不受编译器的限制,对生成的二进制代码进行完全的控制;
3.能对关键代码进行更准确的控制,避免因线程共同访问或者硬件设备共享引起的死锁;
4.能根据特定的应用对代码做最佳的优化,提高运行速度;
5.能最大限度地发挥硬件的功能。
缺点:
1.编写的代码非常难懂,不好维护;
2.很容易产生 bug,难于调试;
3.只能针对特定的体系结构和处理器进行优化;
4.开发效率很低,时间长且单调
汇编器(GAS、MASM、NASM)
分类:
不同风格的汇编语言格式会有不同,并需对应的汇编器进行汇编,比较流行的汇编语言有3种:
1.AT&T风格的汇编语言:(特点是寄存器前面有%号)
GAS汇编器 - GNU Assembler - GNU汇编器 - GAS官网链接
GAS属于GCC的一部分。无需单独安装,可使用指令as --version
检查GAS的存在。
2.Windows风格的汇编语言:
MASM汇编器 - Microsoft Macro Assembler -Microsoft宏汇编程序 - MASM官网链接
3.NASM风格的汇编语言:
NASM汇编器 - Netwide Assembler -基于x86架构的汇编与反汇编软件 - NASM官网链接
编写16位(8086、80286等)、32位(IA-32)和64位(x86_64)的程序。【支持x86与x64架构的CPU(注意不支持ARM架构)。】
GAS | MASM | NASM | |
---|---|---|---|
平台 | Linux | DOS/Windows | Windows/Unix/ Linux/Mac OSX |
语法风格 | AT&T | Intel | Intel |
软件类型 | 自由软件 | 微软开发 | 开源工具 |
Linux 汇编工具 (GAS与NASM)
GAS | NASM | |
---|---|---|
汇编器 (assembler) |
GCC 所依赖的后台汇编工具, 包含在 binutils 软件包, as hello.s -o hello.o |
提供了很好的宏指令功能, 支持相当多的目标代码格式, 执行速度快于GAS (人工编写的语法分析器), nasm -f elf hello.asm |
链接器 (linker) |
链接程序ld,包含于binutils 软件包 ld -s hello.o -o hello |
|
调试器 (debugger) |
GDB、DDD、ALD(Assembly Language Debugger) as --gstabs -o hello.o hello.s ld -o hello hello.o |
|
AT&T与Intel语法的区别
区别 | AT&T | Intel |
---|---|---|
使用寄存器 | 加前缀%:pushl %eax | 无前缀:push eax |
使用立即数 | 加前缀$:pushl $1 | 无前缀:push 1 |
源操作数与目标操作数相反 |
addl $1, %eax:eax寄存器+1 操作符 源操作数 目标操作数 |
add eax, 1 :eax寄存器+1 操作符 目标操作数 源操作数 |
操作数的字长 |
由操作符的最后一个字母决定, 'b' =byte-字节-8 比特、 'w'-word-字-16比特、 'l'-long-长字-32比特, 如:movb val, %al |
由操作数的前缀决定, "byte ptr"-8 比特 "word ptr-16 比特 "long ptr-32 比特 如:mov al, byte ptr val |
绝对转移 调用指令 返回指令 |
加前缀*: ljump $section, $offset lcall $section, $offset lret $stack_adjust |
无前缀 jmp far section:offset call far section:offset ret far stack_adjust |
内存操作数的寻址方式 | section:disp(base, index, scale) | section:[base + index*scale + disp] |
汇编语言学习篇1——DOSBox、汇编语言、汇编器的认识相关推荐
- 【汇编语言学习之路】第一章 汇编语言核心方法论
版权声明:本学习笔记是本人根据小甲鱼"汇编语言学习课程"和<汇编语言>(王爽)的书籍,来记录笔记的 1 汇编语言核心方法论 1.1 学习汇编语言的必要性 汇编语言与机器 ...
- 搭建8086汇编语言学习环境——dosbox
搭建8086汇编语言学习环境 资源网盘链接:链接:https://pan.baidu.com/s/1gamz6WYIWLOv5WP9H8L2Ng 提取码:ydvv 复制这段内容后打开百度网盘手机App ...
- X86汇编语言学习手记(1)
X86汇编语言学习手记(1) 作者: Badcoffee Email: blog.oliver@gmail.com 2004年10月 原文出处: http://blog.csdn.net/yayong ...
- 汇编语言学习和常见错误(个人总结)
博主最近在学习汇编语言课程,发现在学习过程中有许多坑,在此进行简单的总结和汇总.后续内容会进行更新. 错误篇 1.Error T.ASM(16) Undefined symbol: AX,AX :Wa ...
- 16位汇编语言学习笔记(1)——基础知识
文章目录 1.配置汇编学习环境 1.1 工具下载 1.2 配置环境 2. 汇编命令基础 2.1 简单使用 2.2 常用命令 3. 汇编语言基础 3.1 汇编语言程序与汇编程序 3.2 汇编语言程序的格 ...
- 汇编语言学习:使用王爽写的《汇编语言》第三版(编程环境配置)
汇编语言学习 参考书:使用王爽写的<汇编语言>第三版 学习工具(win7 x64): DOSBox 0.74.masm.exe.link.exe.debug.exe. 另外需要一款编辑器, ...
- 菜鸟的汇编语言学习笔记
汇编语言学习笔记 1.1机器语言 计算机发展初期,人们都是用机器语言进行编程的,这也是人们能实现编程控制计算机的最低级别.那么机器语言是什么样子的呢?就是用0和1组成的一个串(形如011010101) ...
- AM335X的汇编语言与c语言,X86汇编语言学习手记 -- 汇编和C协同
X86汇编语言学习手记(3) 2004年12月 在X86汇编语言学习手记(1)(2)中,可以看到栈(Stack)作为进程执行过程中数据的临时存储区域,通常包含如下几类数据: 局部变量 函数调用的返回地 ...
- linux平台学x86汇编语言学习集合帖
linux平台学x86汇编语言学习集合帖 linux平台学x86汇编(一):https://blog.csdn.net/shallnet/article/details/45543237 linux平 ...
最新文章
- YOLOv4没交棒,但YOLOv5来了!
- 验证数字的正则表达式集
- ES6-let const
- 为什么不让安装卫xing×××啊
- 常考数据结构与算法:用两个栈实现队列
- 如何查看某个端口被哪个进程占用
- linux module原理,NodeJS的模块原理
- AliOS Things声源定位应用演示
- swift开发:试玩 Apple 网站的 playground
- slab中记录空闲对象
- poj 3026 Borg Maze (bfs + 最小生成树)
- Kafka从上手到实践 - Kafka集群:启动Kafka集群 | 凌云时刻
- 跟着鬼哥学爬虫-2-糗事百科
- msf后渗透之获取登入password、远程控制、调用摄像头
- 基于等效积分形式的近似方法——加权余量法(配点法,伽辽金法)求解微分方程近似解
- 一个微信投票小程序防止刷票的想法
- Windows高效文件搜索工具/Everything/Listary/uTools
- 【数据分析】快速获取微博用户数据,图片,视频
- Acmer--弱水三千,只取一瓢
- U盘格式化后容量变小了_内存丢失如何恢复?