VScode配置8086匯編環(huán)境的過(guò)程解析
0、感慨
搭配一個(gè)簡(jiǎn)單些的環(huán)境,對(duì)于我們匯編的學(xué)習(xí)很有幫助,在這里又不得不感嘆vscode的強(qiáng)大,使用VScode+MASM/TASM插件就可以實(shí)現(xiàn)8086匯編。真的相對(duì)于其他的安裝方式,我們都會(huì)認(rèn)同越簡(jiǎn)單越好。
1、VScode的安裝
Visual Studio Code - Code Editing. Redefined
vscode的安裝過(guò)程沒(méi)有什么難度,出了選擇安裝路徑外,一律通過(guò)即可。
2、下載MASM/TASM插件
在擴(kuò)展當(dāng)中,搜索并下載MASM/TASM。
3、測(cè)試匯編環(huán)境
新建文件
這里我們只需要點(diǎn)擊Ctrl+Shift+N即可出現(xiàn),下面這個(gè)界面。
在這里需要已經(jīng)新建好的工程文件夾。如我下圖所示的“8086masm”。
在其左側(cè)資源管理器中的文件夾下,新建一個(gè)temp.asm文件,這里一定要有.asm后綴。
匯編文件配置
vscode它僅僅是一個(gè)代碼編輯器,并不會(huì)像IDLE一樣寫(xiě)好代碼就可以點(diǎn)擊進(jìn)行運(yùn)行,這里需要自己進(jìn)行相應(yīng)的配置。在vscode界面,同時(shí)按下Ctrl+Shift+P調(diào)出命令面板,輸入setting。
打開(kāi)工作區(qū)設(shè)置(JSON)。下面是我的配置信息,僅供參考。
{ "masmtasm.ASM.emulator": "msdos player", "masmtasm.dosbox.run": "exit", "masmtasm.ASM.assembler": "MASM-v5.00", "masmtasm.ASM.actions": { "TASM": { "baseBundle": "<built-in>/TASM.jsdos", "before": [ "set PATH=C:\\TASM" ], "run": [ "TASM ${file}", "TLINK ${filename}", ">${filename}" ], "debug": [ "TASM /zi ${file}", "TLINK /v/3 ${filename}.obj", "TD ${filename}.exe" ] }, "MASM-v6.11": { "baseBundle": "<built-in>/MASM-v6.11.jsdos", "before": [ "set PATH=C:\\MASM" ], "run": [ "masm ${file};", "link ${filename};", ">${filename}" ], "debug": [ "masm ${file};", "link ${filename}.OBJ;", ">debug ${filename}.exe" ] }, "MASM-v5.00": { "baseBundle": "<built-in>/MASM-v5.00.jsdos", "before": [ "set PATH=C:\\MASM" ], "run": [ "masm ${file};", "link ${filename};", ">${filename}" ], "debug": [ "masm ${file};", "link ${filename}.OBJ;", ">debug ${filename}.exe" ], "support": [ "jsdos", "dosbox", "dosboxX", "msdos player" ] } } }
匯編代碼的運(yùn)行
右鍵可以查看到,可以“運(yùn)行當(dāng)前程序(匯編+鏈接+運(yùn)行)”
初學(xué)者可能不能看懂下面代碼什么意思,我們來(lái)點(diǎn)擊運(yùn)行試試吧!
STACK SEGMENT PARA 'STACK' ;定義堆棧段,段名為STACK DB 100 DUP('?') ;分配堆棧的大小,設(shè)置為100字節(jié) STACK ENDS DATA SEGMENT ;定義數(shù)據(jù)段,段名為DATA STRING DB'HELLO!','$' ;定義字符串?dāng)?shù)據(jù) DATA ENDS CODE SEGMENT ;定義代碼段,改名為CODE ASSUME CS:CODE, DS:DATA, SS:STACK START: MOV AX, DATA ;程序執(zhí)行起始點(diǎn) MOV DS, AX ;將數(shù)據(jù)段地址寄存器指向用戶數(shù)據(jù)段 MOV AX, STACK MOV SS, AX ;將堆棧段地址寄存器指向用戶堆棧段 LEA DX, STRING MOV AH, 09H INT 21H ;系統(tǒng)調(diào)試功能,在顯示器上顯示字符串 MOV AH, 4CH INT 21H ;系統(tǒng)調(diào)試功能,程序結(jié)束返回操作系統(tǒng) CODE ENDS END START ;匯編結(jié)束,段內(nèi)程序起點(diǎn)為START
運(yùn)行結(jié)果如下:
運(yùn)行過(guò)后相信大家明白這就是一個(gè)完整的匯編語(yǔ)言源程序示例,該程序就是完成在屏幕中打印顯示“HELLO!”。
當(dāng)然啦,對(duì)于這個(gè)程序,我們應(yīng)當(dāng)側(cè)重于了解它的格式,而不僅僅是內(nèi)容。通常,完整的匯編語(yǔ)言源程序格式的定義由SEGMENT和ENDS這對(duì)偽指令實(shí)現(xiàn),同時(shí)需要偽指令A(yù)SSUME指定該段加載的段地址寄存器。
以上的ASSUME語(yǔ)句將CS、DS、SS依次指向名為CODE、DATA、STACK的段,然而,ASSUME語(yǔ)句并不為DS、SS賦值,所以,程序開(kāi)始就是先用傳送指令將數(shù)據(jù)段DATA和堆棧段STACK的段地址分別賦值到DS、SS,然后進(jìn)行系統(tǒng)功能調(diào)用,在顯示器上顯示字符串。最后,系統(tǒng)功能調(diào)用,程序結(jié)束返回操作系統(tǒng)。
到此這篇關(guān)于VScode配置8086匯編環(huán)境的文章就介紹到這了,更多相關(guān)VScode配置匯編內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
匯編 函數(shù)調(diào)用的實(shí)現(xiàn)
這篇文章主要介紹了匯編 函數(shù)調(diào)用的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02匯編語(yǔ)言有關(guān)在屏幕區(qū)顯示字符的四種方法(推薦)
這篇文章主要介紹了匯編語(yǔ)言有關(guān)在屏幕區(qū)顯示字符的四種方法(推薦),每種方法給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02ARM匯編判斷之如何用匯編判斷數(shù)組中正負(fù)數(shù)個(gè)數(shù)
這篇文章主要介紹了ARM匯編判斷之如何用匯編判斷數(shù)組中正負(fù)數(shù)個(gè)數(shù),在匯編語(yǔ)言中程序的基本框架是不變的,這里我們可以直接把正向遍歷的程序給貼過(guò)來(lái),然后我們思考怎么運(yùn)用判斷后綴把數(shù)組中正數(shù)和負(fù)數(shù)分開(kāi),進(jìn)行判斷個(gè)數(shù)和分別求和,需要的朋友可以參考下2022-04-04匯編語(yǔ)言之實(shí)現(xiàn)發(fā)出各種聲音
本文給大家分享一個(gè)練手小項(xiàng)目,響鈴設(shè)計(jì)項(xiàng)目,列出了響鈴,機(jī)槍聲音,音樂(lè)播放器的代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2021-11-11