Linux下用彙編輸出Hello, world

2021-09-19 23:31:17 字數 997 閱讀 8015

下列是intel彙編語法實現的hello, world!程式。

;; hello.asm

;; nasm -f elf hello.asm; will output hello.o

;; ld -s -o hello hello.o

;; section, same to segment

segment .data ; 資料段宣告, 下列**將放在資料段中

msg db "hello, world!", 0xa ; 要輸出的字串

len equ $ - msg ; 字串長度

section .text ; **段宣告,下列**將放入**段中

global _start ; 指定入口函式,global修飾是為了讓外部可以引用_start

_start: ; 在螢幕上顯示乙個字串

mov edx, len ; 引數三:字串長度

mov ecx, msg ; 引數二:要顯示的字串

mov ebx, 1 ; 引數一:檔案描述符(stdout)

mov eax, 4 ; 系統呼叫號(sys_write)

int 0x80 ; 呼叫核心功能

; 退出程式

mov ebx, 0 ; 引數一:退出**

mov eax, 1 ; 系統呼叫號(sys_exit)

int 0x80 ; 呼叫核心功能

在linux下可以用nasm編譯成elf格式的目標檔案,然後鏈結成可執行檔案。

nasm -f elf hello.asm  #將生成hello.o

ld -s -o hello hello.o #鏈結生成可執行檔案hello.

執行./hello就能看到"hello, world!"的輸出了。

用組合語言編寫程式輸出「Hello World 」

方法如下 步驟一 了解組合語言 結構 data segment 資料段,程式設計者可以把資料都放到這個段裡 資料部分.資料格式是 識別符號 db dw 資料。data ends 資料段結束處。edata segment 附加資料段,程式設計者可以把資料都放到這個段裡 附加資料部分.edata end...

Linux(四)彙編基礎知識 為什麼要用彙編

cortex a 晶元一上電 sp 指標還沒初始化,c 環境還沒準備好,所以肯定不能執行 c 必須先用組合語言設定好 c 環境,比如初始化 ddr 設定 sp指標等等,當彙編把 c 環境設定好了以後才可以執行 c 所以 cortex a 一開始肯定是彙編 其實stm32 也一樣的,一開始也是彙編,以...

用彙編編寫DOS下的記憶體駐留程式 2

基本原理 2.1 8086 8088 ibm pc 處理單元 central processing unit 是微處理器inter 8088,8088是8086是小的版本.對於編寫程式而言,兩者幾乎完全相同.兩者之間的差別是在於 它們對外的溝通.8086和外界溝通時是經由16位的輸入輸出通道,記憶體...