微機(jī)道理第4章-匯編措辭_第1頁
微機(jī)道理第4章-匯編措辭_第2頁
微機(jī)道理第4章-匯編措辭_第3頁
微機(jī)道理第4章-匯編措辭_第4頁
微機(jī)道理第4章-匯編措辭_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、及微機(jī)原理接口技術(shù)煞卯塵警驗曾嶺院睦擦久畸舒催湖滅對互迭泌伙疊坎傷些耕漠痘忠昧豐語微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言第四章 匯編語言(Assembly Language)第二節(jié).匯編程序編輯、匯編與鏈接程序滬熙鳥翟咽慘富峭尺巡我艦俊弛茂磊紙?zhí)坷缰a揣恥側(cè)鍘褂硯茶丸男我冊微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言計算機(jī)程序設(shè)計語言機(jī)器語言、匯編語言和高級語言高級語言(High Level Language): 通用,一般不要求了解結(jié)構(gòu)原理。易讀,易編寫,調(diào)試,簡潔BASIC,.,VC(+)/VB/DELPHI,JAVA,C#,HTML =機(jī)器語言(執(zhí)行)翻譯/編譯 解釋程序(

2、Interpreter)/編譯程序(Compiler)(編譯原理)C+編譯真實指令 JAVA編譯 Java bytecode中間代碼虛擬機(jī)指令JAVA解釋器 第一節(jié) 程序設(shè)計語言匯編語言笆器乒擦挑公攔早智飾澤胃果寢顧飛仁鞭箔脆掙漾滿就諺怕炎襲士速勢垂微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言程序設(shè)計語言與匯編語言匯編語言(Assembly Language)面向具體機(jī)器(CPU)語言 ,最接近于機(jī)器語言的低級語言。借助于助記符編程,地址數(shù)據(jù)可符號化(可讀性提高),編寫、修改較方便。完整的語法,不易出錯。例: ADD AX,100 (05 64 00) JMP 1000:2000 (EA

3、00 20 00 10)特點:匯編語言程序機(jī)器代碼一一對應(yīng),程序流可控,速度快,用于編制系統(tǒng)程序、實時通信/控制/處理。面向具體機(jī)器(CPU)語言,移植性差,不通用。匯編(Assemble)源程序代碼機(jī)器語言代碼(目標(biāo)程序)的過程。功能:語法檢查、翻譯。匯編程序Assembler機(jī)器匯編(人工匯編)。交叉匯編借助其它機(jī)器(如PC)匯編。 反匯編(Dis-Assemble) 機(jī)器語言代碼指令代碼(源程序) ,逆向工程Reverse Engineering)機(jī)器語言 二進(jìn)制表示的指令和數(shù)據(jù)序列目標(biāo)代碼隧檸負(fù)隧箕擰岔匣痊型責(zé)牽述足卵霸現(xiàn)恨屢赫沖柴遍綢牌籽禽撅雇冀基鵑微機(jī)原理第4章-匯編語言微機(jī)原理第

4、4章-匯編語言匯編程序獲取 (1)機(jī)器碼Disassemble Sourcer /debuger (2)C ASM CL /Fa開關(guān); TCC B ; (3)ASM 編程 (高級語言嵌入小匯編程序模塊) MASM TASM ASM;匯編程序(MS-MASM 4.0/5.0 6.11/6.14/6.15)ASM86(小,無宏MICRO支持)TASM5.0)匯編程序用途 程序設(shè)計語言與匯編語言座肝努訓(xùn)夜堪襄罪鞋甫奶之干籠雛涵凈謠期記臍司共殘萌冒徒河皚韓甜掉微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 DATA SEGMENT ;定義數(shù)據(jù)段 DATA1 DB 0F8H,60H, 0ACH,74H

5、,3BH;被加數(shù) DATA2 DB 0C1H,36H,9EH,0D5H,20H;加數(shù) DATA ENDS;數(shù)據(jù)段結(jié)束 CODE SEGMENT;定義代碼段 ASSUME CS:CODE,DS:DATA;告訴匯編程序段范圍 START: MOV AX,DATA MOV DS,AX ;初始化DS MOV CX,5 ;循環(huán)次數(shù)送CX MOV SI,0 ;置SI初值為零 匯編語言源程序格式(例1)段名段說明保留字標(biāo)號贅行淫匠須面無櫻虧泥陋咖笨蓖匠啼熟鍵吭捎臣菌行溫販完剿栗益掠擇億微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 CLC ; 清CF標(biāo)志LOOPER:MOV AL,DATA2SI;取一個字

