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

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

时间:2024-04-10 12:12:18浏览次数:28  
标签:教程 汇编语言 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虽然工具链有很多选项,但本文使用了一组相当标准的开源工具,这些工具可以很好地协同工作并......
  • WebClient类 详细使用教程
    原文链接:https://blog.csdn.net/nutian/article/details/2913670   https://blog.csdn.net/m0_58015531/article/details/131322801WebClient类如果只想从特定的URI请求文件,则可以使用的最简单.NET基类就是System.Net.WebClient。这个类是非常高层的类,它主要用于执行带有一......
  • Python教程‘r’的使用技巧
    嗨,大家好!今天,我们将探讨Python中一个重要但经常被忽视的小技巧'r'。 在Python中,r是一个前缀,它用于处理原始字符串(rawstrings)。原始字符串与普通字符串不同,它们让你在字符串中使用反斜杠符号\而不必担心它们被解释成转义字符。为什么要使用原始字符串?原始字符串......
  • 博客园美化教程
    博客园美化教程前言之前一直想美化博客园,但一直没有找到比较喜欢的主题。最近找到了一个还比较满意的主题,SimpleMemory,特此分享。正文一、申请js权限首先点击这里--->博客后台-博客园(cnblogs.com),来到博客园后台管理页面,点击设置下滑,在基本设置里找到申请js权......
  • ArcGls10.8保姆式安装教程
    ArcGIS10.8保姆式安装教程ArcGIS是由美国Esri公司开发的一套地理信息系统软件,可进行地理信息数据的采集、管理、分析和发布等操作。ArcGIS10.8是ArcGIS系列的最新版本,具有更加强大的功能和更好的性能。本文将介绍ArcGIS10.8的保姆式安装教程,帮助您快速安装和配置ArcGIS10.......
  • 2024年幻兽帕鲁/Palworld服务器部署指南:从入门到精通的实战教程
    随着幻兽帕鲁(Palworld)这款游戏的持续升温,越来越多的玩家渴望能够拥有自己的专属服务器,与好友们畅享不受限的组队冒险。好消息是,现在搭建幻兽帕鲁服务器,比以往任何时候都要简单。今天,就让我带你走进这个神秘而富有创意的幻兽世界,手把手教你如何轻松搭建自己的游戏服务器。一、......
  • 幻兽帕鲁/Palworld服务器部署教程:从入门到精通的完整创建流程
    近期,备受瞩目的游戏《幻兽帕鲁》风潮再起,无数热爱冒险与探索的玩家们都渴望在这片神秘的土地上留下自己的足迹。然而,随着玩家数量的激增,官方服务器开始显现出其不稳定性,卡顿、掉线等问题时有发生。这时,拥有一台专属的《幻兽帕鲁》游戏服务器便成了许多玩家的新追求。好消息是,......
  • 百度网盘2024永久免费svip免费兑换码及使用教程
    很多新手用户在使用百度网盘时找不到自己下载后的文件在哪,其实百度网盘安装之后就会有默认的下载路径,其实只要跟着小编下面的教程一起操作,就能快速找到文件的下载路径。百度网盘下载的文件在哪?https://snsyun.baidu.com/sl/mg8TQEO​​​​​​​电脑端下载路径:1、打开百......
  • Mac OS12虚拟机安装教程
    MacOS12虚拟机安装教程目录MacOS12虚拟机安装教程前置条件VMwareworkstation安装步骤!!!完成安装后先不要打开软件!!!解锁vmvare中macos安装功能处理VMware进程和服务解锁MacOS安装功能创建虚拟机安装MacOS12安装VMwareTools工具优化虚拟机mac系统结束语前置条件VMwareWork......
  • Python教程-if条件判断
    Python教程-if条件判断作为软件开发者,我们总是努力编写干净、简洁、高效的代码。Python是一种解释型、高级、通用的编程语言,被全世界的程序员广泛使用。它以其简单性和可读性著称,使其成为初学者和有经验的程序员的最佳选择。用Python编程的一个最基本的方面是使用条件。P......