NASM在Ubuntu上的安装与简单使用
一 、安装NASM
1. 下载安装文件
地址是:http://www.nasm.us/pub/nasm/releasebuilds/2.11.08/
2.解压(具体命令要根据压缩包的类型来选用)
3.进入解压目录
进入刚解压的目录
./configure
make
sudo make install
二、简单使用NASM
- 准备好源文件
假设命名为 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上的安装与简单使用的更多相关文章
- Ubuntu上如何安装Java,Eclipse,Pydev,Python(自带,不用装),BeautifulSoup
如何安装Java,如果出于编程的需要安装Java,需要安装的是JDK,而不仅仅是JRE,下面说说如何在Ubuntu下如何安装JDK:只有两步,1.下载并解压,2.配置环境变量1.下载并解压:下载地址: ...
- 手把手教你在Ubuntu上分别安装Nginx、PHP和Mysql
手把手教你在Ubuntu上分别安装Nginx.PHP和Mysql
- 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 ...
- Ubuntu 上如何安装Docker
Docker 是一个开源项目,为开发者和系统管理员提供了一个开放的平台,在任何地方通过打包和运行应用程序作为一个轻量级的容器.Docker 在软件容器内自动部署应用程序.Docker 最开始由 Sol ...
- FFMpeg在Ubuntu上的安装和使用
在Ubuntu Server上编译FFmpeg FFmpeg是最流行的开源视频转码工具包,在Ubuntu上可以直接通过apt-get安装,但是默认的编码器不提供x264这些non-free的编码器,所 ...
- ubuntu 上已经安装libxml2还提示需要reinstall的解决方法
最近在ubuntu上配置环境,遇到一些奇怪的问题,已经安装了libxml2了,运行 apt-get install libxml2提示已经是最新版本了,可以在安装软件的时候还是提示没有libxml2, ...
- ubuntu上的安装.netcore2.1
.net core 在ubuntu上安装比较容易,依次执行正面语句即可 sudo apt-get install curl curl https://packages.microsoft.com/ke ...
- ubuntu下minicom安装和简单设置使用
minicom是一个串口通信工具. Ubuntu下的安装: 打开终端 sudo apt-get install minicom即可完成安装. 简单设置使用: 安装完成后第一次启动时运行 sudo mi ...
- nginx在centos & ubuntu上的安装
安装Centos 添加当前账号加入sudoers,具备sudo功能 安装编辑器vim Yum install vim Su root Cd cp /etc/sudoers /etc/sudoers[d ...
随机推荐
- Java50道经典习题-程序43 求奇数个数
题目:求0—7所能组成的奇数个数,奇数中不包含重复数字. public class Prog43 { public static void main(String[] args) { //0-7能组成 ...
- 42、生鲜电商平台-商品的spu和sku数据结构设计与架构
说明:Java开源生鲜电商平台中商品的spu和sku数据结构设计与架构,包括数据库图标与架构分析. 1. 先说明几个概念. 电商网站采用在商品模块,常采用spu+sku的数据结构算法,这种算法可以将商 ...
- oracle connect by 递归,反递归,自动补全查询实现
递归: select * from t_pams_solution t start with t.id is null connect by prior id = t.parent_id ...
- Web Server 在iis下部署php网站在iis下
Web Server 在iis下部署php网站在iis下 一.参考地址: windows8 http://www.cnblogs.com/haocool/archive/2012/10/14/win ...
- DNS 解析域名以便通过服务器来访问的
域名解析系统 就是把你要访问的网址转换成ip,然后你才能访问的东西 解析www.xxxx.com这类网址为IP来访问服务器 举例: 打个比方 ===>>> 你想去海底捞,但是只知道“ ...
- uoj#119. 【UR #8】决战圆锥曲线(线段树+复杂度分析)
题解 传送门 题解 然而要我来说我感觉只是个爆搜啊-- //minamoto #include<bits/stdc++.h> #define R register #define ll l ...
- load xml with xls
you can study xls language in the below link : http://www.w3schools.com/xsl/xsl_languages.asp CSS = ...
- P2156 [SDOI2009]细胞探索
$ \color{#0066ff}{ 题目描述 }$ 生物课上,老师开始为同学们介绍细胞.为了加深同学们的印象,老师在一张N×M的矩阵中定义了一种细胞,矩阵中仅有井号"#"和点&q ...
- 最短路【洛谷P3393】 逃离僵尸岛
P3393 逃离僵尸岛 题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被 ...
- 生成对抗网络(GAN)相关链接汇总
1.基础知识 创始人的介绍: “GANs之父”Goodfellow 38分钟视频亲授:如何完善生成对抗网络?(上) “GAN之父”Goodfellow与网友互动:关于GAN的11个问题(附视频) 进一 ...