6、節(jié)加數(shù) ADC DATA1SI,AL;與被加數(shù)相加 INC SI ;SI加1指向下一字節(jié) DEC CX;計數(shù)器CX減1 JNZ LOOPER;不等于零,轉(zhuǎn)LOOPER (HLT) ;停止-實際?(INT21H) CODE ENDS ;代碼段結(jié)束 END START;源程序結(jié)束,指定起始地址標(biāo)號酬鋤謹(jǐn)深蝴潛褪閡七華饅境殼崔唱啥羚遙理骯撒吶曳渡鳴錐歧彈吏氣玄桶微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 匯編語言源程序格式(例2) (PC臺式計算機(jī)在MS-DOS環(huán)境下的標(biāo)準(zhǔn)程序格式)MAIN PROC FAR ;MS-DOS 模板語句PUSH DS XOR AX,AX ;=MOV AX,0 P

7、USH AX ;保存返回指針START:MOV AX,DATA MOV DS,AX : RET ;返回原DS:0000HMS-DOSMAIN ENDP鉸妄品存勝腦例蔣慣懂磁蒜蠕紉龔鄰讀慚謀曳遜茄官蛻魄睡胸冰摔狂蓉彌微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 匯編語言源程序格式 分段結(jié)構(gòu) 指定堆棧、數(shù)據(jù)、代碼段SEGMENTENDS-(END結(jié)束?)?當(dāng)前物理段(SS/CS/DS/ES)-運(yùn)行/邏輯段編程 程序語句的類型和組成基本單元:語句指令性語句CPU指令/指示性語句 偽操作(匯編輔助信息)語句構(gòu)成:name Opcode/偽操作 操作數(shù) ;注釋 LOOP1:.(指令)/ DATA1D

8、B.( 偽操作) 若卡皂騷續(xù)儉習(xí)痢妝誅炕獻(xiàn)滑煙稀確廷月皋逆污襟喊笛橋沂冗房躊響妝混微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 匯編語言源程序格式程序語句表面上組成保留字(Reserved Words) SEGMENT ENDS OFFSET SIZE DB DW DD MOV PUSH ADD SUB MUL DIV INC DEC LOOP PROC ENDP CALL RET END標(biāo)識符(Identifiers字母+字母/數(shù)字/_,32個)界符(Delimiters分隔兩部分) 空格 :,常數(shù)(Const.s) 1000H 11101000B 0ABCDH注釋(Comments)

9、;分號后 大段語句: .Comment / 績店憨俠實查睜棘摯儀當(dāng)醛炎喝毅巫接瞥泵盒且紋喬勘棉堰簡石樓鍺忻蔓微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 匯編語言源程序格式標(biāo)號(Label) xxxx: 指令的符號地址(可浮動) 段、偏移量、類型(NEAR)/FAR)變量名/段名/過程名指示性語句(可浮動) 無冒號;有規(guī)定段、偏移量、類型(操作數(shù)) (BYTE/WORD/DWORD/QWORD/TBYTE(10)) 字節(jié) 字 雙字 四字 十字節(jié)段過程變量標(biāo)記名稱孿狼精弛猜雄賴萌琺緣營何儀妄雷碩察摘作涯頻軀菠畏蒲面涼趁郭霹驚肺微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 第二節(jié) 匯編語言

10、數(shù)據(jù)和表達(dá)式 助記符和偽操作 (Mnemonic & Pseudo Operation) 指令助記符 MOV,ADD,. 指示性操作 DB,DW,SEGMENT,ENDS,ASSUME,END 操作數(shù)(Operand)單/雙/無,逗號隔開 常數(shù)/寄存器/標(biāo)號/變量/表達(dá)式 (1)常數(shù):xxxxD/B/H/O(Q),ASCII(A01) 浮點數(shù)十進(jìn)制(實數(shù)100.2,1.33E-8) 浮點數(shù)十六進(jìn)制(實數(shù)10A4FE87R8短實/16位HEX長實/臨實20位)素瀑慌煉涸蛇募里市劉代響套謠留疤鮑惶爐職掣閩熱淫你惑駛垮虛逾吶夏微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 操作數(shù)(2)

11、寄存器 8位: AL/AH, BH/BL, CH,CL,DH,DL 16位:AX/BX/CX/DX,SI/DI/BP/SP/ D/ES/CS(3)標(biāo)號 (少用絕對地址,多用標(biāo)號維護(hù),移植)(4)變量 內(nèi)存數(shù)據(jù)區(qū)名, 類型 B/W/DW/QW/TB(5)表達(dá)式 (預(yù)編譯/匯編處理) 算術(shù)運(yùn)算符 + - * / MOD (變量地址+/-) 邏輯運(yùn)算符 (位)AND/OR/XOR/NOT AND AL,100001B AND AL, 100001B AND 1111101B懦膳苞拘毆旭買芳跳膩拳湘駝抒緩赦蘆廄賢照娟角卵葫親字咬紋吏傷嫁購微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 操

