汇编开发环境搭建

希望,记录

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的字符串需要$结尾

结果

时间: 2024-12-28 10:04:36

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

8086汇编语言学习(二) 8086汇编开发环境搭建和Debug模式介绍

1. 8086汇编开发环境搭建 在上篇博客中简单的介绍了8086汇编语言.工欲善其事,必先利其器,在8086汇编语言正式开始学习之前,先介绍一下如何搭建8086汇编的开发环境. 汇编语言设计之初是用于在没有操作系统的裸机上直接操作硬件的,但对于大部分人来说,在8086裸机上直接进行编程将会面临各种困难.好在我们可以使用软件模拟器来模拟硬件进行8086的学习实践.在<汇编语言>中作者推荐通过windows环境下的masm和debug进行学习. masm介绍: masm是一款DOS下的汇编工具包,

[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

Eclipse + CDT + YAGARTO + J-Link,STM32开源开发环境搭建与调试

Eclipse+CDT+YAGARTO+J-Li:开源开发环境搭建与调试:作者:Chongqing:邮箱:[email protected]:文档版本:V1.0:发布日期:2014-08-04:前言:此文档本着开源精神,基于LGPL协议发布:因网上开源的单片机.微控制器开发平台信息很少,故:因用ARM公司的KeiluVision开发环境开:因Eclipse是一个 Eclipse + CDT + YAGARTO + J-Link,STM32 开源开发环境搭建与调试 作者 :Chongqing 邮箱

Java核心技术之Java概述与开发环境搭建

Java核心技术之Java概述与开发环境搭建 Java核心技术 1.1 浅谈计算机语言 1.1 计算机语言发展史 1.1.2 编程语言应用场景 1.2 Java概述 1.2.1 Java发展历史 1.2.2 Java的特性 1.2.3 Java技术体系平台 1.3 Java程序员的必备环境 1.4 理解JDK,JRE和JVM三者之间的关系 1.5 macOS配置Java环境 1.5.1 macOS下载JDK 1.5.2 macOS下JDK安装 1.5.3 macOS下JDK配置 1.6 Visu

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,验证是否安装成功,若提示是无