c-nasm汇编器:

GitHub - Changele08/c-nasm: 简易的汇编语言编译器

【基本信息】

简单的汇编语言编译器,源程序包含一个源文件,总共约为10000行(大部分为汇编指令->机器指令对照表)

使用devc++5.11无错误无警告编译通过。

【支持指令】

汇编指令:

mov,add,sub,mul,div,cmp,and,or,xor,shl,shr,not,push,pop,int,in,out,hlt,pushad,popad,pusha,popa,nop,wait,pushf,popf,sahf,lahf,movsb,movsw,cmpsb,cmpsw,stosb,stosw,lodsb,lodsw,scasw,ret,leave,into,iret,aam,aad,aaa,cmc,clc,cld,std,cli,sti

伪指令:

jmp,org,call,jbe,jb,jz,je,fill(times指令的替代指令),db,dw,dd,resb,resw,resd,resq

【使用方法】

命令行输入:c-nasm infile outfile即可将infile汇编为outfile。

【软件速度】

使用STL_map存储汇编指令与机器代码对照表,对于每条汇编指令,编译所需复杂度为log2(n)(n为表中元素个数)

【使用样例】

以下汇编代码用来生成一个fat12格式的软盘文件,是一个非常小的操作系统,在模拟机上引导进入系统后,会在屏幕上显示“hello,world”字样,汇编代码摘自川合秀实的书《30天自制操作系统》。

     org 0x7c00JMP       entryDB     0x90DB      "HELLOIPL"        DW      512             DB      1               DW      1               DB      2               DW      224             DW      2880            DB      0xf0            DW      9               DW      18              DW      2               DD      0               DD      2880            DB      0,0,0x29        DD      0xffffffff      DB      "HELLO-OS   " DB      "FAT12   "        RESB    18              entry:MOV       AX,0            MOV     SS,AXMOV        SP,0x7c00MOV        DS,AXMOV        ES,AXMOV        SI,lable msg
putloop:MOV     AL,[SI]ADD      SI,1            CMP     AL,0JE      finMOV      AH,0x0e         MOV     BX,15           INT     0x10            JMP     putloop
fin:HLT                     JMP     fin             msg:DB      0x0a, 0x0a      DB      "hello, world"DB      0x0a            DB      0fill 0,510DB       0x55, 0xaaDB        0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB  4600DB      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB  1469432

保存为hello.nsm,输入c-nasm hello.nsm hello.img将其编译为软盘文件

将虚拟机的启动软盘设置为hello.img

运行后如图所示,显示helloword在屏幕

c-nasm简易的汇编语言编译器(nasm、nask语法)相关推荐

  1. Linux下配置汇编编译器NASM和bochs模拟器

    NASM下载:http://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D 解压:tar zxvf nasm-2.12.02.tar.gz 进入刚解压的目录 然 ...

  2. 在linux下 nasm 编译,Ubuntu上安装nasm以及nasm在Ubuntu上的简单使用

    1.在Ubuntu上安装nasm方法 首先在网站http://www.nasm.us/pub/nasm/releasebuilds/2.10.07/下面去下载2.10.07.tar.gz这个版本(一般 ...

  3. 汇编语言编译器masm_计算机汇编语言和指令操作

    机器语言 每种类型的CPU都能理解它们自己的机器语言.机器语言里的指令是以字节形式在内存中储存的数字.每条指令有它唯一的数字码称为操作代码,或简称为操作码.80x86处理器的指令大小不同.操作码通常是 ...

  4. 用c语言编写一个简易的编译器,面向教学的简易c语言编译器的设计与实现(54页)-原创力文档...

    目录 TOC \o "1-5" \h \z \o "Current Document" 摘要I ABSTRACTII \o "Current Docu ...

  5. 汇编语言---指令格式和基本语法

    汇编语言的指令格式,目前有两种不同的标准:Windows下的汇编语言基本上都遵循Intel风格的语法,比如:MASM.NASM;而Unix/Linux下的汇编语言基本上都遵循AT&T风格的语法 ...

  6. 编译器入门 语法分析器 java_从零开始写个编译器吧 - Parser 语法分析器

    Parser(语法分析器)的编写相对于 Tokenizer (词法分析器)要复杂得多,因此,在编写之前可能也会铺垫得更多一些.当然,本系列旨在"写出"一个编译器,所以理论方面只会简 ...

  7. android 脚本引擎,GitHub - PassByYou888/zExpression: 脚本与编译器内部的语法引擎内核,也是一种op内核,zExpression可以轻松实现自己的脚本引擎...

    zExpression 句法编译器+解释器,脚本引擎内核 技术体系解释: 在编译原理的技术体系中,凡是处理文本化的代码前,都需要做一次预处理,其中我们常说的语法,语法糖,都是一种预处理程序 词法:词法 ...

  8. Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序

    文章的标题看似自相矛盾,然而我在"正确"二字上打了引号.我们来看一个例子,关于Java异常处理(Exception Handling)的一些知识点. 看下面这段程序.方法pleas ...

  9. 编译原理 第一章(源程序、目标程序、解释器、编译器、词法语法语义分析)

    第一章 (一)什么是编译程序 1.编译程序 将用高级语言书写的程序翻译成等价的低级语言程序(汇编.机器语言),这种翻译程序称为编译程序. 2.源程序 编译程序的输入对象为源程序 3.目标程序 编译程序 ...

最新文章

  1. 读书笔记:软件人才-管理的艺术
  2. 详解 二叉搜索树-----AVL树
  3. 快速排序详解+各种实现方式
  4. matlab 联合体,C++11非受限联合体(union)
  5. VS2012下基于Glut OpenGL GL_POLYGON示例程序:
  6. 使用ResourceHacker以命令行方式更新应用程序图标
  7. github 仓库中文名_Github仓库重命名
  8. Git, Gitlab使用文档
  9. Windows 2008 R2 配置 DNS 实现二级域名
  10. 测绘工程本科生如何入门GNSS算法 - 引言
  11. 鸿蒙os2.0第一批升级名单,首批升级鸿蒙OS名单终于来了!
  12. 家谱树(gentree)
  13. ★ SMILES与分子图像的转换代码【及后续操作:识别、指标评估】
  14. Nmap的使用方法总结
  15. 制作和合入quilt补丁
  16. 冷启动、热启动时间性能优化
  17. java对称加密(DES/DESESE/AES)的简单使用
  18. 深度研究微软的资产负债表和财务状况以及未来投资价值
  19. 【onenote】onenote2016独立版安装方法
  20. 最详细的 Toolbar 开发实践总结

热门文章

  1. 什么是车联网?它和物联网有什么区别?
  2. ARM 学习笔记整理(一)
  3. 开源数据库CockroachDB(二)
  4. ESP32 超声波测距
  5. 【原创】系统设计之系统时序图表达
  6. vr是什么软件? VR全景怎么拍摄?
  7. Modbus转Profinet网关连接皖仪氦质谱检漏仪SFJ-16M通信配置案例
  8. 基于javaweb的超简单新闻管理系统
  9. uCOS-II的任务介绍
  10. 中国政法大学李永平教授