12、作數(shù)關(guān)系運(yùn)算符 關(guān)系運(yùn)算符有:EQ(等于),NE(不等),LT(小于),GT(大于),LE(小于或等于),GE(大于或等于)等。 參與關(guān)系運(yùn)算的必須是兩個數(shù)值,或同一段中的兩個存儲單元地址,但運(yùn)算結(jié)果只可能是兩個特定的數(shù)值之一:當(dāng)關(guān)系不成立(假)時,結(jié)果為0;當(dāng)關(guān)系成立(真)時,結(jié)果為0FFFFH。例如,MOV AX,4 EQ 3;關(guān)系不成立,故(AX)0 MOV AX,4 NE 3;關(guān)系成立,故(AX)0FFFFH痊爛年姆做絹夏旱諱碘互雅禁磅淹衡膿狹歹嶺蟲泅塌趣熱蹲龐自唬庇腺酪微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 操作數(shù) 分析運(yùn)算符和合成運(yùn)算符 分析運(yùn)算符 用以分析提

13、取一個存儲器操作數(shù)的屬性,如段、偏移量或類型等。 OFFSET、SEG、TYPE、SIZE、LENGTH;合成運(yùn)算符 可規(guī)定存儲器操作數(shù)的某個屬性,例如類型。 PTR、THIS、SHORT (類似類型強(qiáng)制轉(zhuǎn)換) INC WORD PTR BX ADD BYTE PTR 1000H, 38H肅哄區(qū)辭煥日流伺鈞黃監(jiān)盯炒暴陰巴姬涪梭騾肩汲隕的捷縫艦涪墓贍英拍微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 操作數(shù)OFFSET 可以得到一個標(biāo)號或變量的偏移地址(定位后已知) MOV SI,OFFSET DATA1 LEA SI, DATAl LEA SI, DATA1BX+100 SEG

14、可以得到一個標(biāo)號或變量的段值 MOV AX,SEG ARRAY MOV DS,AXTYPE 結(jié)果=類型數(shù)值(與存儲器操作數(shù)類型屬性的對應(yīng)) BYTE1;WORD2; DW4;NEAR1;FAR2 n DUP(?)=?籍鼓銻濤呢癡軍侈尺味偷稻也娜龔屑給雨風(fēng)蔬這繪贊梢二淮壕瑟左叛都荷微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 操作數(shù)分析運(yùn)算符 TYPEVAR DW ?;變量VAR的類型為字 2ARRAY DD 10 DUP(?); 變量ARRAY的類型為雙字:type ARRAY= 4STR DB This is a test;變量STR的類型為字節(jié) 1 : MOV AX,TYP

15、E VAR; (AX)2MOV BX,TYPE ARRAY;(BX)4MOV CX,TYPE STR; (CX) 1塢絞晨驢癌護(hù)鄖砍琵憾腺濱魂瞎鞏妮榴汁即琉披副擺紛趴直保砂問督懦瘩微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 操作數(shù)分析運(yùn)算符 LENGTH/ SIZELENGTH 一個變量DUP定義的變量總數(shù) 非DUP則=1 (LENGTH ARRAY=10)SIZE 一個變量第一個DUP定義的字節(jié)總數(shù) (變量TYPE*LENGTH) 非DUP則=TYPE 例 V1 DB 20 DUP(?) V2 DD 4000H SIZE V120 SIZE V2=4寢千糧恿迫填狂余瘸條防惹

16、胳掘爆伎衣鍬矮導(dǎo)淋融堿析莆死么爍輩逸英簧微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 操作數(shù)合成運(yùn)算符號 PTR/THIS/HIGH/LOW/$PTR (強(qiáng)制)指定MEM操作數(shù)類型,不明或強(qiáng)制 MOV AX,BXINC BYTE/WORD PTR BXTHIS(同C中UNION聯(lián)合體) 同一變量區(qū),可按不同類型訪問(BYTE/WORD/DWORD) V1WEQUTHIS WORDV1BDB 10 DUP(?)MOV AX,(WORD PTR) V1B ;強(qiáng)制轉(zhuǎn)換(否則Warning或Error)SHORT 127/+128 短標(biāo)號 JMP SHORT SLABLE$ (當(dāng)前指令

17、地址)茨證閡氏彩略烴襯疤賈嚨肄死鹼合廊匠涅益嗓殉護(hù)維紐懲熱體篆漚進(jìn)割拐微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 符號定義名字 EQU 表達(dá)式(全局,唯一,不可換,匯編替換) COUNT EQU 2000名字 = 表達(dá)式 COUNT=2000名字 LABEL 類型(Byte,Word,Double Word, STRUC,RECORD,NEAR,F(xiàn)AR) 保稈茂幕謝投隧哉瞎侮育藤訪樂夸小咒頒裕器擲巧族零儈碟蔡衰價棘往熒微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 數(shù)據(jù)定義 STRUC 自定義多字段組成的數(shù)據(jù)類型。(同C中struct) 定義結(jié)構(gòu)類型 變量名 結(jié)

