linux下搭建汇编环境


在windows学习都是用的MASM,那如果在linux下也用MASM呢,怎么办?方法如下:

一.安装

可以通过一些软件,来模拟DOS,可以用Dosbox。如果用的ubuntu,在软件中心就可以找到。

直接安装后就可以在启动栏看到图标 ,     或是通过命令:sudo apt-get install dosbox  

二.环境搭建

1.在 linux下新建一个 masm 文件夹,然后把 windows下的masm的 LINK.EXE  、MASM.EXE 拷贝到masm中;
  由于DosBox中是没有 Debug 程序,需要先下载一个Win7  32位的debug程序下载地址:http://u.115.com/file/b3mmegwu ,
  然后把 debug.exe 也放置到masm文件夹中,即可。

2.在终端中直接输入dosbox 回车即可,将会跳出 DosBox 的图形界面,如:




3.然后模拟指定C盘的位置
   在dosbox中输入  mount   c  /home/wang/masm      (注意:/home/wang/masm    是我的系统masm所在路径

  之后输入: c:   回车

  这样就进入你指定的目录了。

  现在环境已经搭建完成。


三.指令编写(两个独立事例)

事例1.Debug计算2的4次方

输入debug回车,进入debug状态,输入 a  (a是逐行汇编)
然后输入指令 ,再输入 t(跟踪执行)察看结果,如图:




事例2.编写 helloworld 

一.汇编的源程序文件是以.asm为后缀的文件。编写程序使用任意编辑器即可,建议用vim,保存为 hello.asm ,代码是:

DATA SEGMENT
    BUF DB 'HELLO WORLD!  THIS IS MY FIRST ASM FILE! $'
DATA ENDS

CODE SEGMENT
    ASSUME  CS:CODE,DS:DATA
START:	MOV AX,DATA
    MOV DS,AX
    LEA DX,BUF
    MOV AH,09
    INT 21H
    MOV AH,4CH
    INT 21H
CODE ENDS
END START

二.在DosBox界面下输入 masm hello.asm,然后按几次回车就可以了



然后是链接,在DosBox下执行: link  hello   (注意:没有后缀)



最后运行即可:










### 如何在Linux上设置汇编语言编程环境 #### 安装必要的工具链 为了能够在Linux环境下编写和运行8086汇编代码,安装合适的工具链至关重要。通常情况下,在Ubuntu或其他基于Debian的发行版中可以使用`nasm`(Netwide Assembler)作为汇编器[^1]。 ```bash sudo apt update && sudo apt install nasm ``` 对于Manjaro这样的Arch Linux衍生版本,则可以通过Pacman包管理器来完成相同的操作[^2]: ```bash sudo pacman -S nasm ``` #### 创建并编辑第一个汇编程序 创建一个新的`.asm`文件用于保存汇编源码: ```bash nano hello.asm ``` 向其中输入一段简单的“Hello, world!”示例代码: ```assembly section .data msg db 'Hello, world!', 0xA len equ $ - msg section .text global _start _start: mov eax, 4 ; sys_write system call number (stdout) mov ebx, 1 ; file descriptor (stdout) lea ecx, [msg] ; message to write mov edx, len ; length of the message int 0x80 ; make kernel call mov eax, 1 ; exit syscall number xor ebx, ebx ; status code 0 int 0x80 ; invoke OS interrupt handler ``` #### 编译与链接 利用NASM将上述ASM文件转换成目标文件(.o),之后借助GNU Linker(ld)将其转化为可执行二进制文件. ```bash nasm -f elf32 hello.asm -o hello.o ld -m elf_i386 hello.o -o hello ``` #### 执行程序 赋予生成的二进制文件权限,并尝试执行它查看输出结果是否符合预期. ```bash chmod +x ./hello ./hello echo $? # Check program's exit status ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值