第1章匯編語(yǔ)言基礎(chǔ)_第1頁(yè)
第1章匯編語(yǔ)言基礎(chǔ)_第2頁(yè)
第1章匯編語(yǔ)言基礎(chǔ)_第3頁(yè)
第1章匯編語(yǔ)言基礎(chǔ)_第4頁(yè)
第1章匯編語(yǔ)言基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 1.1 1.1 英特爾英特爾80 x8680 x86處理器處理器 1.2 1.2 個(gè)人計(jì)算機(jī)系統(tǒng)個(gè)人計(jì)算機(jī)系統(tǒng) 1.3 1.3 匯編語(yǔ)言程序格式匯編語(yǔ)言程序格式 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 了解軟硬件開(kāi)發(fā)環(huán)境了解軟硬件開(kāi)發(fā)環(huán)境 熟悉通用寄存器和存儲(chǔ)器組織熟悉通用寄存器和存儲(chǔ)器組織 掌握匯編語(yǔ)言的掌握匯編語(yǔ)言的 語(yǔ)句格式、程序框架和開(kāi)發(fā)方法語(yǔ)句格式、程序框架和開(kāi)發(fā)方法 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 3 3 intel 8086 1.1 1.1 英特爾英特爾80 x8680 x86處理器處理器 8038680386 8048680

2、486 奔騰奔騰 奔騰奔騰ii 奔騰奔騰4 8028680286 80868086 奔騰奔騰iii 酷睿多核系列酷睿多核系列 40044004 ia-32處理器處理器 16位位80 x86處理器處理器 奔騰多核系列奔騰多核系列 intel 64處理器處理器 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 4 4 1.1.1 161.1.1 16位位80 x8680 x86處理器處理器 1616位結(jié)構(gòu)處理器位結(jié)構(gòu)處理器 8086/80888086/8088指令系統(tǒng)提供指令系統(tǒng)提供1616位基本指令集位基本指令集 80186/8018880186/80188增加若干條實(shí)用指令增加若干條實(shí)用指令 8086