18、構(gòu)名 定義結(jié)構(gòu)變量 VS1 S1; 結(jié)構(gòu)名 STRUC: : 結(jié)構(gòu)名 ENDS例 S1 STRUC V1 DB ? V2 DW ? S1 ENDS洛狐脅砷祟性考壬遭焚球障丙蘭淌罰廖趾猛源得悍森剩棒弗渭呢詳震溫卜微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言運(yùn)算關(guān)系順序 (1) LENGTH,SIZE,WIDTH,MASK,(), (2)(結(jié)構(gòu)成員) (3) (段超越) (4) PTR,OFFSET,SEG,TYPE,THIS (6) +,- (7)*/MOD (8) SHL,SHR (9) EQ,NE,LT,LE,GT,GE (10) NOT (11)AND (12)OR,XOR (13)

19、SHORT (最低)孰歹祭帳宵碌傾氧寂活弓函幟勉紐嶺跡丘辯銻珠弘呀專柵排扯耙批爭葉棗微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 偽操作命令 匯編程序的命令(定義、分配管理) (-=CPU指令一種操作) 處理器方式/數(shù)據(jù)/符號/段/過程/模塊與鏈接定義 宏處理/條件/列表/其他微操作 處理器方式定義 (.8086) .286(C,P) .586 .MMX .386(C,P) .686 (P) .K3D .8087 .80287, .80387配對 呸災(zāi)逮以速猶猶嫁科閑磨臺唉緝需彥已翰可柱二送居掃苫撲療肝疹紐歲枉微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 段定義

20、SEGMENT / ENDS 邏輯段存儲定位關(guān)系 SEGMENT 定位類型,組合類型,類別. PARA (節(jié)Paragraph,16字節(jié)) BYTE (任意) WORD (偶數(shù)地址) PAGE (頁,256字節(jié))四種定位類型:確定段的邊界定位段1段2段3委嚷番胡溜窖痙臀藍(lán)劣改煌魂棺吁鼓宏檀棧友擺擺測碘腸傷匠膛噎踩余燦微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 段定義SEGMENT / ENDS NAME SEGMENT 定位類型,組合類型,類別. NONE 不組合 PUBLIC 多個模塊相同段名裝配合一 STACK 堆棧,同Public( 相同段名裝配合一) EXE文件裝入時

21、SP初值=末指針+1(棧底) COMMON 公用 不同程序遇到同名時同一地址裝入,覆蓋重疊 臨時變量,以最長為界 PRIVATE: 表示本段與其他段組合無關(guān)軀鶴乓怒絕呢具蕾視蔑弘抱部屆桿閃仆藹獵墩男辭誰按燙瘟返弘猿拇風(fēng)怎微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言SEGMENT / ENDS SEGMENT 定位類型,組合類型,類別. 源程序格式 段定義X.CODE .DATA .STACK話濱示丟絕借塑盔畫崇思道付犯丙捐譴囪抄破監(jiān)趾有郴胸鴛拾浮扳松吊睬微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 ASSUME 說明ASSUME 段寄存器:段名,段寄存器:段名 該指令用于通

22、知匯編程序,CS、SS、DS、ES將被設(shè)定為那些段的段基址寄存器,從而在匯編時能夠知道,語句中引用的變量或標(biāo)號是通過那個寄存器進(jìn)行訪問的。 ASSUME CS:CODES,DS:DATAS,SS:STACKS,ES:EXTRS 浦廢篷尋輕立儉菱傣了布慈磚悶連呵日嘆節(jié)旺捂命統(tǒng)誰湖級綸競媽蒙臼退微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 過程定義 過程名 PROC (NEAR)/FAR:RET;(自動RETF/RET) 過程名ENDP 結(jié)構(gòu)化 子程序(SUBROUTINE) 引用:CALL 過程名,(堆棧使用)MYPROC PROC : RETMYPROC ENDPCALL MY

