




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 13.1概述概述 機器語言面向硬件,高級語言面向編程員。匯編語言是最接近機器語言的高級語言。用匯編語言編寫的程序稱匯編語言源程序。源程序要經(jīng)過匯編、連接、加載成可執(zhí)行程序。任何可執(zhí)行程序可反匯編成匯編語言源程序匯編語言源程序匯編(MASM)機器碼LINK可執(zhí)行程序 21. 一個程序可用多個文件寫成2. 存儲器地址用一個名字替代且明確類型3.同一地址可具有不同類型且分別以不同名字區(qū)別4.能對給出的表達式進行計算5.具有宏功能。 3匯編語言源程序格式匯編語言源程序格式(實驗指示書實驗指示書P11)NAME MY_PROGRAM NAME MY_PROGRAM DATA SEGMENTDATA S
2、EGMENTBUFFER1 DB 0,1,2,3,4,5,6,7,8,9,10,11,12, 13,14,15BUFFER2 DB 10H DUP(0) MESS DB HAVE DONE,0DH,0AH,0DH,0AH,$ DATA ENDSDATA ENDSSTACK SEGMENT STACK SEGMENT STACKSTACK; ;自動安裝堆棧段自動安裝堆棧段 DB 100 DUP ( ? );堆棧深度堆棧深度100B100B STACK ENDSSTACK ENDS 邏輯數(shù)據(jù)段邏輯堆棧段 4CODE SEGMENTCODE SEGMENT ASSUME CSASSUME CS:CO
3、DECODE,DSDS:DATADATA, ESES:DATADATA,SSSS:STACKSTACKSTARTSTART: MOV AXMOV AX,DATADATA MOV DSMOV DS,AXAX; ;建立數(shù)據(jù)段建立數(shù)據(jù)段 MOV ESMOV ES,AXAX; ;數(shù)據(jù)段數(shù)據(jù)段, ,附加數(shù)據(jù)段重合附加數(shù)據(jù)段重合 LEA SILEA SI,BUFFER1;BUFFER1;源指針源指針 LEA DILEA DI,BUFFER2;BUFFER2;目標指針目標指針 MOV CXMOV CX,10H ;10H ;計數(shù)器計數(shù)器NEXTNEXT: MOV ALMOV AL,SISI ; ;取源數(shù)據(jù)取源
4、數(shù)據(jù) MOV DIMOV DI,ALAL; ;存到目標存到目標邏輯代碼段 5 INC SI INC SI; ;修改源指針修改源指針 INC DIINC DI; ;修改目標指針修改目標指針 DEC CX ;DEC CX ;計數(shù)減計數(shù)減 1 1 JNZ NEXT ; JNZ NEXT ;重復傳重復傳1616字節(jié)字節(jié) LEA DXLEA DX,MESSMESS MOV AHMOV AH,9 9 INT 21HINT 21H MOV AHMOV AH,4CH4CH INT 21HINT 21HCODE ENDSCODE ENDSEND START END START ; ; 匯編結(jié)束,第一句執(zhí)行的語句
5、為匯編結(jié)束,第一句執(zhí)行的語句為 ; STARTSTART邏輯邏輯代碼段(續(xù)續(xù));顯示顯示提示信提示信息息;返回操返回操作系統(tǒng)作系統(tǒng) 6一、縱向分成一、縱向分成若干若干邏輯段邏輯段, ,段數(shù)不限段數(shù)不限邏輯段邏輯段 組裝成可執(zhí)行程序的物理段(組裝成可執(zhí)行程序的物理段(4 4個)個)二、橫向分四個域:二、橫向分四個域:名字名字 操作符操作符 操作數(shù)操作數(shù) ;注釋;注釋(一)名字名字由字母、數(shù)字等組成由字母、數(shù)字等組成( (但不能以數(shù)字開頭但不能以數(shù)字開頭) )。1. 例如例如 段名、過程名、模塊名、段名、過程名、模塊名、 變量名、標號名等變量名、標號名等名字經(jīng)常表示名字經(jīng)常表示符號地址符號地址,主
6、要是主要是變量、標號變量、標號 7定義在定義在數(shù)據(jù)段數(shù)據(jù)段(或附加數(shù)據(jù)段)的名字。(或附加數(shù)據(jù)段)的名字。 有兩方面屬性:有兩方面屬性:地址地址 (段基址和偏移地址)(段基址和偏移地址)內(nèi)容內(nèi)容類型類型 (字節(jié)(字節(jié)1 1/字字2 2/雙字雙字4 4)( (運算符運算符TYPETYPE) )。在在匯編匯編操作時對變量操作時對變量引用地址,引用地址,在在執(zhí)行執(zhí)行指令時對變量指令時對變量引用內(nèi)容。引用內(nèi)容。變量變量一般一般都按定義的類型引用。都按定義的類型引用。 8 標號:(程序標號)標號:(程序標號)定義在程序段(加冒號:)的名字。定義在程序段(加冒號:)的名字。代表一條指令(首字節(jié))的地址。代
7、表一條指令(首字節(jié))的地址。有兩方面屬性:有兩方面屬性:地址屬性(段基址和偏移地址)。地址屬性(段基址和偏移地址)。類型屬性(遠類型屬性(遠2/近近1)。)。 標號在程序中一般可理解成地址。標號在程序中一般可理解成地址。和標號類似的還有和標號類似的還有過程名:過程名:過程名過程名代表一個完整子程序的第一條可執(zhí)代表一個完整子程序的第一條可執(zhí)行指令的地址(入口)。行指令的地址(入口)。 91. 指令助記符:指令助記符:在匯編時變成指令的操作碼在匯編時變成指令的操作碼在執(zhí)行程序時完成在執(zhí)行程序時完成 ( 二)操作符(必有)二)操作符(必有)由指令助記符等構(gòu)成的操作和操作碼一一對由指令助記符等構(gòu)成的操
8、作和操作碼一一對應(yīng)應(yīng)2. 偽指令(偽操作):偽指令(偽操作):指示性操作指示性操作 指示指示MASM和和LINK程序工作程序工作在匯編在匯編和和連接連接過程中過程中完成完成偽指令的操作符本身偽指令的操作符本身無機器碼無機器碼對應(yīng)對應(yīng) 10宏指令宏指令本身不是本身不是CPU原有的指令,原有的指令,用戶提前將一段程序用戶提前將一段程序(多條指令、偽指令多條指令、偽指令)定定義義成一條宏指令成一條宏指令在源程序中將它當一般指令一樣在源程序中將它當一般指令一樣調(diào)用,調(diào)用,在匯編時在匯編時展開展開成成 原定義的各條指令的原定義的各條指令的機器碼機器碼。執(zhí)行程序時逐執(zhí)行程序時逐條指令條指令完成完成 。 1
9、1基本操作數(shù),基本操作數(shù),或基本操作數(shù)再加上或基本操作數(shù)再加上運算符運算符構(gòu)成的構(gòu)成的表達式表達式。0個、個、1個或多個,用逗號分隔。個或多個,用逗號分隔。用分號引出的說明語句,不被匯編處理。用分號引出的說明語句,不被匯編處理。建議建議開始不要用漢字開始不要用漢字寫注釋,以免輸入了漢寫注釋,以免輸入了漢字的標點,匯編時出錯。字的標點,匯編時出錯。(四)注釋(四)注釋 121. 常數(shù):允許用多種不同數(shù)制輸入,但匯編后都要變成二進制: 0FFH 1111 1111B 0AH 0000 1010B輸入多位BCD數(shù)需裝扮成裝扮成 二進制或十六進制20 0001 0100B= 14H20H 0010 0
10、000B 后者按BCD理解是十進制的20。 字符(包括串)匯編成其 ASCII碼 A 41H匯編成 13 MOVSI, 0100H MOV DI, 0114H CLC; (CF) 0 MOV CL, 10 N1: MOVAL, SI MOVBL, 10SI ADC AL, BL DAA MOVDI, AL INCSI INCDI DECCL JNZN1 142. 寄存器:執(zhí)行指令時引用寄存器的內(nèi)容例如: IN AL , 40H ADD AL , 3 ;AL內(nèi)容加3偽指令和匯編運算不能引用寄存器的內(nèi)容。例如: DT1 DB AL MOV BL, AL1都不行!因為偽指令在匯編時完成,匯編時某寄存
11、器的內(nèi)容和用戶程序執(zhí)行到這一句時的內(nèi)容是兩回事。 153. 標號:用于表示JMP / CALL / LOOP等的目標4. 變量:匯編時只能取地址(不能取內(nèi)容)DATA SEGMENTDT1 DB 9,8DATA ENDS .CODE SEGMENT . MOV AL,DT1 ;匯編后是直接尋址;匯編后是直接尋址 MOV AL , DT1+1 ; 匯編時取地址匯編時取地址+1,即等于,即等于DT1下一個單元的地址下一個單元的地址標號和變量合稱存儲器操作數(shù),有地址、內(nèi)容兩方面的屬性:匯編時取地址;執(zhí)行指令時才能取內(nèi)容 165. 運算表達式基本操作數(shù)再加上運算符 算術(shù)運算: + , - , * ,
12、/ , MOD , SHL , SHR 邏輯運算: AND , OR , XOR , NOT 關(guān)系運算: EQ , NE , LT , LE , GT , GE關(guān)系運算的結(jié)果:為假 = 0 為真 = -1(匯編中)最后以補碼賦給reg / mem ( FFH / FFFFH 等) 17 OFFSET 提取內(nèi)存操作數(shù)的偏移地址 SEG 提取內(nèi)存操作數(shù)的段基址 TYPE 提取內(nèi)存操作數(shù)的類型 LENGTH 取用DUP定義的變量元素的個數(shù) SIZE 取用DUP定義的變量所占字節(jié)數(shù) 18 LEA BX, BUFFER ;( LEA指令只有)立即尋址 MOV BX, BUFFER ; 直接尋址 執(zhí)行后
13、BX的內(nèi)容不同 LEA BX, BUFFER MOV BX, OFFSET BUFFER ; 立即尋址 執(zhí)行后 BX的內(nèi)容相同 19 PTR 指定臨時類型(僅當前語句有效)例:DT1 DB 0FFH,3H INC DT1INC WORD PTR DT1 則 3FFH+1 = 400H 即,(DT1)=0, (DT1+1)=4但這一句之外DT1仍是字節(jié)類型;僅僅(DT1)=0,(DT1+1)不變不變 20ARWDW 1340H MOVAX , ARW ; AX=1340HMOVBL , ARB ; BL=40H可以反復用這兩個名字,以這兩種不同類型讀寫這一共同的內(nèi)存區(qū)域ARBEQU THISBY
14、TE各種運算符的優(yōu)先級表P 127 表3.2; 不同的名字占用共同的內(nèi)存兼有不同的類型 21偽操作符在匯編過程中完成,偽操作符在匯編過程中完成,本身無操作碼本身無操作碼1. 變量定義類變量定義類功能功能:定義定義類型:類型:DB、DW、DD 分配存儲器:確定所用存儲器分配存儲器:確定所用存儲器 賦予變量初值賦予變量初值 DATA DB 100, 0FFH 變量名字變量名字 偽操作符偽操作符 操作數(shù)(初值)操作數(shù)(初值) 22定義定義DB:定義字節(jié)類型變量:定義字節(jié)類型變量 DT1DT1DBDB1 1,7 7 DT2DT2DB ADFDB ADF一個變量內(nèi)含多個字節(jié)的元素,一個變量內(nèi)含多個字節(jié)的
15、元素,多字節(jié)順序排列地址連續(xù)。多字節(jié)順序排列地址連續(xù)。用途:定義字節(jié)類型數(shù)值。用途:定義字節(jié)類型數(shù)值。 定義字符串定義字符串(ASCII(ASCII碼)碼)變量名變量名3個元素個元素 01H 07H 41H 44H 46H DT1DT11 DT2DT21 上一個上一個 數(shù)據(jù)段數(shù)據(jù)段DT22 23一個變量內(nèi)可以包含多個一個變量內(nèi)可以包含多個相同類型相同類型的元素,的元素,元素的類型稱元素的類型稱TYPE 字節(jié)字節(jié)1、字、字2、雙字、雙字4.元素的個數(shù)稱元素的個數(shù)稱LENGTH變量的總字節(jié)數(shù)稱變量的總字節(jié)數(shù)稱SIZE SIZE LENGTH TYPE變量名始終指向第一個元素,變量名始終指向第一個元
16、素,變量名變量名1、2是偏移地址加,相加后還是地址,是偏移地址加,相加后還是地址,既不是元素內(nèi)容加也不是元素下標的加。既不是元素內(nèi)容加也不是元素下標的加。例如上頁中:例如上頁中:MOV AL , DT11 ; AL7,而不是,而不是2MOV AL , DT21 ; AL44H,而不是,而不是42H 241.定義單字節(jié)類型數(shù)值 源程序中可寫不同進制,匯編后全變?yōu)槎M制, 多個數(shù)值用逗號分隔,順序存放2.定義字符串 尤其是提示信息 25匯編時只能取存儲器操作數(shù)存儲器操作數(shù)地址,匯編運算中對存儲器操作數(shù)存儲器操作數(shù)的運算也是地址運算,運算結(jié)果一般還是地址。匯編時不能取存儲器操作數(shù)存儲器操作數(shù)內(nèi)容,執(zhí)
17、行指令時才能取其內(nèi)容。DT1 DB 9,8MOV AL , DT1+1 ;匯編時取地址+1,執(zhí)行指令時才能取其內(nèi)容:AL8 26DWDW:定義:定義字字類型變量類型變量 以字為單位定義,在存儲以字為單位定義,在存儲器中低字節(jié)數(shù)放在地址器中低字節(jié)數(shù)放在地址較小單元、高字節(jié)數(shù)放較小單元、高字節(jié)數(shù)放在地址加在地址加1 1單元。單元。反序排反序排列!列!DT1 DW 5DT1 DW 5DT2 DW ABDT2 DW AB DW DT1 DW DT1DT1DT1的偏移地址是的偏移地址是00010001050042H41H0100DT1DT11DT2DT21上一個上一個地址地址DT2200010203040506DT23 271.定義雙字節(jié)類型數(shù)值 多個字順序排列、字內(nèi)高低字節(jié)反序排列 立即數(shù)高位的零可以省略不寫2.定義定義存儲器操作數(shù)存儲器操作數(shù)的偏移地址的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國血庫保存箱行業(yè)發(fā)展分析及投資前景預測研究報告
- 洞穴生物能量代謝-洞察及研究
- 碳中和路徑-第1篇-洞察及研究
- 高校老師個人年度工作方案模板
- 兒童生活技能課件
- 多模態(tài)傳感器數(shù)據(jù)融合與特征提取-洞察及研究
- 兒童焦慮障礙教學課件
- 水池管子維修方案
- 兒童潛能開發(fā)課件視頻
- 混凝土背墻施工方案
- 粉末涂料考試試題及答案
- 高爾夫各品牌草坪機械性能對比
- 2023上海初中英語詞性轉(zhuǎn)換集合一
- 高考英語真題科技說明文閱讀理解精選訓練含答案
- 2016-2022年全國高考英語讀后續(xù)寫及概要寫作試題真題及范文
- 2023年中工國際工程股份有限公司招聘筆試題庫及答案解析
- YS/T 534.2-2007氫氧化鋁化學分析方法第2部分:燒失量的測定重量法
- 醫(yī)院護理操作規(guī)范-協(xié)助患者進食、水(2019年版)
- 高三數(shù)學備考策略課件
- DB61∕941-2018 關(guān)中地區(qū)重點行業(yè)大氣污染物排放標準
- ICD-10惡性腫瘤編碼整理版
評論
0/150
提交評論