首页 > 编程语言 >汇编语言编译环境搭建(MASM+NASM)

汇编语言编译环境搭建(MASM+NASM)

时间:2023-08-25 13:32:07浏览次数:62  
标签:汇编语言 MASM mov section world nasm hello asm NASM

(目录)


一、Windows

1. 下载相关软件

  • DOSBox 官网:https://sourceforge.net/projects/dosbox/ 下载:DOSBox0.74-3-win32-installer.exe
  • MASM5.0 网上可以下载

2. 配置环境

image.png

双击之后,修改配置文件:

windowresolution=1024x768
output=ddraw

在DOSBox模拟器中挂载MASM5.0

mount c: d:\MASM5
c:
dir

配置自动挂载: 还是双击DOSBox0.74-3 Options.bat,在打开的配置文件中

[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
mount c: d:\MASM5

3. 使用上的注意点

  • Alt + Enter 可以全屏并显示鼠标。
  • Ctrl + F10 显示鼠标
  • exit 退出

4. 编写测试代码并编译链接执行

  • 编写测试代码 hello.asm
.model small

.data
    strs DB 'hello world',13,10,'$'
.code
start:
    mov ax,@data
    mov ds,ax
    mov dx,offset strs
    mov ah,09h
    int 21h
    mov ah,4ch
    int 21h
end start
  • 编译 image.png

  • 链接 image.png

  • 执行 image.png

  • 调试

debug hello.exe
-r
-t
-q 退出

二、Linux(Ubuntu)

1. 安装nasm

$ sudo apt update
$ sudo apt install nasm

2. 准备hello world测试程序

hello.asm

;hello.asm
section .data
    msg db "hello, world!", 10

section .text
    global main

main:
    ;Write to stdout
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, 14
    syscall

    ;Exit
    mov rax, 60
    mov rdi, 0
    syscall

3. 编译程序

nasm -f elf64 hello.asm # 将生成hello.o
gcc hello.o
./a.out

将hello.asm源文件中的main改为_start。

nasm -f elf64 hello.asm # 将生成hello.o
ld -o hello hello.o
./hello

标签:汇编语言,MASM,mov,section,world,nasm,hello,asm,NASM
From: https://blog.51cto.com/cerana/7229494

相关文章

  • 5.13 汇编语言:仿写For循环语句
    循环语句(for)是计算机编程中的一种基本控制结构,它允许程序按照指定的次数或范围重复执行一段代码块。for循环在处理需要进行迭代操作的情况下非常有用,它使得程序可以更加方便地控制循环的次数。一般来说,for循环由三个部分组成:初始化部分、条件表达式和更新部分,以及一个需要重复执行......
  • 5.14 汇编语言:仿写Switch选择结构
    选择结构,也称为switch语句,是计算机编程中的一种控制结构,用于根据表达式的值选择不同的执行路径。它允许程序根据表达式的值来决定执行哪个代码块,从而实现多分支选择逻辑。switch语句由一个表达式、多个case标签以及对应的代码块组成。程序会将表达式的值与每个case标签进行匹配,一......
  • 《Windows 汇编语言入门教程》 -- 系列教程
    5.12汇编语言:仿写While循环语句5.11汇编语言:仿写IF条件语句5.10汇编语言:汇编过程与结构5.9汇编语言:浮点数操作指令5.8汇编语言:汇编高效除法运算5.7汇编语言:汇编高效乘法运算5.6汇编语言:汇编高效数组寻址5.5汇编语言:函数调用约定5.4汇编语言:算数......
  • 5.10 汇编语言:汇编过程与结构
    过程的实现离不开堆栈的应用,堆栈是一种后进先出(LIFO)的数据结构,最后压入栈的值总是最先被弹出,而新数值在执行压栈时总是被压入到栈的最顶端,栈主要功能是暂时存放数据和地址,通常用来保护断点和现场。栈是由CPU管理的线性内存数组,它使用两个寄存器(SS和ESP)来保存栈的状态,SS寄存......
  • 5.11 汇编语言:仿写IF条件语句
    条件语句,也称为IF-ELSE语句,是计算机编程中的一种基本控制结构。它允许程序根据条件的真假来执行不同的代码块。条件语句在处理决策和分支逻辑时非常有用。一般来说,条件语句由IF关键字、一个条件表达式、一个或多个代码块以及可选的ELSE关键字和对应的代码块组成。条件表达式的结果......
  • 5.12 汇编语言:仿写While循环语句
    循环语句(While)一种基本控制结构,它允许程序在条件为真的情况下重复执行一段代码块,直到条件为假为止。循环语句在处理需要重复执行的任务时非常有用,它可以让程序更加高效地处理大量数据或者重复性操作。一般来说,While循环由一个条件表达式、一个代码块组成。在每次循环迭代开始时,程......
  • 5.8 汇编语言:汇编高效除法运算
    通常情况下计算除法会使用div/idiv这两条指令,该指令分别用于计算无符号和有符号除法运算,但除法运算所需要耗费的时间非常多,大概需要比乘法运算多消耗10倍的CPU时钟,在Debug模式下,除法运算不会被优化,但Release模式下,除法运算指令会被特定的算法经过优化后转化为为乘法,这样就可以提高......
  • 5.9 汇编语言:浮点数操作指令
    汇编语言是一种面向机器的低级语言,用于编写计算机程序。汇编语言与计算机机器语言非常接近,汇编语言程序可以使用符号、助记符等来代替机器语言的二进制码,但最终会被汇编器编译成计算机可执行的机器码。浮点运算单元是从80486处理器开始才被集成到CPU中的,该运算单元被称为FPU浮点......
  • 5.3 汇编语言:字符串操作指令
    本章将深入研究字符串操作指令,这些指令在汇编语言中具有重要作用,用于处理字符串数据。我们将重点介绍几个关键的字符串操作指令,并详细解释它们的功能和用法。通过清晰的操作示例和代码解析,读者将了解如何使用这些指令进行字符串比较、复制、填充等常见操作。我们还将探讨不同指令之......
  • 5.4 汇编语言:算数运算指令集
    算术运算指令集是计算机中的一组基本操作,用于对数字执行常见的算术运算操作。这些指令都是计算机中非常基础的运算指令,可以用于实现所有常见的算术运算操作,并可以通过组合使用实现更加复杂的数学运算。在实际编程中,程序员可以根据具体需求选择合适的运算指令,实现程序中的算术运算操......