3、8086的工作方式是實(shí)方式(的工作方式是實(shí)方式(real modereal mode) 8028680286增加保護(hù)方式(增加保護(hù)方式(protected modeprotected mode) 8028680286引入了系統(tǒng)指令引入了系統(tǒng)指令 n為操作系統(tǒng)等核心程序提供處理器控制功能為操作系統(tǒng)等核心程序提供處理器控制功能 指令系統(tǒng)、指令集(指令系統(tǒng)、指令集(instruction set) 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 5 5 1.1.2 ia-321.1.2 ia-32處理器處理器 8038680386引入英特爾引入英特爾3232位指令集結(jié)構(gòu)位指令集結(jié)構(gòu)isaisa n兼容原兼

4、容原1616位位8028680286指令系統(tǒng)指令系統(tǒng) n全面升級(jí)為全面升級(jí)為3232位位 n提供虛擬提供虛擬80868086工作方式(工作方式(virtual 8086 modevirtual 8086 mode) 8048680486集成浮點(diǎn)處理單元支持浮點(diǎn)指令集成浮點(diǎn)處理單元支持浮點(diǎn)指令 pentiumpentium系列系列 n陸續(xù)增加若干整數(shù)指令、完善浮點(diǎn)指令陸續(xù)增加若干整數(shù)指令、完善浮點(diǎn)指令 n增加一系列多媒體指令(增加一系列多媒體指令(simdsimd指令)指令) ia-32(intel architecture-32) 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 6 6 1.1.3

5、intel 641.1.3 intel 64處理器處理器 引入引入6464位英特爾指令集結(jié)構(gòu)位英特爾指令集結(jié)構(gòu) n兼容兼容3232位指令系統(tǒng)位指令系統(tǒng) n新增新增6464位工作方式位工作方式 繼續(xù)豐富多媒體指令繼續(xù)豐富多媒體指令 處理器集成多核(處理器集成多核(multi-coremulti-core)技術(shù))技術(shù) 處理器進(jìn)入多核時(shí)代處理器進(jìn)入多核時(shí)代 many core 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 7 7 1.2 1.2 個(gè)人計(jì)算機(jī)系統(tǒng)個(gè)人計(jì)算機(jī)系統(tǒng) 硬件(硬件(hardwarehardware):物理設(shè)備):物理設(shè)備 軟件(軟件(softwaresoftware):程序和文檔)

6、:程序和文檔 運(yùn)算器運(yùn)算器 控制器控制器 寄存器組寄存器組 主存儲(chǔ)器主存儲(chǔ)器 總線總線 輸入輸出接口電路輸入輸出接口電路 外部設(shè)備外部設(shè)備 軟件軟件 微處理器微處理器 微型計(jì)算機(jī)微型計(jì)算機(jī) 微型計(jì)算機(jī)系統(tǒng)微型計(jì)算機(jī)系統(tǒng) 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 8 8 1.2.1 1.2.1 硬件組成硬件組成 i/o 接接 口口 主存儲(chǔ)器主存儲(chǔ)器 系統(tǒng)總線系統(tǒng)總線 cpu 寄存器寄存器 控制器控制器 運(yùn)算器運(yùn)算器 輔助存儲(chǔ)器輔助存儲(chǔ)器 輸入設(shè)備輸入設(shè)備 輸出設(shè)備輸出設(shè)備 匯編語(yǔ)言程序員將硬件抽象為:匯編語(yǔ)言程序員將硬件抽象為: 寄存器寄存器、存儲(chǔ)器地址存儲(chǔ)器地址和和輸入輸出地址輸入輸出地址 第

7、第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 9 9 1.2.2 1.2.2 寄存器(寄存器(registerregister) 處理器內(nèi)部的高速存儲(chǔ)單元處理器內(nèi)部的高速存儲(chǔ)單元 用于暫時(shí)存放程序執(zhí)行過(guò)程中的代碼和數(shù)據(jù)用于暫時(shí)存放程序執(zhí)行過(guò)程中的代碼和數(shù)據(jù) 透明寄存器透明寄存器 n對(duì)應(yīng)用人員不可見(jiàn)、不能編程直接控制對(duì)應(yīng)用人員不可見(jiàn)、不能編程直接控制 可編程(可編程(programmableprogrammable)寄存器)寄存器 n具有引用名稱、供編程使用具有引用名稱、供編程使用 n通用寄存器(通用寄存器(general-purpose registergeneral-purpose registe

8、r) n具有多種用途具有多種用途 n數(shù)量較多、使用頻度較高數(shù)量較多、使用頻度較高 n專用寄存器專用寄存器 n各自只用于特定目的各自只用于特定目的 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 1010 ia-32ia-32常用寄存器常用寄存器 8個(gè)個(gè)32位通用寄存器位通用寄存器 6個(gè)個(gè)16位段寄存器位段寄存器 1個(gè)個(gè)32位標(biāo)志寄存器位標(biāo)志寄存器 1個(gè)個(gè)32位指令指針位指令指針 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 1111 1. 1. 通用寄存器通用寄存器 處理器最常使用的整數(shù)通用寄存器處理器最常使用的整數(shù)通用寄存器 可用于保存整數(shù)數(shù)據(jù)、地址等可用于保存整數(shù)數(shù)據(jù)、地址等 8 8個(gè)個(gè)3232位通

9、用寄存器位通用寄存器 eaxeax,ebxebx,ecxecx,edxedx esiesi,ediedi,ebpebp,espesp 8 8個(gè)個(gè)1616位通用寄存器位通用寄存器 axax,bxbx,cxcx,dxdx sisi,didi,bpbp,spsp 8 8個(gè)個(gè)8 8位通用寄存器位通用寄存器 ahah,bhbh,chch,dhdh alal,blbl,clcl,dldl 318 716 15 ahal 0 ax eax 既是一個(gè)整體既是一個(gè)整體 又可獨(dú)立使用又可獨(dú)立使用 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 1212 通用寄存器的名稱通用寄存器的名稱 e eaxaxaccumulat

10、oraccumulator累加器累加器 e ebxbxbasebase基址寄存器基址寄存器 e ecxcxcountercounter計(jì)數(shù)器計(jì)數(shù)器 e edxdxdatadata數(shù)據(jù)寄存器數(shù)據(jù)寄存器 e esisisource indexsource index源變址寄存器源變址寄存器 e edididestination indexdestination index目的變址寄存器目的變址寄存器 e ebpbpbase pointerbase pointer基址指針基址指針 e espspstack pointerstack pointer堆棧指針堆棧指針 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言

11、基礎(chǔ) 1313 2. 2. 標(biāo)志寄存器標(biāo)志寄存器 標(biāo)志(標(biāo)志(flagflag) n反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式 n用一個(gè)或多個(gè)二進(jìn)制位表示一種標(biāo)志用一個(gè)或多個(gè)二進(jìn)制位表示一種標(biāo)志 n用用0 0和和1 1的不同組合表達(dá)標(biāo)志的不同狀態(tài)的不同組合表達(dá)標(biāo)志的不同狀態(tài) 80868086支持支持1616位標(biāo)志寄存器位標(biāo)志寄存器flagsflags ia-32ia-32處理器形成處理器形成3232位位eflagseflags標(biāo)志寄存器標(biāo)志寄存器 n狀態(tài)標(biāo)志:狀態(tài)標(biāo)志:記錄指令執(zhí)行結(jié)果的輔助信息記錄指令執(zhí)行結(jié)果的輔助信息 n控制標(biāo)志:方向標(biāo)志控制標(biāo)志:方向標(biāo)志dfdf

12、,僅用于串操作指令,僅用于串操作指令 n系統(tǒng)標(biāo)志:系統(tǒng)標(biāo)志:控制操作系統(tǒng)或核心管理程序的操作控制操作系統(tǒng)或核心管理程序的操作 方式方式 示意圖示意圖 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 1414 標(biāo)志寄存器標(biāo)志寄存器eflagseflags 返回返回 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 1515 處理器最基本的標(biāo)志:狀態(tài)標(biāo)志處理器最基本的標(biāo)志:狀態(tài)標(biāo)志 用來(lái)記錄指令執(zhí)行結(jié)果的輔助信息用來(lái)記錄指令執(zhí)行結(jié)果的輔助信息 加減運(yùn)算和邏輯運(yùn)算指令主要設(shè)置它們加減運(yùn)算和邏輯運(yùn)算指令主要設(shè)置它們 其他有些指令的執(zhí)行也會(huì)相應(yīng)地設(shè)置它們其他有些指令的執(zhí)行也會(huì)相應(yīng)地設(shè)置它們 處理器主要使用其中處理器主

13、要使用其中5 5個(gè)構(gòu)成各種條件,分支個(gè)構(gòu)成各種條件,分支 指令判斷這些條件實(shí)現(xiàn)程序分支指令判斷這些條件實(shí)現(xiàn)程序分支 8086的標(biāo)志的標(biāo)志 of 1115 12 df 10 if 9 tf 8 sf 7 zf 6 0 5 af 4 0 3 pf 2 1 1 cf 0 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 1616 3. 3. 指令指針寄存器指令指針寄存器eipeip 保存將要執(zhí)行的指令在主存的存儲(chǔ)器地址保存將要執(zhí)行的指令在主存的存儲(chǔ)器地址 eipeip是專用寄存器是專用寄存器 n順序執(zhí)行時(shí)自動(dòng)增量順序執(zhí)行時(shí)自動(dòng)增量(加上該指令的字節(jié)數(shù)),(加上該指令的字節(jié)數(shù)), 指向下一條指令指向下一條指令

14、 n分支、調(diào)用等操作時(shí)執(zhí)行控制轉(zhuǎn)移指令修改分支、調(diào)用等操作時(shí)執(zhí)行控制轉(zhuǎn)移指令修改,引,引 起程序轉(zhuǎn)移到指定的指令執(zhí)行起程序轉(zhuǎn)移到指定的指令執(zhí)行 n出現(xiàn)中斷或異常時(shí)被處理器賦值而相應(yīng)改變出現(xiàn)中斷或異常時(shí)被處理器賦值而相應(yīng)改變 3116 15 ip 0 eip 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 1717 4. 4. 段寄存器段寄存器 段(段(segmentsegment)是用于安排相關(guān)代碼或數(shù)據(jù)的)是用于安排相關(guān)代碼或數(shù)據(jù)的 一個(gè)主存區(qū)域一個(gè)主存區(qū)域 段寄存器表明某個(gè)段在主存中的位置段寄存器表明某個(gè)段在主存中的位置 6 6個(gè)個(gè)1616位段寄存器:位段寄存器:cs ds ss es fs g

15、scs ds ss es fs gs 應(yīng)用程序主要涉及應(yīng)用程序主要涉及3 3類(lèi)段類(lèi)段 n代碼段(代碼段(code segmentcode segment) 存放程序中指令代碼存放程序中指令代碼 n數(shù)據(jù)段(數(shù)據(jù)段(data segmentdata segment) 存放當(dāng)前運(yùn)行程序所用數(shù)據(jù)存放當(dāng)前運(yùn)行程序所用數(shù)據(jù) n堆棧段(堆棧段(stack segmentstack segment) 指明程序使用的堆棧區(qū)域指明程序使用的堆棧區(qū)域 主存空間主存空間 指令段指令段 數(shù)據(jù)段數(shù)據(jù)段 堆棧段堆棧段 程程 序序 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 1818 1.2.3 1.2.3 存儲(chǔ)器組織存儲(chǔ)器組

16、織 主存儲(chǔ)器容量很大,被劃分成許多存儲(chǔ)單元主存儲(chǔ)器容量很大,被劃分成許多存儲(chǔ)單元 每個(gè)存儲(chǔ)單元被編排一個(gè)號(hào)碼每個(gè)存儲(chǔ)單元被編排一個(gè)號(hào)碼 n即存儲(chǔ)單元地址即存儲(chǔ)單元地址 n稱為存儲(chǔ)器地址(稱為存儲(chǔ)器地址(memory addressmemory address) 每個(gè)存儲(chǔ)單元以字節(jié)為基本存儲(chǔ)單位每個(gè)存儲(chǔ)單元以字節(jié)為基本存儲(chǔ)單位 n即字節(jié)編址(即字節(jié)編址(byte addressablebyte addressable) n一個(gè)字節(jié)(一個(gè)字節(jié)(bytebyte)等于)等于8 8個(gè)二進(jìn)制位(個(gè)二進(jìn)制位(bitbit) n二進(jìn)制位是計(jì)算機(jī)存儲(chǔ)信息的最小單位二進(jìn)制位是計(jì)算機(jī)存儲(chǔ)信息的最小單位 n1616

17、位(位(2 2個(gè)字節(jié))構(gòu)成一個(gè)字(個(gè)字節(jié))構(gòu)成一個(gè)字(wordword) n3232位(位(4 4個(gè)字節(jié))構(gòu)成一個(gè)雙字(個(gè)字節(jié))構(gòu)成一個(gè)雙字(double worddouble word) 示意圖示意圖 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 1919 數(shù)據(jù)的位格式數(shù)據(jù)的位格式 返回返回 d7d6d5d4d3d2d1d0 字節(jié)字節(jié) lsbmsb d15 d1d0 字字 lsbmsb d31 d1d0 雙字雙字 lsbmsb 318 716 15 高字節(jié)高字節(jié)低字節(jié)低字節(jié) 0 字字 雙字雙字 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 2020 1. 1. 存儲(chǔ)模型存儲(chǔ)模型 物理存儲(chǔ)器以字節(jié)為基

18、本存儲(chǔ)單位物理存儲(chǔ)器以字節(jié)為基本存儲(chǔ)單位 每個(gè)存儲(chǔ)單元被分配一個(gè)唯一的地址每個(gè)存儲(chǔ)單元被分配一個(gè)唯一的地址 這個(gè)地址就是物理地址這個(gè)地址就是物理地址 物理地址空間從物理地址空間從0 0開(kāi)始順序編排,直到處理器支持的開(kāi)始順序編排,直到處理器支持的 最大存儲(chǔ)單元最大存儲(chǔ)單元 n80868086處理器支持處理器支持1mb1mb存儲(chǔ)器:存儲(chǔ)器:00000h00000hfffffhfffffh nia-32ia-32處理器支持處理器支持4gb4gb存儲(chǔ)器:存儲(chǔ)器:00000000h00000000hffffffffhffffffffh 操作系統(tǒng)利用存儲(chǔ)管理單元進(jìn)行存儲(chǔ)管理,程序并操作系統(tǒng)利用存儲(chǔ)管理單元

19、進(jìn)行存儲(chǔ)管理,程序并 不直接尋址物理存儲(chǔ)器不直接尋址物理存儲(chǔ)器 ia-32ia-32處理器提供處理器提供3 3種存儲(chǔ)模型,用于程序訪問(wèn)存儲(chǔ)種存儲(chǔ)模型,用于程序訪問(wèn)存儲(chǔ) 器器 示意圖示意圖 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 2121 存儲(chǔ)器地址空間存儲(chǔ)器地址空間 返回返回 ffffffffh 00000000h 00000001h 00000002h 00000003h 00000004h 雙字雙字 字節(jié)字節(jié) 字字 字節(jié)字節(jié) 字節(jié)字節(jié) 字字 字節(jié)字節(jié) 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 2222 ia-32ia-32處理器的存儲(chǔ)模型處理器的存儲(chǔ)模型 (1 1)平展存儲(chǔ)模型()平展存

20、儲(chǔ)模型(flat memory flat memory m modelodel) n存儲(chǔ)器是一個(gè)連續(xù)的地址空間:線性地址空間存儲(chǔ)器是一個(gè)連續(xù)的地址空間:線性地址空間 nia-32ia-32處理器支持處理器支持4gb4gb容量線性地址空間容量線性地址空間 (2 2)段式存儲(chǔ)模型()段式存儲(chǔ)模型(segmented segmented m memory modelemory model) n存儲(chǔ)器由一組獨(dú)立的地址空間:段(存儲(chǔ)器由一組獨(dú)立的地址空間:段(segmentsegment) n每個(gè)段都可以達(dá)到每個(gè)段都可以達(dá)到4gb4gb容量容量 n在處理器內(nèi)部,所有的段都被映射到線性地址空間在處理器內(nèi)部

21、,所有的段都被映射到線性地址空間 (3 3)實(shí)地址存儲(chǔ)模型()實(shí)地址存儲(chǔ)模型(real-address real-address m memory modelemory model) n80868086處理器的存儲(chǔ)模型處理器的存儲(chǔ)模型 n段式存儲(chǔ)模型的特例段式存儲(chǔ)模型的特例 n線性地址空間最大為線性地址空間最大為1mb1mb容量,段最大為容量,段最大為64kb64kb 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 2323 2. 2. 工作方式工作方式 (1 1)保護(hù)方式()保護(hù)方式(protected protected m modeode) nia-32ia-32處理器固有的工作狀態(tài)處理器固有

22、的工作狀態(tài) n具有強(qiáng)大的段頁(yè)式存儲(chǔ)管理和特權(quán)與保護(hù)能力具有強(qiáng)大的段頁(yè)式存儲(chǔ)管理和特權(quán)與保護(hù)能力 n使用全部使用全部3232條地址總線,可尋址條地址總線,可尋址4gb4gb物理存儲(chǔ)器物理存儲(chǔ)器 n使用平展或段式存儲(chǔ)模型使用平展或段式存儲(chǔ)模型 n利用虛擬利用虛擬80868086方式支持實(shí)地址方式支持實(shí)地址80868086軟件軟件 (2 2)實(shí)地址方式()實(shí)地址方式(real-address modereal-address mode) n可以進(jìn)行可以進(jìn)行3232位處理的快速位處理的快速80868086 n只能尋址只能尋址1mb1mb物理存儲(chǔ)器空間,每個(gè)段不超過(guò)物理存儲(chǔ)器空間,每個(gè)段不超過(guò)64kb6

23、4kb n可以使用可以使用3232位寄存器、位寄存器、3232位操作數(shù)和位操作數(shù)和3232位尋址方式位尋址方式 n只能支持實(shí)地址存儲(chǔ)模型只能支持實(shí)地址存儲(chǔ)模型 (3 3)系統(tǒng)管理方式()系統(tǒng)管理方式(system management modesystem management mode) n實(shí)現(xiàn)供節(jié)能和系統(tǒng)安全管理實(shí)現(xiàn)供節(jié)能和系統(tǒng)安全管理 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 2424 3. 3. 邏輯地址(邏輯地址(logical addresslogical address) 在處理器內(nèi)部、程序員編程時(shí)采用的地址在處理器內(nèi)部、程序員編程時(shí)采用的地址 邏輯地址邏輯地址段基地址段基地址偏

24、移地址偏移地址 n段基地址段基地址在主存中的起始地址在主存中的起始地址 n偏移地址偏移地址距離段基地址的位移量距離段基地址的位移量 某個(gè)存儲(chǔ)單元可以有多個(gè)邏輯地址,但只有一某個(gè)存儲(chǔ)單元可以有多個(gè)邏輯地址,但只有一 個(gè)唯一的物理地址個(gè)唯一的物理地址 編程使用編程使用處理器轉(zhuǎn)換處理器轉(zhuǎn)換地址總線輸出地址總線輸出 示意圖示意圖 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 2525 邏輯地址與物理地址邏輯地址與物理地址 返回返回 108108 208208 308308 106106 206206 306306 107107 207207 307307 109109 209209 309309 1101

25、10105105104104103103102102101101 210210205205204204203203202202201201 310310305305304304303303302302301301 0808 1818 2828 0606 1616 2626 0707 1717 2727 0909 1919 2929 101005050404030302020101 202015151414131312121111 303025252424232322222121 邏輯地址相對(duì)地址:邏輯地址相對(duì)地址:205(2層層05號(hào)房間)號(hào)房間) 物理地址絕對(duì)地址:物理地址絕對(duì)地址:15(第

26、(第15號(hào)房間)號(hào)房間) 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 2626 基本段的邏輯地址基本段的邏輯地址 代碼段代碼段(code segmentcode segment) n段基地址:代碼段寄存器段基地址:代碼段寄存器cscs指示指示 n偏移地址:指令指針寄存器偏移地址:指令指針寄存器eipeip保存保存 數(shù)據(jù)段數(shù)據(jù)段(data segmentdata segment) n段基地址:數(shù)據(jù)段寄存器段基地址:數(shù)據(jù)段寄存器dsds指示指示 n有時(shí)也用附加段寄存器有時(shí)也用附加段寄存器eses,段寄存器段寄存器fsfs和和gsgs指示指示 n偏移地址:各種存儲(chǔ)器尋址方式計(jì)算出來(lái)偏移地址:各種存儲(chǔ)器

27、尋址方式計(jì)算出來(lái) 堆棧段堆棧段(stack segmentstack segment) n段基地址:堆棧段寄存器段基地址:堆棧段寄存器ssss指示指示 n偏移地址:堆棧指針寄存器偏移地址:堆棧指針寄存器espesp保存保存 主存空間主存空間 指令段指令段 數(shù)據(jù)段數(shù)據(jù)段 堆棧段堆棧段 程程 序序 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 2727 4. 4. 段選擇器段選擇器 1616位段寄存器保存位段寄存器保存1616位段選擇器位段選擇器 段選擇器指向段選擇器指向6464位段描述符(位段描述符(descriptordescriptor) 段描述符包括段基地址段描述符包括段基地址 n平展存儲(chǔ)模型

28、:指向地址平展存儲(chǔ)模型:指向地址0 0位置位置 n段式存儲(chǔ)模型:指向線性地址空間不同的段段式存儲(chǔ)模型:指向線性地址空間不同的段 n實(shí)地址存儲(chǔ)模型:保存段基地址的高實(shí)地址存儲(chǔ)模型:保存段基地址的高1616位位 段寄存器段寄存器段描述符段描述符主存空間主存空間 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 2828 5. win325. win32的虛擬地址分配的虛擬地址分配 應(yīng)用程序起始地址應(yīng)用程序起始地址 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 2929 1.2.4 1.2.4 程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言 機(jī)器語(yǔ)言(機(jī)器語(yǔ)言(machine languagemachine language) n底

29、層的計(jì)算機(jī)語(yǔ)言,對(duì)應(yīng)機(jī)器指令底層的計(jì)算機(jī)語(yǔ)言,對(duì)應(yīng)機(jī)器指令 n形成目標(biāo)(代碼)程序形成目標(biāo)(代碼)程序 匯編語(yǔ)言(匯編語(yǔ)言(assembly languageassembly language) n將機(jī)器指令用助記符號(hào)代替而形成的一種語(yǔ)言將機(jī)器指令用助記符號(hào)代替而形成的一種語(yǔ)言 n本質(zhì)上是機(jī)器語(yǔ)言本質(zhì)上是機(jī)器語(yǔ)言 n需要匯編程序需要匯編程序“匯編匯編”( (翻譯翻譯) ) 高級(jí)語(yǔ)言(高級(jí)語(yǔ)言(high level languagehigh level language) n面向問(wèn)題的程序設(shè)計(jì)語(yǔ)言面向問(wèn)題的程序設(shè)計(jì)語(yǔ)言 n需要需要“編譯編譯”或或“解釋解釋”后執(zhí)行后執(zhí)行 mov eax,100

30、add eax,256 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 3030 instructions: language of the machineinstructions: language of the machine to command a computers hardware, you to command a computers hardware, you must speak its language. the words of a must speak its language. the words of a machines language are called mach

31、ines language are called instructions, and its vocabulary is instructions, and its vocabulary is called an instruction set.called an instruction set. 為了控制計(jì)算機(jī)硬件,必須使用它的語(yǔ)言。機(jī)器為了控制計(jì)算機(jī)硬件,必須使用它的語(yǔ)言。機(jī)器 語(yǔ)言的單詞稱為指令,它的詞匯表稱為指令集。語(yǔ)言的單詞稱為指令,它的詞匯表稱為指令集。 “computer organization d:masmbin;%path%set path=d:masm;d:masmbin

32、;%path% 在在windows資源管理器打開(kāi)文件夾資源管理器打開(kāi)文件夾“d:masm”, 雙擊該批處理文件,就可以進(jìn)入雙擊該批處理文件,就可以進(jìn)入masm環(huán)境環(huán)境 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 3939 具有搜索路徑的批處理文件具有搜索路徑的批處理文件 返回返回 echo off set path=d:masm;d:masmbin;%path% %systemroot%system32cmd.exe echo on win32.bat echo off set path=d:masm;d:masmbin;%path% %systemroot% echo on dos16.bat

33、 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 4040 1.3 1.3 匯編語(yǔ)言程序格式匯編語(yǔ)言程序格式 程序用程序設(shè)計(jì)語(yǔ)言編寫(xiě),由指令構(gòu)成程序用程序設(shè)計(jì)語(yǔ)言編寫(xiě),由指令構(gòu)成 指令由操作碼和操作數(shù)(地址碼)組成指令由操作碼和操作數(shù)(地址碼)組成 操作碼(操作碼(opcodeopcode)表明處理器執(zhí)行的操作)表明處理器執(zhí)行的操作 n例如數(shù)據(jù)傳送、加法運(yùn)算、跳轉(zhuǎn)等操作。例如數(shù)據(jù)傳送、加法運(yùn)算、跳轉(zhuǎn)等操作。 操作數(shù)(操作數(shù)(operandoperand)是參與操作的數(shù)據(jù)對(duì)象)是參與操作的數(shù)據(jù)對(duì)象 n主要以寄存器名或地址形式指明數(shù)據(jù)的來(lái)源主要以寄存器名或地址形式指明數(shù)據(jù)的來(lái)源 n通常的指令都有一個(gè)或兩

34、個(gè)操作數(shù)通常的指令都有一個(gè)或兩個(gè)操作數(shù) n有些指令無(wú)操作數(shù),個(gè)別指令有有些指令無(wú)操作數(shù),個(gè)別指令有3 3或或4 4個(gè)操作數(shù)個(gè)操作數(shù) n多數(shù)操作數(shù)需要顯式指明,有些操作數(shù)隱含使用多數(shù)操作數(shù)需要顯式指明,有些操作數(shù)隱含使用 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 4141 1.3.1 1.3.1 指令的代碼格式(指令的代碼格式(instruction formatinstruction format) ia-32ia-32處理器采用可變長(zhǎng)度指令格式處理器采用可變長(zhǎng)度指令格式 操作碼操作碼 n可選的指令前綴(用于擴(kuò)展指令功能)可選的指令前綴(用于擴(kuò)展指令功能) n1 13 3字節(jié)的主要操作碼字節(jié)的

35、主要操作碼 操作數(shù)操作數(shù) n可選的尋址方式域(包括可選的尋址方式域(包括modrmodr/m/m和和sibsib字段)字段) n可選的位移量可選的位移量 n可選的立即數(shù)可選的立即數(shù) 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 4242 使用最多、最基本的數(shù)據(jù)傳送指令使用最多、最基本的數(shù)據(jù)傳送指令 傳送指令的助記符:傳送指令的助記符:movmov(取自(取自movemove) n將數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)位置將數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)位置 n類(lèi)似高級(jí)語(yǔ)言的賦值語(yǔ)句類(lèi)似高級(jí)語(yǔ)言的賦值語(yǔ)句 movmov dest,srcdest,src ; ;源操作數(shù)源操作數(shù)srcsrc:被傳送的數(shù)據(jù)或數(shù)據(jù)所在的

36、位置:被傳送的數(shù)據(jù)或數(shù)據(jù)所在的位置 ; ;目的操作數(shù)目的操作數(shù)destdest:數(shù)據(jù)將要傳送到的位置:數(shù)據(jù)將要傳送到的位置 mov eax,ebx; 機(jī)器代碼:機(jī)器代碼:8b c3 mov eax,ebx; 機(jī)器代碼:機(jī)器代碼:8b 03 mov eax,ebx+esi*4+80h ; 機(jī)器代碼:機(jī)器代碼:8b 84 b3 80 00 00 00 功能演示功能演示 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 4343 傳送指令傳送指令movmov的功能演示的功能演示 返回返回 源操作數(shù)源操作數(shù) src 目的操作數(shù)目的操作數(shù) dest 30h 30h 被傳送的數(shù)據(jù)被傳送的數(shù)據(jù) 第第1 1章章 匯編

37、語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 4444 1.3.2 1.3.2 語(yǔ)句格式語(yǔ)句格式 源程序由語(yǔ)句組成源程序由語(yǔ)句組成 一個(gè)語(yǔ)句常占一行(一個(gè)語(yǔ)句常占一行(masmmasm有續(xù)行符有續(xù)行符“”) 一個(gè)語(yǔ)句不超過(guò)一個(gè)語(yǔ)句不超過(guò)132132個(gè)字符,個(gè)字符,4 4個(gè)部分個(gè)部分 執(zhí)行性語(yǔ)句執(zhí)行性語(yǔ)句:表達(dá)處理器指令(硬指令)表達(dá)處理器指令(硬指令) 標(biāo)號(hào)標(biāo)號(hào): : 硬指令助記符硬指令助記符 操作數(shù)操作數(shù), ,操作數(shù)操作數(shù) ; ;注釋注釋 說(shuō)明性語(yǔ)句說(shuō)明性語(yǔ)句:表達(dá)偽指令,控制匯編方式表達(dá)偽指令,控制匯編方式 名字名字 偽指令助記符偽指令助記符 參數(shù)參數(shù), ,參數(shù)參數(shù), , ; ;注釋注釋 這是這是masm語(yǔ)法,但

38、具有一般性語(yǔ)法,但具有一般性 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 4545 1. 1. 標(biāo)號(hào)與名字標(biāo)號(hào)與名字 標(biāo)號(hào)標(biāo)號(hào):執(zhí)行性語(yǔ)句中:執(zhí)行性語(yǔ)句中 n冒號(hào)分隔冒號(hào)分隔 n表示處理器指令在主存中的邏輯地址表示處理器指令在主存中的邏輯地址 n指示分支、循環(huán)等程序的目的地址指示分支、循環(huán)等程序的目的地址 名字名字:說(shuō)明性語(yǔ)句中:說(shuō)明性語(yǔ)句中 n空格或制表符分隔空格或制表符分隔 n變量名、段名、子程序名等變量名、段名、子程序名等 n反映變量、段和子程序等的邏輯地址反映變量、段和子程序等的邏輯地址 標(biāo)號(hào)和名字是用戶自定義的標(biāo)識(shí)符標(biāo)號(hào)和名字是用戶自定義的標(biāo)識(shí)符 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基

39、礎(chǔ) 4646 標(biāo)識(shí)符(標(biāo)識(shí)符(identifieridentifier) 最多由最多由3131個(gè)字母、數(shù)字及規(guī)定的特殊符號(hào)(如個(gè)字母、數(shù)字及規(guī)定的特殊符號(hào)(如 _ _、 $ $、? ?、 )組成,)組成,不能以數(shù)字開(kāi)頭不能以數(shù)字開(kāi)頭 一個(gè)源程序中,用戶定義的每個(gè)標(biāo)識(shí)符一個(gè)源程序中,用戶定義的每個(gè)標(biāo)識(shí)符必須唯一必須唯一 不能是不能是匯編程序采用的匯編程序采用的保留字保留字 保留字(保留字(reserved wordreserved word)是編程語(yǔ)言本身需要使用)是編程語(yǔ)言本身需要使用 的各種具有特定含義的標(biāo)識(shí)符、也稱為關(guān)鍵字的各種具有特定含義的標(biāo)識(shí)符、也稱為關(guān)鍵字 n硬指令助記符:硬指令助記

40、符: movmov n偽指令助記符:偽指令助記符: bytebyte n操作符:操作符: offsetoffset n寄存器名:寄存器名: eaxeax 取名原則類(lèi)似高級(jí)語(yǔ)言取名原則類(lèi)似高級(jí)語(yǔ)言 但默認(rèn)不區(qū)別大小寫(xiě)字母但默認(rèn)不區(qū)別大小寫(xiě)字母 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 4747 2. 2. 助記符助記符 助記符是幫助記憶指令功能的符號(hào)助記符是幫助記憶指令功能的符號(hào) n硬指令助記符表示處理器指令硬指令助記符表示處理器指令 n偽指令助記符表達(dá)一個(gè)匯編命令偽指令助記符表達(dá)一個(gè)匯編命令 處理器指令示例:傳送指令處理器指令示例:傳送指令 movmov 偽指令示例:字節(jié)變量定義偽指令示例:字

41、節(jié)變量定義 n助記符:助記符:bytebyte (或(或dbdb) n功能:在主存中占用若干的存儲(chǔ)空間,用于保存功能:在主存中占用若干的存儲(chǔ)空間,用于保存 變量值,該變量以字節(jié)為單位存取變量值,該變量以字節(jié)為單位存取 msg byte hello, assembly !,13,10,0 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 4848 3. 3. 操作數(shù)和參數(shù)操作數(shù)和參數(shù) 處理器指令的操作數(shù):表示參與操作的對(duì)象處理器指令的操作數(shù):表示參與操作的對(duì)象 n具體的常量具體的常量 n保存在寄存器的數(shù)據(jù)保存在寄存器的數(shù)據(jù) n保存在存儲(chǔ)器中的變量保存在存儲(chǔ)器中的變量 n逗號(hào)前常是目的操作數(shù),逗號(hào)后常是源

42、操作數(shù)逗號(hào)前常是目的操作數(shù),逗號(hào)后常是源操作數(shù) 偽指令的參數(shù):偽指令的參數(shù): n常量、變量名、表達(dá)式等常量、變量名、表達(dá)式等 n可以有多個(gè),參數(shù)之間用逗號(hào)分隔可以有多個(gè),參數(shù)之間用逗號(hào)分隔 msg byte hello, assembly !,13,10,0 mov eax,offset msg 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 4949 4. 4. 注釋和分隔符注釋和分隔符 語(yǔ)句中分號(hào)后的內(nèi)容是注釋語(yǔ)句中分號(hào)后的內(nèi)容是注釋 n對(duì)指令或程序進(jìn)行說(shuō)明對(duì)指令或程序進(jìn)行說(shuō)明 n匯編程序不對(duì)它們做任何處理匯編程序不對(duì)它們做任何處理 n注釋利于閱讀,應(yīng)養(yǎng)成書(shū)寫(xiě)注釋的好習(xí)慣注釋利于閱讀,應(yīng)養(yǎng)成書(shū)寫(xiě)

43、注釋的好習(xí)慣 語(yǔ)句的語(yǔ)句的4 4個(gè)組成部分要用分隔符分開(kāi)個(gè)組成部分要用分隔符分開(kāi) n標(biāo)號(hào)后的標(biāo)號(hào)后的冒號(hào)冒號(hào) n注釋前的注釋前的分號(hào)分號(hào) n操作數(shù)間和參數(shù)間的操作數(shù)間和參數(shù)間的逗號(hào)逗號(hào) n分隔其他部分采用一個(gè)或多個(gè)分隔其他部分采用一個(gè)或多個(gè)空格空格或或制表符制表符 n注釋使用英文或中文均可注釋使用英文或中文均可 分隔符都是英文標(biāo)點(diǎn)分隔符都是英文標(biāo)點(diǎn) 良好的語(yǔ)句格式有利于編程良好的語(yǔ)句格式有利于編程 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 5050 1.3.3 1.3.3 源程序框架源程序框架 ;eg0000.asm in windows console;eg0000.asm in windo

44、ws console include io32.incinclude io32.inc ; ;包含包含3232位輸入輸出文件位輸入輸出文件 .data.data; ;定義數(shù)據(jù)段定義數(shù)據(jù)段 ; ;數(shù)據(jù)定義數(shù)據(jù)定義(數(shù)據(jù)待填)(數(shù)據(jù)待填) .code.code; ;定義代碼段定義代碼段 start:start:; ;程序執(zhí)行起始位置程序執(zhí)行起始位置 ; ;主程序主程序(指令待填)(指令待填) exit 0exit 0; ;程序正常執(zhí)行結(jié)束程序正常執(zhí)行結(jié)束 ; ;子程序子程序(指令待填)(指令待填) end startend start; ;匯編結(jié)束匯編結(jié)束 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ)

45、 5151 1. 1. 包含偽指令包含偽指令includeinclude 將常用的常量定義、過(guò)程說(shuō)明、共享的子程序?qū)⒊S玫某A慷x、過(guò)程說(shuō)明、共享的子程序 庫(kù)等內(nèi)容進(jìn)行聲明(相當(dāng)于庫(kù)等內(nèi)容進(jìn)行聲明(相當(dāng)于c c和和c+c+語(yǔ)言中,包語(yǔ)言中,包 含頭文件的作用)含頭文件的作用) io32.incio32.inc是配合本書(shū)的包含文件是配合本書(shū)的包含文件 前前3 3個(gè)語(yǔ)句:個(gè)語(yǔ)句: .686.686;32;32位指令位指令 .model .model flat,stdcallflat,stdcall ; ;選擇平展模型,標(biāo)準(zhǔn)調(diào)用規(guī)范選擇平展模型,標(biāo)準(zhǔn)調(diào)用規(guī)范 option option casema

46、p:nonecasemap:none ; ;告知告知masmmasm區(qū)分用戶定義標(biāo)識(shí)符的大小寫(xiě)區(qū)分用戶定義標(biāo)識(shí)符的大小寫(xiě) 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 5252 2. 2. 段的簡(jiǎn)化定義段的簡(jiǎn)化定義 數(shù)據(jù)段定義偽指令數(shù)據(jù)段定義偽指令.data.data創(chuàng)建一個(gè)數(shù)據(jù)段創(chuàng)建一個(gè)數(shù)據(jù)段 代碼段定義偽指令代碼段定義偽指令.code.code創(chuàng)建一個(gè)代碼段創(chuàng)建一個(gè)代碼段 堆棧段由堆棧段由windowswindows維護(hù),用戶不必設(shè)置維護(hù),用戶不必設(shè)置 程序開(kāi)始執(zhí)行的位置程序開(kāi)始執(zhí)行的位置 n應(yīng)用一個(gè)標(biāo)號(hào)(例如:應(yīng)用一個(gè)標(biāo)號(hào)(例如:startstart) n匯編結(jié)束匯編結(jié)束endend指令的參

47、數(shù)指令的參數(shù) 應(yīng)用程序執(zhí)行結(jié)束應(yīng)用程序執(zhí)行結(jié)束 n語(yǔ)句語(yǔ)句“exit 0”exit 0”將控制權(quán)交還操作系統(tǒng)將控制權(quán)交還操作系統(tǒng) n提供給操作系統(tǒng)一個(gè)返回代碼提供給操作系統(tǒng)一個(gè)返回代碼 n通常用通常用0 0表示執(zhí)行正確表示執(zhí)行正確 源程序匯編結(jié)束源程序匯編結(jié)束endend語(yǔ)句語(yǔ)句 執(zhí)行結(jié)束執(zhí)行結(jié)束匯編結(jié)束匯編結(jié)束 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 5353 例例1-11-1信息顯示程序信息顯示程序 在數(shù)據(jù)段給出這個(gè)字符串形式的信息:在數(shù)據(jù)段給出這個(gè)字符串形式的信息: ; ;數(shù)據(jù)段數(shù)據(jù)段 msgmsgbyte hello, assembly!,13,10,0byte hello, ass

48、embly!,13,10,0 ; ;定義要顯示的字符串定義要顯示的字符串 在代碼段編寫(xiě)顯示字符串的程序:在代碼段編寫(xiě)顯示字符串的程序: ; ;代碼段代碼段 movmov eax,offseteax,offset msgmsg ; ;指定字符串的偏移地址指定字符串的偏移地址 call call dispmsgdispmsg ; ;調(diào)用調(diào)用i/oi/o子程序顯示信息子程序顯示信息 完整程序完整程序 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 5454 匯編語(yǔ)言源程序匯編語(yǔ)言源程序eg0101.asmeg0101.asm ;eg0101.asm;eg0101.asm include io32.inci

49、nclude io32.inc .data.data; ;數(shù)據(jù)段數(shù)據(jù)段 msgmsgbyte hello, assembly!,13,10,0byte hello, assembly!,13,10,0 .code.code; ;代碼段代碼段 start:start:; ;程序執(zhí)行起始位置程序執(zhí)行起始位置 movmov eax,offseteax,offset msgmsg call call dispmsgdispmsg exit 0exit 0 ; ;程序正常執(zhí)行結(jié)束程序正常執(zhí)行結(jié)束 end startend start; ;匯編結(jié)束匯編結(jié)束 返回返回 hello, assembly ! 運(yùn)

50、行結(jié)果 對(duì)比對(duì)比 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 5555 信息顯示的信息顯示的c c語(yǔ)言源程序語(yǔ)言源程序 #include #include intint main() main() printf(helloprintf(hello, world !n);, world !n); exit(0);exit(0); 返回返回 hello, world ! 運(yùn)行結(jié)果 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 5656 3. 3. 輸入輸出子程序庫(kù)輸入輸出子程序庫(kù) 匯編程序通常不提供任何函數(shù)或程序庫(kù)匯編程序通常不提供任何函數(shù)或程序庫(kù) 必須利用操作系統(tǒng)的編程資源必須利用操作系統(tǒng)的編程資源

51、本書(shū)配套鍵盤(pán)輸入和顯示器輸出的本書(shū)配套鍵盤(pán)輸入和顯示器輸出的i/oi/o子程序子程序 含含io32.incio32.inc和和io32.libio32.lib,需要包含文件聲明,需要包含文件聲明 源程序文件開(kāi)始使用包含命令聲明源程序文件開(kāi)始使用包含命令聲明 include io32.incinclude io32.inc 子程序調(diào)用方法子程序調(diào)用方法 mov eax,mov eax,入口參數(shù)入口參數(shù) call call 子程序名子程序名 子程序名子程序名 dispmsgdispmsg 入口參數(shù)入口參數(shù) eaxeax字符串地址字符串地址 功能說(shuō)明功能說(shuō)明 顯示字符串(以顯示字符串(以0 0結(jié)尾)

52、結(jié)尾) 輸入子程序輸入子程序輸出子程序輸出子程序 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 5757 常用輸出子程序常用輸出子程序 返回返回 子程序名子程序名功能說(shuō)明功能說(shuō)明 dispmsg顯示字符串(以顯示字符串(以0結(jié)尾)結(jié)尾) dispc顯示一個(gè)字符顯示一個(gè)字符 dispcrlf 光標(biāo)回車(chē)換行,到下一行首個(gè)位置光標(biāo)回車(chē)換行,到下一行首個(gè)位置 disprd顯示顯示8個(gè)個(gè)32位通用寄存器內(nèi)容位通用寄存器內(nèi)容 disprf顯示顯示6個(gè)狀態(tài)標(biāo)志的狀態(tài)個(gè)狀態(tài)標(biāo)志的狀態(tài) disphd以十六進(jìn)制形式顯示以十六進(jìn)制形式顯示8位數(shù)據(jù)位數(shù)據(jù) dispuid顯示無(wú)符號(hào)十進(jìn)制整數(shù)顯示無(wú)符號(hào)十進(jìn)制整數(shù) disps

53、id顯示有符號(hào)十進(jìn)制整數(shù)顯示有符號(hào)十進(jìn)制整數(shù) 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 5858 常用輸入子程序常用輸入子程序 返回返回 子程序名子程序名功能說(shuō)明功能說(shuō)明 readmsg輸入一個(gè)字符串(回車(chē)結(jié)束)輸入一個(gè)字符串(回車(chē)結(jié)束) readc輸入一個(gè)字符(回顯)輸入一個(gè)字符(回顯) readhd輸入輸入8位十六進(jìn)制數(shù)據(jù)位十六進(jìn)制數(shù)據(jù) readuid輸入無(wú)符號(hào)十進(jìn)制整數(shù)(輸入無(wú)符號(hào)十進(jìn)制整數(shù)(2321) readsid 輸入有符號(hào)十進(jìn)制整數(shù)輸入有符號(hào)十進(jìn)制整數(shù) (2312311) 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 5959 1.3.4 1.3.4 開(kāi)發(fā)過(guò)程開(kāi)發(fā)過(guò)程 第第1 1章章

54、 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 6060 1. 1. 開(kāi)發(fā)軟件開(kāi)發(fā)軟件 抽取抽取masm 6.11masm 6.11和和visual c+ 6.0visual c+ 6.0集成開(kāi)發(fā)環(huán)境中有集成開(kāi)發(fā)環(huán)境中有 關(guān)文件構(gòu)造基本開(kāi)發(fā)軟件包關(guān)文件構(gòu)造基本開(kāi)發(fā)軟件包 nmasmmasm主目錄:主目錄:i/oi/o庫(kù)、包含文件及批處理文件庫(kù)、包含文件及批處理文件 nbinbin子目錄:進(jìn)行匯編、連接及配套程序文件子目錄:進(jìn)行匯編、連接及配套程序文件 nwindbgwindbg子目錄:調(diào)試程序子目錄:調(diào)試程序windbg.exewindbg.exe 默認(rèn)安裝到默認(rèn)安裝到d d分區(qū)的分區(qū)的masmmasm目錄目錄

55、快速開(kāi)發(fā)方法快速開(kāi)發(fā)方法 進(jìn)入進(jìn)入masmmasm目錄目錄 雙擊批處理文件雙擊批處理文件win32.batwin32.bat 生成可執(zhí)行文件生成可執(zhí)行文件 make32 eg0101make32 eg0101 快速開(kāi)發(fā)過(guò)程快速開(kāi)發(fā)過(guò)程 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 6161 快速開(kāi)發(fā)過(guò)程快速開(kāi)發(fā)過(guò)程 返回返回 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 6262 2. 2. 源程序的編輯源程序的編輯 源程序文件是無(wú)格式文件、純文本類(lèi)型源程序文件是無(wú)格式文件、純文本類(lèi)型 以以asmasm為擴(kuò)展名,可使用任何文本編輯器為擴(kuò)展名,可使用任何文本編輯器 nwindowswindows的記事本

56、的記事本notepadnotepad n其他程序開(kāi)發(fā)工具中的編輯環(huán)境其他程序開(kāi)發(fā)工具中的編輯環(huán)境 n專注于源程序編寫(xiě)的編輯軟件,例如專注于源程序編寫(xiě)的編輯軟件,例如ultraedit32ultraedit32 本書(shū)配套開(kāi)發(fā)軟件本書(shū)配套開(kāi)發(fā)軟件masmmasm主目錄提供主目錄提供 nnotepad2.exenotepad2.exe程序程序 本書(shū)源程序文件的命名規(guī)則本書(shū)源程序文件的命名規(guī)則 eg例題,例題,ex習(xí)題習(xí)題 前前2位數(shù)字章號(hào),位數(shù)字章號(hào),后后2位數(shù)字位數(shù)字序號(hào)序號(hào) 第第1 1章章 匯編語(yǔ)言基礎(chǔ)匯編語(yǔ)言基礎(chǔ) 6363 3. 3. 源程序的匯編源程序的匯編 生成目標(biāo)模塊文件(生成目標(biāo)模塊文件(.obj.obj) masm 6.xmasm 6.x的匯編程序是的匯編程序是ml.exeml.exe binml /c /binml /c /coffcoff eg0101.asm eg0101.asm n參數(shù)參數(shù)“/

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論