十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
1 工具準(zhǔn)備

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、洪洞網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、洪洞網(wǎng)絡(luò)營銷、洪洞企業(yè)策劃、洪洞品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供洪洞建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
1)下載DOSBOX
工具介紹:DOSBox 是一個 DOS 模擬程序,由于它采用的是 SDL 庫,所以可以很方便的移植到其他的平臺。目前,DOSBox 已經(jīng)支持在 Windows、Linux、Mac OS X、BeOS 、palmOS、Android 、webOS、os/2等系統(tǒng)中運行。不少DOS下的游戲都可以直接在該平臺上運行。
2)下載MASM32
工具介紹:MASM32是國外的MASM愛好者Steve Hutchesson自行整理和編寫的一個軟件包,目前最高版本為11r版。MASM32并非指Microsoft的MASM宏匯編器,而是包含了不同版本工具組建的匯編開發(fā)工具包。它的匯編編譯器是MASM6.0以上版本中的Ml.exe,資源編譯器是Microsoft Visual Studio中的Rc.exe,32位鏈接器是Microsoft Visual Studio中的Link.exe,同時包含有其他的一些如Lib.exe和DumpPe.exe等工具。
注意:也可以直接下載由參考資料3作者提供的masm工具壓縮包,里面包含必要的匯編、鏈接、調(diào)試工具(百度網(wǎng)盤下載)。
2 安裝工具
1)安裝DOSBOX
安裝下載到的DOSBox0.74-win32-installer.exe,直接一路Next完成安裝。
2)配置DOSBOX
創(chuàng)建一個用于保存匯編工具(如MASM、Link、DEBUG等工具)和匯編文件(*.asm)的目錄,如:E:\DEBUG。
打開DOSBOX的安裝根目錄(默認(rèn)安裝路徑:C:\Program Files\DOSBox-0.74),雙擊文件DOSBox 0.74 Options.bat,運行該批處理文件后系統(tǒng)會用文本文檔Notepad打開配置文件dosbox-0.74.conf。
將光標(biāo)定位到dosbox-0.74.conf文件的[autoexec]節(jié)點(一般在該文件末尾),在文件中添加以下內(nèi)容:
[plain] view plain copy
MOUNT C D:\DEBUG # 將目錄D:\DEBUG掛載為DOSBOX下的C:
set PATH=$PATH$;D:\DEBUG # 將D:\DEBUG寫入環(huán)境變量PATH中
3)安裝MASM32
可解壓安裝下載到的masm32v11r.zip,按默認(rèn)配置安裝即可。
安裝結(jié)束后,可直接利用masm32v11r中的gedit.exe程序編寫、編譯和鏈接asm匯編程序。
注意,MASM32的替代方案:可直接從其他電腦上復(fù)制匯編工具DEBUG.EXE、EDIT.EXE、LINK.EXE、MASM.EXE等工具復(fù)制到E:\DEBUG文件夾下(復(fù)制時注意不能將32位系統(tǒng)中找到的上述工具復(fù)制到64位系統(tǒng)中使用)
3 樣例程序
1)運行DOSBOX,在命令符C:\下輸入命令:EDIT文件名.asm,啟動EDIT.EXE進(jìn)入代碼編輯狀態(tài),并輸入如下樣例程序:
[plain] view plain copy
code segment
assume cs:code
start:
mov ax,5h
mov bx,6h
add ax,bx
mov ah,4ch ; 調(diào)用DOS的4C號功能
int 21h ; 退出DEBUG狀態(tài),返回DOS
code ends
end start
2)保存文件后返回DOSBOX的命令行,輸入命令:MASM文件名.asm,生成目標(biāo)文件文件名.OBJ(生成過程中可以修改目標(biāo)文件名,直接回車可保持默認(rèn)目標(biāo)文件名)。
注意:此時可能生成三個文件:*.obj、*.lst和*.crf文件。其中,列表文件*.lst和交叉引用文件非必選,前者是匯編語言匯編的機器語言與匯編語言對照表,可用于調(diào)試;后者給出了用戶定義的所有符號和對每個符號定義、引用的行號。
3)輸入命令:LINK文件名.OBJ,鏈接生成可執(zhí)行文件文件名.EXE。
注意:由于在上述代碼中未定義堆棧段,故在鏈接時會提示:LINK : warning L4021: no stack segment,因不會影響執(zhí)行文件的生成,故暫時忽略。
另外,此時可能生成兩個文件:*.exe和*.map文件。其中,地址映射文件*.map給出內(nèi)存地址分配的有關(guān)信息。
4)輸入命令:DEBUG文件名.EXE,在DEBUG的命令提示符“-”出現(xiàn)后開始調(diào)試,以下是部分調(diào)試命令及截圖:
輸入命令:R,查看程序運行前的寄存器組初始值;
輸入命令:U,查看程序反匯編代碼。從反匯編代碼中可看出,變量會被匯編為直接尋址方式,使用變量在數(shù)據(jù)段內(nèi)的有效地址表示。
輸入命令:T,單步調(diào)試;
輸入命令:D,觀察內(nèi)存變化(D后不帶地址或范圍,默認(rèn)顯示上一個D命令之后的80字節(jié)內(nèi)容);
輸入命令:G 地址,程序從當(dāng)前位置直接運行到指定地址處停下。
輸入命令:E 地址修改內(nèi)存中的內(nèi)容,如:E DS:0100,輸入空格可逐個字節(jié)修改,回車停止修改。
用DOS的EDIT可以寫源代碼,然后保存,匯編,連接,即可生成匯編程序. 具體方法是: 進(jìn)入DOS,輸入EDIT,F(xiàn)ILE,NEW,編輯匯編源代碼,然后保存(注意擴展名為 .asm),在通過MASM或者TASM即可生成目標(biāo)文件(.obj),再通過LINK即可生成可執(zhí)行文件(.exe).
WINDOWS系統(tǒng)是C++語言編寫的。
WINDOWS本身屬于微內(nèi)核系統(tǒng),WINDOWS2000則已經(jīng)有20余萬行代碼,其中80%是用C++編寫,其余部分有C和匯編,底層接口用匯編編寫。微軟選擇C++的根本原因是WINDOWS操作系統(tǒng)本身是微內(nèi)核系統(tǒng),所以擴展性及以后的維護要求非常重要,所以C++的類的概念就能在這里很好的利用。
擴展資料:
操作系統(tǒng)是人使用計算機硬件溝通的平臺,沒有良好的人機操作性,就難以吸引廣大用戶使用。Windows操作系統(tǒng)能夠作為個人計算機的主流操作系統(tǒng),其優(yōu)異的人機操作性是重要因素。
Windows操作系統(tǒng)界面友好,窗口制作優(yōu)美,操作動作易學(xué),多代系統(tǒng)之間有良好的傳承,計算機資源管理效率較高,效果較好。
硬件的良好適應(yīng)性是Windows操作系統(tǒng)的有一個重要特點。Windows操作系統(tǒng)支持多種硬件平臺對于硬件生產(chǎn)廠商寬泛、自由的開發(fā)環(huán)境,激勵了這些硬件公司選擇與Windows操作系統(tǒng)相匹配,也激勵了Windows操作系統(tǒng)不斷完善和改進(jìn),同時,硬件技術(shù)的提升,也為操作系統(tǒng)功能拓展提供了支撐。
參考資料來源:百度百科-Windows操作系統(tǒng)
DOS/Windows 下的匯編語言代碼都是 Intel 風(fēng)格的。但在 Unix 和 Linux 系統(tǒng)中,更多采用的還是 ATT 格式,兩者在語法格式上有著很大的不同:
在 ATT 匯編格式中,寄存器名要加上 '%' 作為前綴;而在 Intel 匯編格式中,寄存器名不需要加前綴。例如:
ATT 格式 pushl %eax
Intel 格式 push eax
在 ATT 匯編格式中,用 '$' 前綴表示一個立即操作數(shù);而在 Intel 匯編格式中,立即數(shù)的表示不用帶任何前綴。例如:
ATT 格式 pushl $1
Intel 格式 push 1
ATT 和 Intel 格式中的源操作數(shù)和目標(biāo)操作數(shù)的位置正好相反。在 Intel 匯編格式中,目標(biāo)操作數(shù)在源操作數(shù)的左邊;而在 ATT 匯編格式中,目標(biāo)操作數(shù)在源操作數(shù)的右邊。例如:
ATT 格式 addl $1, %eax
Intel 格式 add eax, 1
在 ATT 匯編格式中,操作數(shù)的字長由操作符的最后一個字母決定,后綴'b'、'w'、'l'分別表示操作數(shù)為字節(jié)(byte,8 比特)、字(word,16 比特)和長字(long,32比特);而在 Intel 匯編格式中,操作數(shù)的字長是用 "byte ptr" 和 "word ptr" 等前綴來表示的。例如:
ATT 格式
movb val, %al
Intel 格式 mov al, byte ptr val
在 ATT 匯編格式中,絕對轉(zhuǎn)移和調(diào)用指令(jump/call)的操作數(shù)前要加上'*'作為前綴,而在 Intel 格式中則不需要。
遠(yuǎn)程轉(zhuǎn)移指令和遠(yuǎn)程子調(diào)用指令的操作碼,在 ATT 匯編格式中為 "ljump" 和 "lcall",而在 Intel 匯編格式中則為 "jmp far" 和 "call far",即:
ATT 格式 ljump $section, $offset lcall $section, $offset
Intel 格式 jmp far section:offset call far section:offset
與之相應(yīng)的遠(yuǎn)程返回指令則為:
ATT 格式 lret $stack_adjust
Intel 格式 ret far stack_adjust
在 ATT 匯編格式中,內(nèi)存操作數(shù)的尋址方式是
section:disp(base, index, scale)
而在 Intel 匯編格式中,內(nèi)存操作數(shù)的尋址方式為:
section:[base + index*scale + disp]
由于 Linux 工作在保護模式下,用的是 32 位線性地址,所以在計算地址時不用考慮段基址和偏移量,而是采用如下的地址計算方法:
disp + base + index * scale
下面是一些內(nèi)存操作數(shù)的例子:
ATT 格式 Intel 格式
movl -4(%ebp), %eax mov eax, [ebp - 4]
movl array(, %eax, 4), %eax mov eax, [eax*4 + array]
movw array(%ebx, %eax, 4), %cx mov cx, [ebx + 4*eax + array]
movb $4, %fs:(%eax) mov fs:eax, 4
用DOS的EDIT可以寫源代碼,然后保存,匯編,連接,即可生成匯編程序. 具體方法是: 進(jìn)入DOS,輸入EDIT,F(xiàn)ILE,NEW,編輯匯編源代碼,然后保存(注意擴展名為 .asm),在通過MASM或者TASM即可生成目標(biāo)文件(.obj),再通過LINK即可生成可執(zhí)行文件(.exe).
1.
對應(yīng)用程序來說,進(jìn)程就像一個大容器。在應(yīng)用程序被運行后,就相當(dāng)于將應(yīng)用程序裝進(jìn)容器里了,你可以往容器里加其他東西(如:應(yīng)用程序在運行時所需的變量數(shù)據(jù)、需要引用的DLL文件等),當(dāng)應(yīng)用程序被運行兩次時,容器里的東西并不會被倒掉,系統(tǒng)會找一個新的進(jìn)程容器來容納它。
進(jìn)程是由進(jìn)程控制塊、程序段、數(shù)據(jù)段三部分組成。一個進(jìn)程可以包含若干線程(Thread),線程可以幫助應(yīng)用程序同時做幾件事(比如一個線程向磁盤寫入文件,另一個則接收用戶的按鍵操作并及時做出反應(yīng),互相不干擾),在程序被運行后中,系統(tǒng)首先要做的就是為該程序進(jìn)程建立一個默認(rèn)線程,然后程序可以根據(jù)需要自行添加或刪除相關(guān)的線程。是可并發(fā)執(zhí)行的程序。在一個數(shù)據(jù)集合上的運行過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位,也是稱活動、路徑或任務(wù),它有兩方面性質(zhì):活動性、并發(fā)性。進(jìn)程可以劃分為運行、阻塞、就緒三種狀態(tài),并隨一定條件而相互轉(zhuǎn)化:就緒--運行,運行--阻塞,阻塞--就緒。
進(jìn)程為應(yīng)用程序的運行實例,是應(yīng)用程序的一次動態(tài)執(zhí)行??此聘呱?,我們可以簡單地理解為:它是操作系統(tǒng)當(dāng)前運行的執(zhí)行程序。在系統(tǒng)當(dāng)前運行的執(zhí)行程序里包括:系統(tǒng)管理計算機個體和完成各種操作所必需的程序;用戶開啟、執(zhí)行的額外程序,當(dāng)然也包括用戶不知道,而自動運行的非法程序(它們就有可能是病毒程序)。
危害較大的可執(zhí)行病毒同樣以“進(jìn)程”形式出現(xiàn)在系統(tǒng)內(nèi)部(一些病毒可能并不被進(jìn)程列表顯示,如“宏病毒”),那么及時查看并準(zhǔn)確殺掉非法進(jìn)程對于手工殺毒有起著關(guān)鍵性的作用。
進(jìn)程是程序在計算機上的一次執(zhí)行活動。當(dāng)你運行一個程序,你就啟動了一個進(jìn)程。顯然,程序是死的(靜態(tài)的),進(jìn)程是活的(動態(tài)的)。進(jìn)程可以分為系統(tǒng)進(jìn)程和用戶進(jìn)程。凡是用于完成操作系統(tǒng)的各種功能的進(jìn)程就是系統(tǒng)進(jìn)程,它們就是處于運行狀態(tài)下的操作系統(tǒng)本身;用戶進(jìn)程就是所有由你啟動的進(jìn)程。進(jìn)程是操作系統(tǒng)進(jìn)行資源分配的單位。
在Windows下,進(jìn)程又被細(xì)化為線程,也就是一個進(jìn)程下有多個能獨立運行的更小的單位。
2.3.
匯編語言是一種功能很強的程序設(shè)計語言,也是利用計算機所有硬件特性并能直接控制硬件的語言。匯編語言,作為一門語匯編語言言,對應(yīng)于高級語言的編譯器,需要一個“匯編器”來把匯編語言原文件匯編成機器可執(zhí)行的代碼。高級的匯編器如MASM,TASM等等為我們寫匯編程序提供了很多類似于高級語言的特征,比如結(jié)構(gòu)化、抽象等。在這樣的環(huán)境中編寫的匯編程序,有很大一部分是面向匯編器的偽指令,已經(jīng)類同于高級語言?,F(xiàn)在的匯編環(huán)境已經(jīng)如此高級,即使全部用匯編語言來編寫windows的應(yīng)用程序也是可行的,但這不是匯編語言的長處。匯編語言的長處在于編寫高效且需要對機器硬件精確控制的程序。
個人總結(jié)一下:
有了進(jìn)程才能封裝一個應(yīng)用程序 才能使應(yīng)用程序有效高效地運行有了線程才能使進(jìn)程更有效地使cpu調(diào)度.
匯編是一種語言.上述所說的直接操作感覺有點牽強 任何硬件都只認(rèn)機器語言就是我們說的二進(jìn)制.當(dāng)然他的意思是讓匯編直接作為某些操作系統(tǒng)對上級用戶屏蔽下級硬件運作的程序 例如中斷程序 多線程調(diào)度(可能是匯編+c) bios(bootloader)..
匯編語言編譯后生成二進(jìn)制的目標(biāo)文件就是我們常說的obj 里面就是一個存放此程序的相對以言的地址 通過鏈接 就能構(gòu)建成可執(zhí)行文件了.
可以看看操作系統(tǒng) 微機原理