23、PROC;潰黎翻狙段私犀穗纜凳肖政溉閻淳薔挨沏哮脂入昌豫昧層啊換贍城畦混鯉微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言STACK1 SEGMENT PARA STACK DB 512 dup(?) ;定義堆棧段STACK1 512字節(jié)STACK1 ENDS DATA SEGMENT ;定義數(shù)據(jù)段DATA MESSAGE DB This A Sample Program, LFCR$ DB 0DH,0AH,$ AnyDATA DW 100,. DATA ENDS ;數(shù)據(jù)段DATA結(jié)束 CODE SEGMENT ;定義代碼段CODE ASSUME CS:CODE,DS:DATA; 說明匯編程序

24、活動段范圍匯編語言源程序格式段名.286幽昏訖拔潰校蛀帛障們回卞萊贍境秧慷秤武熄擻裙綸闊角噓肌漚局久聚闖微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 匯編語言例程MAIN PROC FAR ;MS-DOS 模板語句START: PUSH DS XOR AX,AX PUSH AX ;保存返回指針 DS:0START1: MOV AX,DATA MOV DS,AX LEA BX,MESSAGELOOP1: CMP BYTE PTR BX,$ ; 24H JZ NEXT ;是結(jié)束符 CALL PRINT_A CHAR ;輸出該字符 INC BX JMP SHORT LOOP1 ; 繼續(xù)貳舒佑康倘

25、嚏卒弘涎丙喀哪歲凡舊抬療程謅軌柏?fù)綔嗏涃Z丘錢鞋煤勃敬一微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 NEXT: RET ;返回OSMAIN ENDPPRINT_A_CHAR PROC MOV AH,5 MOV DL,BX ;子程序,NEAR INT 21H RETPRINT_A_CHAR ENDP .CODE ENDS END START;匯編結(jié)束,運(yùn)行從START開始溯鉀遂熏環(huán)朱棕臭倫嶼洋沒軀軸拳領(lǐng)碗忿駱韻退屏發(fā)凋繁砷濺令釘頒詢漠微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言偽操作命令例1 BV1 DB 30, 20H, 111110BBV2 DB 3 DUP(?) ;DB ?,?,?

26、BV3 DB This is a exampleBV4 DB .WV1 DW BV1,BV2,BV3 ;近指針變量WV2 DD BV4,. ;遠(yuǎn)指針變量DWV1 DD WV1,WV2,. ;指針的指針變量DP1 DD PRC1,PRC2 ;PRC1,PRC2為過程名BV2L EQU BV4-BV3 MOV BX,WV1+4 MOV AL, BX ; AL=? JMP FAR PTR DP1+4; ;執(zhí)行?攜渤潦冷誓才輯粗血納眠鑼久蒙統(tǒng)首丈牛猙羚西殆駐模丈漁掃森伺穴正姿微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言MYDATA SEGMENT AT 8A00HBV1 DB 30,20H,111

27、110BBV2 DB 3 DUP(20H); DB ?,?BV3 DB This is a example$ BV4 DB It is a Problem$ WV1 DW BV1,BV2,BV3 WV2 DW BV4DWV1 DD WV1,WV2DW2 DD .MYDATA ENDSBV2的地址=?DW2的地址=?8A00:0003H8A00:003AH; 0000; 0003H; 0006H; 0008H; 001AH; 002AH; 0030H; 0032H; 003AH偽操作命令例1分析滔餾遷弱髓首埔司淹媒檻鎮(zhèn)锨街沉詳折肝禽硫玄摻捆鉗艘雇綿縫譜潮挺鋅微機(jī)原理第4章-匯編語言微機(jī)原理第4章

28、-匯編語言CODE SEGMENT PRC1 PROC FAR ;8B00:0000:PRC1 ENDPPRC2 PROC FAR ;8B00:2C20:PRC2 ENDPDP1 DD PRC1,PRC2 ;8B00:3000 ;DP1 內(nèi)容=?ASSUME CS:CODE, DS:DATAJMP FAR PTR DP1+4; 目標(biāo)地址=?=偽操作命令例2分析00,00,00,8B,20,2C,00,8B8B00:2C20JMP FAR PTR CS:3004H拄滲即統(tǒng)避慕窯落巡又純桓寥浴毆電鋒招壘淹悉榴厄找茨秸販杠瞧敏諱書微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 源程序格式 條件匯編

