汇编开发环境搭建

希望,记录

1. nasm编译32位在MacOS下运行

2. Bochs在MacOS下的编译

3. 在Bochs下安装DOS6.22

4. Mac下创建floppy.img作为软盘

5. nasm编译32位在DOS下运行

1. nasm编译32位,64位在MacOS下运行

nasm可在官网下载,有dos,linux,macosx版本

解压后,有nasm

32位hello的例子(hello32.asm)

要点:调用系统的方法sys_write和sys_exit,具体看System Calls

 1 ; nasm -f macho hello32.asm -o ../bin/hello32.o && ld -macosx_version_min 10.7.0 -o ../bin/hello32 ../bin/hello32.o && ../bin/hello32
 2
 3
 4 global start
 5
 6
 7 section .text
 8 start:
 9     push    dword msg.len
10     push    dword msg
11     push    dword 1
12     mov     eax, 4 ; sys_write
13     sub     esp, 4
14     int     0x80
15     add     esp, 16
16
17
18     push    dword 0
19     mov     eax, 1 ; sys_exit
20     push    eax
21     int     0x80
22
23
24 section .data
25 msg:    db      "Hello, world!", 10
26 .len:   equ     $ - msg

2. Bochs在MacOS下的编译

虚拟机使用Bochs,因为它是支持调试,调试日志详细,如

00222700000i[CPU0  ] EFER   = 0x00000000
00222700000i[CPU0  ] | EAX=00000116  EBX=00000000  ECX=00090034  EDX=00000000
00222700000i[CPU0  ] | ESP=0000050e  EBP=0000003d  ESI=000e0000  EDI=00000034
00222700000i[CPU0  ] | IOPL=0 id vip vif ac vm rf nt of df IF tf SF zf af pf CF
00222700000i[CPU0  ] | SEG sltr(index|ti|rpl)     base    limit G D
00222700000i[CPU0  ] |  CS:f000( 0004| 0|  0) 000f0000 0000ffff 0 0
00222700000i[CPU0  ] |  DS:0040( 0005| 0|  0) 00000400 0000ffff 0 0
00222700000i[CPU0  ] |  SS:8e81( 0005| 0|  0) 0008e810 0000ffff 0 0
00222700000i[CPU0  ] |  ES:8da3( 0005| 0|  0) 0008da30 0000ffff 0 0
00222700000i[CPU0  ] |  FS:0000( 0005| 0|  0) 00000000 0000ffff 0 0
00222700000i[CPU0  ] |  GS:0000( 0005| 0|  0) 00000000 0000ffff 0 0
00222700000i[CPU0  ] | EIP=00005008 (00005008)
00222700000i[CPU0  ] | CR0=0x60000010 CR2=0x00000000
00222700000i[CPU0  ] | CR3=0x00000000 CR4=0x00000000
00222700000i[CPU0  ] 0x0000000000005008>> push bp : 55

每个寄存器的都输出

Bochs在http://sourceforge.net/projects/bochs/可下载

在10.x编译,需要先安装SDL库

brew install sdl

如果没有brew,可以先安装(ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”)

配置.conf.macosx

#!/bin/sh

# this sets up the compile for MacOS X
#
# To support plugins on macosx, you must have "dlcompat" installed.  You can
# get dlcompat by installing the fink package "dlcompat-devel".  On the SF
# compile farm, dlcompat is in /sw/include and /sw/lib, so we have added
# those paths to the environment variables.

set echo
CC=‘clang -Wno-error=unused-command-line-argument-hard-error-in-future‘
#CFLAGS="-pipe -O3 -I/sw/include -fomit-frame-pointer -finline-functions -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-labels=16 -falign-loops-max-skip=15 -falign-jumps-max-skip=15 -fprefetch-loop-arrays $CFLAGS"
CPATH="/sw/include"
CPPFLAGS=""
CXXFLAGS="$CFLAGS"
LDFLAGS="-L/sw/lib"

export CC
export CFLAGS
export CPATH
export CPPFLAGS
export CXXFLAGS
export LDFLAGS

./configure --enable-sb16             --enable-ne2000             --enable-all-optimizations             --enable-cpu-level=6             --enable-x86-64             --enable-vmx=2             --enable-pci             --enable-clgd54xx             --enable-voodoo             --enable-usb             --enable-usb-ohci             --enable-usb-xhci             --enable-es1370             --enable-e1000             --enable-plugins             --with-sdl             --enable-disasm             --enable-debugger             ${CONFIGURE_ARGS}

--enable-disasm,—enable-debugger为了调试

—disable-debugger-gui 在login.cc编译不了时添加

make && make install

能使用bochs

make && make install

能使用bochs

3. 在Bochs下安装DOS6.22

DOS6.22可在https://winworldpc.com/product/ms-dos/622下载

安装过程,可参看http://blog.csdn.net/TFTJT/article/details/6000043

有一点,中途需要切换软盘:先关闭软盘,再把需要的floppy改名,再打开软盘

4. Mac下创建floppy.img作为软盘

dd bs=512 count=2880 if=/dev/zero of=floppy.img

在DOS下

format :A

5. nasm编译32位在DOS下运行

要点:调用系统的方法int 21H,具体看http://spike.scu.edu.au/~barry/interrupts.html

采用COM格式,它简单,够用(256K)

 1 ; DOS下的hello,COM format
 2 ; nasm.exe hello32win.asm -o hello32win.com
 3 ; macOS下
 4 ; nasm hello32win.asm -o hello32.com && cp hello32.com "/Volumes/NO NAME/"
 5
 6
 7 org 0100H     ; COM need
 8
 9
