日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NASM汇编helloworld图解

發(fā)布時間:2025/4/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NASM汇编helloworld图解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? NASM是一個為可移植性與模塊化而設(shè)計的一個80x86的匯編器。它支持相當(dāng)多的目標(biāo)文件格式,包括
Linux和''NetBSD/FreeBSD'',''a.out'',''ELF'',''COFF'',微軟16位的''OBJ''和''Win32''。

它還可以輸出純二進(jìn)制文件。它的語法設(shè)計得相當(dāng)?shù)暮啙嵰锥?#xff0c;和Intel語法相似但更簡單。它
持''Pentium'',''P6'',''MMX'',''3DNow!'';

nasm下載地址
https://www.nasm.us/pub/nasm/

?

nasm helloworld程序;

section .textglobal _start;_start:mov eax, 4mov ebx, 1mov ecx, stringmov edx, lengthint 80h;exit的系統(tǒng)調(diào)用mov eax, 1mov ebx, 0int 80hsection .datastring: db 'hello world',0Ahlength: equ 13section .bssvar:resb 1

使用nasm構(gòu)建為.com程序,然后運行,如下圖,不能運行;

構(gòu)建為.exe,運行,不能運行,如下;因為不是Windows下的程序;?

干完上述活有下面文件;?

下面這個程序也是nasm的helloworld;

org 0100h ;PSP前綴,程序從0100h開始運行 mov ax, cs ;初始化 ds和dx寄存器,為調(diào)用9號程序(顯示字符串)做準(zhǔn)備 mov ds, ax mov dx, string ;取偏移地址,等價于MASM的 lea dx, string 或 mov dx, offset string mov ah, 9 int 21h MOV AH,4CH ;回到操作系統(tǒng) INT 21H string db "Hello, OS world!$"

?構(gòu)建以后運行,也是不能運行;

看資料說,使用 nasm -f win32 *.asm 編譯出obj文件,再link,就可構(gòu)建出Win下的程序;

操作如下;找不到 link 工具;

剛才下的nasm版本是解壓版的,可能不帶link;下個安裝版的;

安裝完以后,從桌面圖標(biāo)進(jìn)入構(gòu)建環(huán)境;?

把 1.asm 拷貝到nasm安裝目錄,準(zhǔn)備編譯和鏈接;但是看了一下,安裝目錄也沒有l(wèi)ink工具;?

仔細(xì)看一下網(wǎng)上資料;原來是用VS的link工具來鏈接的;

正確的編譯helloworld.asm的命令如下:
nasm -f win32 helloworld.asm
使用以上命令NASM生成一個名為helloworld.obj的文件。

現(xiàn)在要使用鏈接器將.obj文件鏈接到.exe文件中。打開Visual Studio Command Prompt然后輸入如
下內(nèi)容:
link.exe helloworld.obj libcmt.lib?
// or?
cl.exe helloworld.obj /link libcmt.lib

printf()函數(shù)通過libcmt.lib(此庫屬于C運行時庫)被靜態(tài)包含。如果你省略了libcmt.lib的話你將得
到錯誤error LNK2001: unresolved external symbol _printf
現(xiàn)在你可以執(zhí)行helloworld.exe來測試你的程序了。

?下回再整;

先試一下用VC6的cl.exe能不能鏈接出來;操作如下;沒鏈接成功;下回再整;

?

nasm和masm的一些區(qū)別

1. nasm是區(qū)分大小寫的;
2. nasm中訪問內(nèi)存需要使用[]將內(nèi)存地址括起來;
3.?
nasm不存儲類型信息,所以也不能使用MOVS這樣沒有表明大小的命令,而只能使用MOVSW這樣的命令;

另外往內(nèi)存中存放數(shù)據(jù)也需要注意:
如果寫成這樣:
? ? var equ 2
? ? mov [var], 1
會報錯,

需要寫成如下的形式:
var equ 2
mov word [var], 1

4. nasm中沒有ASSUME偽指令;
5. nasm沒有SMALL、COMPACT這樣的內(nèi)存模型;
6. nasm引用浮點寄存器的方式與masm不同;
7. 聲明數(shù)據(jù)塊的方式不同:
? ? stack db 64 dup (?) ? ?; masm
? ? stack resb 64 ? ? ? ? ?; nasm
? ? nasm不支持dup,且?是一個可用的變量名;

總結(jié)

以上是生活随笔為你收集整理的NASM汇编helloworld图解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色操人视频 | 男人看的网站 | av大帝在线 | 亚洲国产精品久久 | 亚洲高清不卡 | 17c国产精品 | 国产精品人妻 | www.五月激情 | 无码人妻一区二区三区在线视频 | 国产色视频一区二区三区qq号 | 人人人人爽 | 日本不卡视频在线 | 国产欧美一区二区 | 亚洲 欧美 精品 | 在线观看中文字幕 | av瑟瑟| va视频在线观看 | 日本伦理片在线播放 | 日韩一区二区三区四区在线 | 豆国产97在线 | 亚洲 | 日韩一区二区高清视频 | www.97ai.com| 日韩一区二区三区不卡视频 | 女人扒开双腿让男人捅 | av国产一区二区 | 欧美视频性 | 色爱AV综合网国产精品 | 国产做爰xxxⅹ久久久精华液 | 国产又好看的毛片 | 亚洲aⅴ | 亚洲最大成人在线视频 | 亚洲AV综合色区国产精品天天 | 成人精品免费视频 | 男女偷爱性视频刺激 | 18欧美性xxxx极品hd | 最新版天堂资源在线 | 国产a自拍 | 国产乱码一区二区三区在线观看 | 超碰在线免费 | 久久人人爱 | 一个色亚洲 | 欧美日韩色综合 | 久热这里只有精品在线 | 国产精品免费精品一区 | 成人av综合 | 99热99在线| 5d肉蒲团之性战奶水 | 亚洲国产成人自拍 | 日本精品一区二区三区视频 | 成人免费性视频 | 成人导航网站 | 国产最爽的乱淫视频国语对白 | 国产区精品在线观看 | 欧美精品v | 国产午夜麻豆影院在线观看 | 欧美日韩一级视频 | 草的我好爽 | 美女露出粉嫩尿囗让男人桶 | 国产麻豆成人传媒免费观看 | 99热精品在线观看 | 天天操天天干天天摸 | 国产亚洲一区在线 | 不卡影院一区二区 | 四虎影视www在线播放 | 精品一区二区亚洲 | 亚洲av不卡一区二区 | 国产成人精品一区二区三区视频 | av资源部 | 高清视频一区 | 99re视频 | 小视频免费在线观看 | 色九九视频 | 国产在线拍揄自揄拍无码 | 久久久久国产一区二区 | 亚洲国产精品无码久久久 | 天天做天天干 | 7mav视频 | 色呦呦日韩精品 | 不卡一区二区在线观看 | 99精品视频在线免费观看 | 日本在线视频不卡 | 欧美不卡三区 | 91呦呦| 女~淫辱の触手3d动漫 | 男女高h视频 | 成人做爰69片免费 | 国产有码视频 | 超碰人人人人人 | 国产有码| 成人免费毛片糖心 | 97成人精品 | 成人v精品蜜桃久一区 | 在线看片一区二区 | 93久久精品日日躁夜夜躁欧美 | 久久久久久1 | 黄色视屏在线免费观看 | 欧美在线一二三区 | 黄色片免费播放 | 人妖性做爰aaaa |