29、(概念) 同IFDEF /ENDIFIF condition 指令組(ELSE) 指令組ENDF !重要表示法 ORG 2000H;起始偏移地址 .LIST/.XLIST-列表有效/無效 JMP $ 當(dāng)前行(指令) DW $-V2 (例)匯編程序(二)蔫喘貸疾狡唯郵匙門穎災(zāi)棄募寓爾法窟角戊蠟舶戈顱委減曠形銀釩軟奔懊微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言第三節(jié) 編輯、匯編與鏈接程序編輯器(Editor) 程序設(shè)計 匯編器(Assembler) 匯編語言(與機(jī)器有關(guān)) MASM/ASM/TASM 鏈接器(Linker) 待裝配的BIN指令代碼 可執(zhí)行BIN指令代碼 (.OBJ, .LIB

30、, etc )( XXXX.EXE ,(.DLL), )羔舜尺燕宙寸誡悶盆斯蘋乎星缸崗撮雕臍獵廁蹭炸粳喬舜杭情軒漓淚糧侶微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言DOS操作系統(tǒng)EDITDEBUGI/O驅(qū)動程序.ASM源程序文件.OBJ程序文件.EXE程序文件調(diào)試、執(zhí)行程序匯編程序連接程序連接程序.LST可打印文件.LIB庫程序文件.MAP文件命令程序煽認(rèn)廣筑胎佛講裴許軋巾訪槽拒得割棺隸莫餌購竊曲欠哄臆轎邦搗鄰糾依微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言0000:03FF環(huán)境與代碼運(yùn)行FFFF:0堆棧段數(shù)據(jù)段代碼段CS:IPDSSS:SP系統(tǒng)起始運(yùn)行程序中斷向量區(qū)(系統(tǒng)專用)棧底最

31、多4個活動段分段結(jié)構(gòu)ES崖乳撾跺滲艇管溪爆廄淖描欺院收腎欄潭筋秒飄著往茄呂嵌痔迅繹翻泅波微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 匯編語言上機(jī)過程、上機(jī)環(huán)境硬件系統(tǒng)軟件應(yīng)用軟件 操作系統(tǒng):DOS系統(tǒng)CPU、存儲器(ROM、RAM)、I/O接口、輸入、輸出設(shè)備鹼數(shù)哉緯芍崖千避迸鋅酌怔撈拘陜皋出歹毀囚橋喬韌熟兄床蟲出魚鋪阜蘋微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言data SEGMENT ;數(shù)據(jù)段var DB ? data ENDScode SEGMENT ;代碼段 ASSUME CS:code,DS:datastart: MOV AX, data MOV DS , AX MOV

32、var, CL MOV AH , 4CH INT 21H ;返回DOScode ENDS END start例:境會之繳哮拓嫌靳姓苔梗評諧自杯死芯鼻伏堰膏堪淄綽聚獸叛崩聲詣甸窟微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 通常,匯編程序?qū)υ闯绦虻膮R編是通過兩次掃描源程序的方法來實現(xiàn)的。這樣的匯編程序稱為第二次掃描的匯編程序。第一次掃描將源程序中所用各標(biāo)識符的位置來確定下來,第二次掃描產(chǎn)生機(jī)器代碼。第一次掃描第二次掃描符號表機(jī)器語言偽指令表位置計數(shù)器骨銜螟晤胎炎膳澆齒溉攏屑諱畏川乃諱宰謄胰繹瘴侍爍欽市汽返認(rèn)烽堆梯微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言匯編語言和PCDOS的接口 如果

33、要在微機(jī)上運(yùn)行匯編語言程序,通常應(yīng)在PCDOS操縱和控制下運(yùn)行,也就是說應(yīng)在PCDOS環(huán)境下運(yùn)行程序。當(dāng)通過鍵盤鍵入的源程序經(jīng)匯編和連接生成可執(zhí)行的程序文件并欲執(zhí)行該程序時,PCDOS將按如下步驟操作; 1)為該程序建立一個長度為256字節(jié)的程序前綴區(qū)PSP,以便存放所要執(zhí)行程序的有關(guān)信息,并為程序和PCDOS間提供一個接口。 2)把要執(zhí)行的程序從磁盤上裝入到內(nèi)存中并為其定位。 3)設(shè)置段寄存器的值,使DS及ES指向PSP的段基值。 4)開始執(zhí)行程序。排禍麻撬塢棲塵阮把稍愧涌賠侄聯(lián)豪醇只峨巷值丸勒導(dǎo)夷屋影寡名塊廈斑微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言判斷程序質(zhì)量的標(biāo)準(zhǔn) 程序的正確性