10 jmp _start
11 section .text
12 _start:
13     mov edx, hello ; hello的地址
14     mov ah, 9 ; write code 9 for print
15     int 21h
16
17
18     mov ah,04ch ; ‘exit‘ system call
19     int 21h ; call the kernel
20
21
22 section .data
23     hello db ‘Hello world!‘,13,10,‘$‘ ; int21h的字符串需要$结尾

结果

时间: 06-02

汇编开发环境搭建的相关文章

[ZigBee] 2、 ZigBee开发环境搭建

本节介绍ZigBee基本开发环境搭建,附件中有本节介绍的软件下载地址~ 链接:http://pan.baidu.com/s/1bLdqxg 1.IAR Embedded Workbench 的安装 Step1.双击安装程序,进行安装 Step2.一直采用默认NEXT,直到点击Accept之后: Step3.关键:双击打开文件IAR kegen PartA.exe. Win7.8 用户请右键以管理员身份打开 Step4.点击 Generate 复制License 和Licensekey 到下一个窗

SAMSUNG S3C2440 ARM LINUX 开发板 上手初体验 --开发环境搭建

1,linux开发环境搭建 2,程序测试 easyOpentag驱动安装,打开连接,选择ARM-linux 链接:http://pan.baidu.com/s/1pJKK4w7 密码:a0re 1,环境搭建 我的系统版本 [email protected]:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.3 LTS Release: 14.04 Cod

Intellij IDEA 14.1.4 Scala开发环境搭建

主要内容 Intellij IDEA开发环境简介 Intellij IDEA Scala开发环境搭建 Intellij IDEA常见问题及解决方案 Intellij IDEA常用快捷键 1. Intellij IDEA开发环境简介 具体介绍请参见:http://baike.baidu.com/link?url=SBY93H3SPkmcmIOmZ8H60O1k4iVLgOmdqoKdGp9xHtU-Pbdsq2cpn75ZPZPWAJxeUlwr0ravraQzOckh777beq Intelli

javacard开发环境搭建 Eclipse+jcop+jcdk 配置完成的开发环境

javacard  开发环境搭建 Eclipse+jcop+jcdk  配置完成的开发环境,下载后安装jdk,并完成环境变量配置,即可开发javacard applet: 虽然有许多大神提供配置说明,但是配置很麻烦.提供一个配置好的环境给大家.如果好用,别忘了评价. 由于csdn上传限制,需要分别下载几个文件 http://download.csdn.net/detail/wyx100/7941899 http://download.csdn.net/detail/wyx100/7941669

Storm使用入门之本地开发环境搭建

本篇博文详细告诉你如何安装Storm的本地开发环境,总体分为两步,具体如下: 1.从官网上下载Storm的发布包,下载完成后将其解压,并将解压后的bin目录添加到环境变量(PATH)中,以方便后续执行Storm的相关命令 2.修改Storm的配置文件(storm.yaml),主要是按照实际情况更新配置文件中的集群信息,然后将修改后的配置文件添加到目录(~/.storm/)中,目的是为了后续能够远程启动和停止集群上的计算任务(即topology) 接下来,咱们来详细地介绍每一个操作步骤. 首先,何

《结对-贪吃蛇游戏-开发环境搭建过程》

贪吃蛇开发环境搭建 Python和pygame的安装过程 成员0:2015035107074-孔令辉 成员1:2015035107067-张旭 1.去官网下载python和pygame.(需注意自己电脑是32位的还是64位的,我的是64位的,就下了个64位的) 2.安装pythone 和 pygame. 3.安装完成后,查看环境变量配置情况:计算机->属性->高级系统设置->环境变量->系统变量->Path. 4.在命令提示符中输入:python,验证是否安装成功,若提示是无

微信开发学习总结(一)—微信开发环境搭建

目前移动App开发领域主要分为以下几种类型: 一.微信开发环境搭建 1.要有一个用来测试的公众号. 2.用来调式代码的开发环境 1.1.注册测试公众号 微信公众号分为服务号.订阅号.企业号,订阅号可以个人申请,服务号和企业号要有企业资质才可以. 我们所说的微信公众号开发指的是订阅号和服务号. 关于订阅号和服务号的区别,官方是这样解释的 服务号:主要偏向于服务交互(功能类似12315,114,银行,提供绑定信息,服务交互),每月可群发4条消息:服务号适用人群:媒体.企业.政府或其他组织. 订阅号:

vue.js开发环境搭建

1.安装node.js,忽略 2.基于node.js,利用淘宝npm镜像安装相关依赖 在cmd里直接输入:npm install -g cnpm –-registry=https://registry.npm.taobao.org,回车,等待安装... 3.安装全局vue,用于帮助搭建所需的模板框架 在cmd里, 1).输入:cnpm install -g vue-cli,回车,等待安装...2).输入:vue -V,回车,若出现vue信息说明表示成功 4.创建vue项目 在cmd里输入:vue

Hive项目开发环境搭建(Eclipse\MyEclipse + Maven)

写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Maven) 我这里,相信,能看此博客的朋友,想必是有一定基础的了.我前期写了大量的基础性博文.可以去补下基础. 步骤一:File  ->  New  -> Project   ->  Maven Project 步骤二:自行设置,待会创建的myHBase工程,放在哪个目录下. 步骤三: 步骤四: