一 、安装NASM

1. 下载安装文件

地址是:http://www.nasm.us/pub/nasm/releasebuilds/2.11.08/

2.解压(具体命令要根据压缩包的类型来选用)

3.进入解压目录

进入刚解压的目录

./configure

make

sudo make install

二、简单使用NASM

  1. 准备好源文件

    假设命名为 c07_mbr.asm(这是《x86汇编语言:从实模式到保护模式》一书的配书代码),这个程序的功能是计算1+2+3+…+100
         ;代码清单7-1
;文件名:c07_mbr.asm
;文件说明:硬盘主引导扇区代码
;创建日期:2011-4-13 18:02 jmp near start message db '1+2+3+...+100=' start:
mov ax,0x7c0 ;设置数据段的段基地址
mov ds,ax mov ax,0xb800 ;设置附加段基址到显示缓冲区
mov es,ax ;以下显示字符串
mov si,message
mov di,0
mov cx,start-message
@g:
mov al,[si]
mov [es:di],al
inc di
mov byte [es:di],0x07
inc di
inc si
loop @g ;以下计算1到100的和
xor ax,ax
mov cx,1
@f:
add ax,cx
inc cx
cmp cx,100
jle @f ;以下计算累加和的每个数位
xor cx,cx ;设置堆栈段的段基地址
mov ss,cx
mov sp,cx mov bx,10
xor cx,cx
@d:
inc cx
xor dx,dx
div bx
or dl,0x30
push dx
cmp ax,0
jne @d ;以下显示各个数位
@a:
pop dx
mov [es:di],dl
inc di
mov byte [es:di],0x07
inc di
loop @a jmp near $ times 510-($-$$) db 0
db 0x55,0xaa

2.用NASM汇编源文件

nasm -f bin c07_mbr.asm -o c07.bin -l c07.lst

说明:

(1)-f bin 指明汇编格式是纯二进制文件

(2)-o c07.bin 指定输出文件名

(3)-l c07.lst 表示产生列表文件(在里面,地址和产生的代码列在左边,实际的源代码列在右边)c07.lst

3 运行二进制文件

我们用bochs来运行。(关于Bochs,我的其他文章里已经介绍了使用方法)

因为我的Bochs的配置文件中写明了:

floppya:1_44=a.img,status=inserted

也就是说启动文件是软盘文件a.img

所以我们把二进制文件写入软盘文件a.img(其实在配置文件中修改a.img为c07.bin也是可以的)

 dd if=c07.bin of=a.img

接下来:

启动Bochs

可以看到



在第一行显示了运行结果:)

(完)

NASM在Ubuntu上的安装与简单使用的更多相关文章

  1. Ubuntu上如何安装Java,Eclipse,Pydev,Python(自带,不用装),BeautifulSoup

    如何安装Java,如果出于编程的需要安装Java,需要安装的是JDK,而不仅仅是JRE,下面说说如何在Ubuntu下如何安装JDK:只有两步,1.下载并解压,2.配置环境变量1.下载并解压:下载地址: ...

  2. 手把手教你在Ubuntu上分别安装Nginx、PHP和Mysql

    手把手教你在Ubuntu上分别安装Nginx.PHP和Mysql

  3. git在windows上的安装和简单使用

    git在windows上的安装和简单使用. 参考: https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E8%BF%9C%E7%A8%8B%E ...

  4. Ubuntu 上如何安装Docker

    Docker 是一个开源项目,为开发者和系统管理员提供了一个开放的平台,在任何地方通过打包和运行应用程序作为一个轻量级的容器.Docker 在软件容器内自动部署应用程序.Docker 最开始由 Sol ...

  5. FFMpeg在Ubuntu上的安装和使用

    在Ubuntu Server上编译FFmpeg FFmpeg是最流行的开源视频转码工具包,在Ubuntu上可以直接通过apt-get安装,但是默认的编码器不提供x264这些non-free的编码器,所 ...

  6. ubuntu 上已经安装libxml2还提示需要reinstall的解决方法

    最近在ubuntu上配置环境,遇到一些奇怪的问题,已经安装了libxml2了,运行 apt-get install libxml2提示已经是最新版本了,可以在安装软件的时候还是提示没有libxml2, ...

  7. ubuntu上的安装.netcore2.1

    .net core 在ubuntu上安装比较容易,依次执行正面语句即可 sudo apt-get install curl curl https://packages.microsoft.com/ke ...

  8. ubuntu下minicom安装和简单设置使用

    minicom是一个串口通信工具. Ubuntu下的安装: 打开终端 sudo apt-get install minicom即可完成安装. 简单设置使用: 安装完成后第一次启动时运行 sudo mi ...

  9. nginx在centos & ubuntu上的安装

    安装Centos 添加当前账号加入sudoers,具备sudo功能 安装编辑器vim Yum install vim Su root Cd cp /etc/sudoers /etc/sudoers[d ...

随机推荐

  1. c#百分比计算

    //此方法得到的百分比后小数太多,不行double percent=Convert.ToDouble(2)/Convert.ToDouble(34); string result=(percent*1 ...

  2. c# winform使用IrisSkin2换肤弹不出窗口解决方案

    winform使用IrisSkin2换肤弹不出窗口解决方案 这张图能解决超级多博友的问题,知识是共享的,绝不私吞.共同学习,共同进步! 不需要说太多,只需1张图!                    ...

  3. FPM工具 实战定制nginx包

    FPM主要特点: 把一种包打包成另一种包的格式 支持的源类型包 DIR 将目录打包成所需要的类型,可以用于源码编译的安装包. RPM    对rpm进行转换 gem    对rubygem包进行转换. ...

  4. (Python OpenGL)【3】着色器 PyOpenGL

    (Python OpenGL)现在开始我们使用着色器来进行渲染.着色器是目前做3D图形最流行的方式. OpenGL的渲染管线流程: 数据传输到OpenGL—>顶点处理器—>细分着色—> ...

  5. Leetcode 283. Move Zeroes 移动数组中的零 (数组,模拟)

    题目描述 已知数组nums,写一个函数将nums中的0移动到数组后面,同时保持非零元素的相对位置不变.比如已知nums=[0,1,0,3,12],调用你写的函数后nums应该是[1,3,12,0,0] ...

  6. Eclipse 创建Maven 项目

    https://www.cnblogs.com/noteless/p/5213075.html

  7. sublime侧边栏管理sidebarEnhancements浏览器设置

    sidebarEnhancements是为了增强sublime Text侧边栏功能的一个插件,但是同时也可以实现设置浏览器浏览当前文件的功能. Ctrl+Shift+p 输入package contr ...

  8. C++的一种业务分发方案(另类的工厂模式)

    在C++中,传统的业务分发.总要写一大串的switch-case,并且每次添加新业务时.都要在原有的switch-case里加一个分支,这就违反了设计模式中的开放封闭原则. 下面这样的方案,就全然去除 ...

  9. mpvue 小程序应用拖动排序

    <template> <div> <div style="width:90%;height:40px;line-height:40px;margin:auto; ...

  10. java经典学习路线

    恩,做开发的工作已经三年多了,说起来实在是惭愧,自己的知识树还像一棵小草一样,工作中使用到了许多的知识和技术,不过系统性不够.根基不牢.并且不够深入!当然,慢慢的我也更加的清楚,我需要学习一些什么样的 ...