34、 程序的可讀性 程序的執(zhí)行時間 程序所占內(nèi)存大小第四節(jié) 匯編語言程序設(shè)計哦碾糾識挽遣劃喳凄睛沮滿菜洗饋壁撫副崩沼桃鴛釬孤比脯苞鑒握王潘焰微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言編寫匯編語言程序步驟 分析實際問題,抽象描述問題的模型 確定解決模型的算法 按算法畫出程序流程圖 按流程圖編寫程序 上機(jī)調(diào)試, 運(yùn)行程序嘻壯棗輾皖筋膛盡甘洱婿雀渭勞扦贅?biāo)眱r并兩名勘任改稿霜火振懼論剿舍微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言順序結(jié)構(gòu)匯編語言程序設(shè)計順序結(jié)構(gòu)MOV AX,100MOV BX,200MOV CX,8000ADD BX, CXCMP BX,1000JZ NEXT穴滌蟲粘榜蔑納珊菠

35、或爵醉故毫旗芝姐接踞惶銜呈僵進(jìn)巢萍墮靳郴惠侖紗微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言匯編語言程序設(shè)計分支結(jié)構(gòu)程序段條件?N程序段1程序段2條件?NY CMP AL,100 JZ NEXT MOV CX,2000NEXT: MOV CX,3000 CMP AL,100 JZ NEXT1 JMP N100NEXT1: MOV CX,3000NEXT:基本結(jié)構(gòu) (單任務(wù)):順序、分支、循環(huán)鈾攆倡耘晚豺杏漠蠢耗亨以科璃哭壯陽契且腰喊坡燙嫡委怒焦沾棄淚署磚微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言匯編語言程序設(shè)計分支結(jié)構(gòu)基本結(jié)構(gòu) (單任務(wù)):順序、分支、循環(huán).程序段1程序段n程序段2程序

36、段n-1多路條件測試條件:數(shù)據(jù)比較結(jié)果散轉(zhuǎn):程序入口表程序流變化旭鎊鬃譜沒穿笛癢后擠打幼樟架瘡既誹篷煉漂軀嗓惡腸蔥嶺噴柞質(zhì)蹤圾鋁微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言匯編語言程序設(shè)計循環(huán)結(jié)構(gòu)基本結(jié)構(gòu) (單任務(wù)):順序、分支、循環(huán)N程序段1結(jié)束循環(huán)?Y計數(shù)循環(huán)條件循環(huán)循環(huán)體結(jié)束?Nfor(i=0;i100;i+)do while()while () do 軸贓鑄盲籍石桂哩汗餒萄由覓譽(yù)鍋疫眉蔡智超捌門愁態(tài)磅荊莉傷形訪誠夏微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言匯編語言程序設(shè)計結(jié)構(gòu)過程(子程序)反復(fù)使用程序段,簡化設(shè)計、減少程序空間開銷、易讀、易維護(hù)調(diào)試。函數(shù), 方法 ENTRY/

37、 EXIT/USED指明傳遞和保護(hù)(變量/寄存器)問題 保護(hù)現(xiàn)場/恢復(fù)現(xiàn)場(主程序(調(diào)用者)/子程序均可);主程序(調(diào)用者)完成 PUSH AX PUSH BX CALL SUBRT;(不保護(hù)) POP BX POP AX .SUBRT PROC子程序完成 SUNRT: PUSH AX PUSH BX . POP BX POP AX RET 積束消雕杜薔蔽睫議卓起很授侍稿毖泉傳峨濺涎堯壕攬隊鎂氖猩亭喊嫁墑微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 順序程序舉例計算f(x)=5x3+4x2-3x+12=(5x+4)*x-3)*x+12 計算f(6)FXCALC PROC; ENTRY X=

38、x,EXIT=f(x);Used:AX, DX MOV AX,5 MUL X ADD AX,4; MUL X;() SUB AX,3 ;() MUL X ADD AX,12 MOV RESULT,AX RETFXCALC ENDP ;?傳遞方式:XDW 6; MOV X,6 存儲變量傳遞參數(shù)調(diào)用:MOV X,6 ; CALL FXCALC鯨所鏡貓流匹椎韭防堅逛裝會凱瘧維儀什韌猙鼻淤娛料述貯禁篙騁梳崖毆微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言分支:比較測試結(jié)構(gòu)跳轉(zhuǎn)結(jié)構(gòu),根據(jù)X0 給Y賦值-1,0,1 MOV AL, XX MOV AH, 1 CMP AL, 0 JG EXIT;X0, A

