看了一個多月的彙編始終都是門外漢,連個輸入輸出都很困難,今天終於查閱相關資料實現了,也藉此寒假的時間好好學習一下彙編,就用下面這段代碼來開始彙編的學習吧,如果有什麼錯誤,還請各路大大見諒,畢竟本人也是菜鳥一個!
#實現從鍵盤輸入字符串 並輸出
#如果不清楚系統調用函數參數可以使用man 2 function_name 查看
#如 man 2 read
#參數與寄存器對應關係爲從左到右分別爲ebx,ecx,edx,...(注此爲lz自己發現的規律,不一定正確)
#eax 用於指定系統調用的函數代碼
#函數對應的宏代碼定義可以在頭文件/usr/include/asm/unistd.h中看到
.section .bbs #定義bbs段
.lcomm buffer,30
.section .text
.globl _start
_start:
movl $buffer,%ecx #下面三條語句將sys_read參數分別傳入到相應寄存器,$加變量名相當於取地址
movl $30,%edx
movl $0,%ebx
movl $3,%eax #系統調用sys_read函數代碼
int $0x80 #使用ox80指定執行系統調用中斷代碼
movl $1,%ebx
movl $4,%eax #系統調用sys_write
int $0x80
movl $0,%ebx
movl $1,%eax #系統調用sys_exit
運行結果如下: