首页 > 编程语言 >汇编语言简易教程(5):环境构建

汇编语言简易教程(5):环境构建

时间:2024-04-10 12:38:00浏览次数:18  
标签:教程 汇编语言 eg mov WSL 简易 program basic example

汇编语言简易教程(5):环境构建

最近在学习assembly64 时, 需要对程序进行编写 -> 生成汇编代码 -> 调试 -> 执行. 本文聚焦于如果在Windows环境下, 尽可能精简并且完整的构建一个汇编环境.

基于 Windows11, WSL Ubuntu22.04, vscode, 其他的系统/WSL发行版本. 您可以以本文作为简单的参考.

安装

WSL

你首先需要确保自己有一个WSL的发行版本.

互联网上已经有非常多的类似的文章了, 不再赘述. 您可以参考微软官方文档

WSL环境配置

需要确保安装以下组件:

  1. yasm
  2. ld
  3. gdb
sudo apt install yasm ddd gcc

VSCode配置

需要一些必须的插件

x86 and x86_64 Assembly

使用

创建asm文件

创建eg.asm​文件

; Simple example demonstrating basic program format and layout.
; Ed Jorgensen
; July 18, 2014
; ************************************************************
;  Some basic data declarations

section   .data
EXIT_SUCCESS    equ     0       ; successful operation
SYS_exit        equ     60      ; call code for terminate

bVar1           db      17
bVar2           db      9
bResult         db      0

wVar1           dw      17000
wVar2           dw      9000
wResult         dw      0

dVar1           dd      17000000
dVar2           dd      9000000
dResult         dd      0

qVar1           dq      170000000
qVar2           dq      90000000
qResult         dq      0



section .bss

bArr resb 10

;  Code Section
section     .text
global _start
_start:

;  Performs a series of very basic addition operations
;  to demonstrate basic program format.
; ----------
;  Byte example
;   bResult = bVar1 + bVar2
    mov     al, byte [bVar1]
    add     al, byte [bVar2]
    mov     byte [bResult], al

; ----------
;  Double-word example
;   dResult = dVar1 + dVar2
    mov     eax, dword [dVar1]
    add     eax, dword [dVar2]
    mov     dword [dResult], eax

; ----------
;  Quadword example
;   qResult = qVar1 + qVar2
    mov     rax, qword [qVar1]
    add     rax, qword [qVar2]
    mov     qword [qResult], rax

; ************************************************************
;  Done, terminate program.

last:
    mov     rax, SYS_exit       ; Call code for exit
    mov     rdi, EXIT_SUCCESS   ; Exit program with success
    syscall

汇编化

yasm -g dwarf2 -f elf64 eg.asm -l example.lst

链接

ld -g -o eg eg.o

运行

./eg

调试

因为目前的WSL支持GUI的显示, 所以可以直接使用ddd进行调试工作.

ddd ./eg

效果示意

image

标签:教程,汇编语言,eg,mov,WSL,简易,program,basic,example
From: https://www.cnblogs.com/pDJJq/p/18125757/simple-tutorial-of-assembly-language-5-environmen

相关文章

  • 汇编语言简易教程(6):工具链以及调试器
    汇编语言简易教程(6):工具链以及调试器通常,用于创建程序的编程工具集称为工具链。就本文而言,工具链包括以下内容汇编器Assembler​连接器Linker​加载器Loader​调试器Debugger虽然工具链有很多选项,但本文使用了一组相当标准的开源工具,这些工具可以很好地协同工作并......
  • Inventor 2025安装教程
    下载链接:https://docs.qq.com/doc/DTEZIV2JEbEtHdGNC1.选中下载的安装包,右键选择解压到"Inventor2025"文件夹2.双击打开“Setup”文件夹3.选中“Setup.exe”右键以管理员身份运行4.软件正在初始化5.勾选“我同意...”,点击“下一步”6.选择安装位置,点击“......
  • 汇编语言简易教程(1):简介
    汇编语言简易教程(1):简介本教程完全来自于学习asseble64时的读书笔记,因为原书是英文版且缺少翻译,因此本教程也可以作为原书的导读.WhatisAssemblyLanguage具体机器架构相关,在不同的架构上,指令会有差异(复杂指令集/精简指令集)低级语言(这里的低级指的是......
  • 汇编语言简易教程(3):编码表示
    汇编语言简易教程(3):编码表示'表示'指的是计算机如何在内存中表示/存储.计算机使用二进制(1/0)进行存储,但是由于空间的限制,任何表示方式只能表达一定范围,一定精度的数据.本章简要总结了整数、浮点和ASCII表示方案。假设读者已经普遍熟悉二进制、十进制和十六进制......
  • 汇编语言简易教程(2): 计算机体系概览
    汇编语言简易教程(2):计算机体系概览架构​​CPURAMBUSDEVICESecondaryStorage(SSD/DiskDrive)通常来说程序被存储在硬盘中,在实际需要运行时从硬盘加载到内存.主存通常来说是易失性存储,所以在断电时,存储内容会丢失.二级内存通常是不易失的,对于断电等行......
  • 汇编语言简易教程(4):基本语法
    汇编语言简易教程(4):基本语法以yasm语法为主注释​;​分号之后的所有内容全都是注释,没有实际作用.数值数值必须是10进制/16进制/八进制最终都会被转为16进制的数字,以0x​开头,例如127​->0x7f​当使用8进制的时候:511​->777q​默认基数(基数)为十进制,......
  • 汇编语言简易教程(5):环境构建
    汇编语言简易教程(5):环境构建最近在学习assembly64时,需要对程序进行编写->生成汇编代码->调试->执行.本文聚焦于如果在Windows环境下,尽可能精简并且完整的构建一个汇编环境.基于Windows11,WSLUbuntu22.04,vscode,其他的系统/WSL发行版本.您可以以本文作为......
  • 汇编语言简易教程(6):工具链以及调试器
    汇编语言简易教程(6):工具链以及调试器通常,用于创建程序的编程工具集称为工具链。就本文而言,工具链包括以下内容汇编器Assembler​连接器Linker​加载器Loader​调试器Debugger虽然工具链有很多选项,但本文使用了一组相当标准的开源工具,这些工具可以很好地协同工作并......
  • 汇编语言简易教程(4):基本语法
    汇编语言简易教程(4):基本语法以yasm语法为主注释​;​分号之后的所有内容全都是注释,没有实际作用.数值数值必须是10进制/16进制/八进制最终都会被转为16进制的数字,以0x​开头,例如127​->0x7f​当使用8进制的时候:511​->777q​默认基数(基数)为十进制,......
  • 汇编语言简易教程(5):环境构建
    汇编语言简易教程(5):环境构建最近在学习assembly64时,需要对程序进行编写->生成汇编代码->调试->执行.本文聚焦于如果在Windows环境下,尽可能精简并且完整的构建一个汇编环境.基于Windows11,WSLUbuntu22.04,vscode,其他的系统/WSL发行版本.您可以以本文作为......