+++ title = "汇编语言" author = "taadis" head_img = "" created_at = 2019-07-23T17:21:00 updated_at = 2021-11-16T11:46:00 description = "汇编语言..." tags = ["asm"] +++ ## ... 编程语言目前可以分为三代: 1. 机器语言 2. 汇编语言 3. 高级语言 机器语言,机器只能识别低电平和高电平,对应为0和1。 汇编语言,助记符。 比如c#/java/go/python/ruby/swift等都可以归类为高级语言。 ## 进制 先来看看日常生活中的常见的进制:十进制。 十进制由0,1,2,3,4,5,6,7,8,9这10个数字组成,逢十进一 而机器的世界只能识别0,1,也就是二进制,逢二进一。 还有八进制,逢八进一; 十六进制,由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F这16个符号组成,逢十六归零进一. faq:汇编如何实现进制归零进一,以及机制转换? ## CPU ### Inter 1971年英特儿Inter发布了史上第一款CPU 4004 1978年发布了intel 8086(后续系列的鼻祖) 1980年发布了intel 80186 1982年发布了intel 80286 1985年发布了intel 80386 1989年发布了intel 80486 1993年发布了intel 80586(Pentium) 这些系列皆向后兼容,8086可以称之为这些系列的鼻祖,所以重点关注8086. 指令集架构:CPU所有指令的集合,简称为指令集 X86指令集架构:简称为X86架构或X86指令集 1. 指的是CPU指令集,不是CPU硬件结构 2. 指的是以8086等一系列指令集,而不是具体某一款处理器的指令集 3. X86架构一直沿用至今,80586之后还有不断更新迭代. ## MacOS 下安装 nasm 老版本的 MacOS 有内置的 nasm 汇编器, 较新版本的 MacOS 已不内置 nasm 汇编器. 可以通过以下方式获得 ``` brew install nasm ``` 验证 ``` nasm -v NASM version 2.15.05 compiled on Nov 14 2020 ``` ## 8086 ``` mov AX, 0x001 mov AX, [0x001] ``` ## AT&T ## RSCI-V 参考 - [nasm.us](https://www.nasm.us/) - [学习汇编的重要意义](http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=free&kind=1220&qkSg=2&qID=10793&readSg=1) - [《汇编语言(第2版)》郑晓薇编著配套实验](https://www.shiyanlou.com/courses/83) - [Linux安装dosemu和masm](https://www.jianshu.com/p/29114c96c36f) - [Linux环境下使用dosemu写汇编](https://www.cnblogs.com/dwc929210354/p/5958583.html)