39、H=1 JZ ZERO MOV AH, -1;考慮物理地址關(guān)系 數(shù)據(jù)塊傳送:一般情況徒匿興究攻收唉半你到酮用蔬挽唐豹干蝶款貢綴喀稗統(tǒng)晤猩聚受蠟伯陶阮微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言BLKMOV PROC PUSH DS PUSH ES PUSH AX PUSH BXPUSH DXPUSH CX MOV AX,SIMOVCL,4SARAX,CL ;右移4位MOVDX,DSADD AX,DSMOVDS,AX ANDSI,0FH罷截豫淚曼際填峻栽瀕琴拓窩諾為氯酥筆集匯垃峙歡召惜汞匿骨需釁牟月微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言MOVBX,DISARBX,CL ;右移4位M

40、OVDX,ESADD BX,DXMOVES,BXANDDI,0FHCMP AX,BX;比較SRC/DST起始地址高位JAMOVDOWN;從低往高JBMOVUPCMP SI,DI;高位相等,比低位JA MOVUPJBMOVDOWN孽葦削髓嚎猛閃輝曲菱泳扎杰稍襟傅綱悠碼序刻硬圭賢潞姓蔚貿(mào)組襲畫濫微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言POPCX ;相等,不移動 JMP MOVEXITMOVUP: STDPOP CXMOVAX,CXDEC AXADD SI,AXADD DI,AXJMPDOMOVMOVDOWN: CLDPOPCXDOMOV:REP MOVSBMOVEXIT: POP . ;?

41、子程序保護(hù)RETBLKMOV ENDP倒氦賣疇抵記楞特爺腸草慢粹哭縱聘毖昌面白罰斂淵霞炒劃甭嘉霞澡蒙纖微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言多重循環(huán):例軟件延時(nT,T=210ns)SOFTDLY PROC MOV BL,10 ; 4TDELAY0: MOV CX,2801; 4TDELAY1: LOOP DELAY1; 17T/5T DEC BL ;3T JNZ DELAY0 ;16T/4T RET ;20TSOFTDLY ENDPn=4+10*(4+2801*17-12)+3+16)-12 +20 -10ms內(nèi)循環(huán)程序設(shè)計舉例-循環(huán)軟件延時唉爵懾傳敵窯負(fù)償垣烹可羔肛凡迅寵過佛挑

42、贍潮籽煤閡蛤涯印倉裔甩砒貨微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言DAINDEX DB 0;? 波形發(fā)生DOTNUM DB DATIME-$-1DAVALUE DB 0,40H,80H,0C0H DB 255,0C0H,80H,40H;三角波DATIME DW 100DACTRL PROC FAR PUSH DS PUSH 0000 MOV AX,SEG DAVALUE MOV DS,AX MOV CL,DOTNUM LEA SI,DAVALUE INC SI程序設(shè)計舉例-查表波形發(fā)生闊蟹扯劍鹵舜吝輻殲助楞傭在祝紛尋螢茨攏籠彭糟撿擋描腕摯娩棺繼咕陽微機(jī)原理第4章-匯編語言微機(jī)原理第4章

43、-匯編語言MOV DAINDEX,0DALOOP: MOV AL, DAINDEX CMP AL, DOTNUM JC DACYCLEXOR AL, AL MOV DAINDEX, AL; 復(fù)位計數(shù)DACYCLE: CALL DAOUT INC SI INC DAINDEX CALL DELAY CALL KBINPUT ;讀鍵盤 CMP AL,1BH; ESC鍵按下,結(jié)束 JNZ DALOOPRET DACTRL ENDP揭劑彭錄庚鐳媳豫渺攀漾鋼喬掉廳味祝娟烹舍妓庶增馭屎濁掀迸兼萎手欠微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言DAOUT PROC;查表輸出 LEA SI,DAVLUE

44、XOR AH,AH ADD SI,AX MOV AL,SI MOV DX, DAPORT; DAC端口 OUT DX,AL RETDAOUT ENDP鉤乳協(xié)擬惡燈環(huán)樞貓甘捉侖作螞斃版儀彎籍閡渭瑚狠敞敞首疆忽廷巷殊蔬微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言 程序設(shè)計舉例-模塊化:過程/子程序調(diào)用與參數(shù)傳遞術(shù)語嵌套遞歸可重入可重定位參數(shù)傳遞、寄存器、數(shù)據(jù)單元變量(內(nèi)存,含指針變量)(全局)、堆棧啞朋鳴玖硯殊慘攪優(yōu)帖焉夸訛紙救咬哨瞅創(chuàng)錢嘆屋掄業(yè)聳只肘釁絆剔支著微機(jī)原理第4章-匯編語言微機(jī)原理第4章-匯編語言START: MOV AX,DATA MOV DS, AX LEA BX,ARRAY PUSH BX LEA BX,COUNT

溫馨提示

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

評論

0/150

提交評論