匯編語言程序設(shè)計西北工業(yè)大學(xué)微機原理PPT_第1頁
匯編語言程序設(shè)計西北工業(yè)大學(xué)微機原理PPT_第2頁
匯編語言程序設(shè)計西北工業(yè)大學(xué)微機原理PPT_第3頁
匯編語言程序設(shè)計西北工業(yè)大學(xué)微機原理PPT_第4頁
匯編語言程序設(shè)計西北工業(yè)大學(xué)微機原理PPT_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第四章 匯編語言程序設(shè)計第四章第四章 匯編語言程序設(shè)計匯編語言程序設(shè)計4.1 4.1 匯編語言匯編語言4.2 4.2 順序結(jié)構(gòu)程序順序結(jié)構(gòu)程序4.3 4.3 分支程序設(shè)計分支程序設(shè)計4.4 4.4 循環(huán)程序設(shè)計循環(huán)程序設(shè)計4.5 4.5 子程序設(shè)計子程序設(shè)計第四章 匯編語言程序設(shè)計4.1 匯編語言匯編語言4.1.1 4.1.1 匯編語言及語句格式匯編語言及語句格式 匯編匯編 匯編語言源程序匯編語言源程序 目標程序目標程序1 1、指令語句指令語句 標號:標號: 助記符助記符 操作數(shù)操作數(shù) ;注釋;注釋2 2、偽指令語句偽指令語句 名字名字 定義符定義符 參數(shù)參數(shù) ;注釋;注釋第四章 匯編語言程序

2、設(shè)計4.1.2 4.1.2 數(shù)據(jù)定義偽指令格式數(shù)據(jù)定義偽指令格式 DB DB DW DW變量變量 DD DD 表達式表達式1 1,表達式,表達式2 2, DQ DQ DT DT 此偽指令把存儲單元中的數(shù)與一個變量聯(lián)系此偽指令把存儲單元中的數(shù)與一個變量聯(lián)系起來。其中:起來。其中:DB-DB-字節(jié)類型字節(jié)類型 DW-DW-字類型字類型 DD-DD-雙字類型雙字類型 DQ-DQ-四字類型四字類型 DT-DT-五字類型五字類型 第四章 匯編語言程序設(shè)計格式中表達式可以是:格式中表達式可以是:1 1、一個或多個常數(shù)、一個或多個常數(shù)/ /數(shù)值表達式數(shù)值表達式 例如例如2 2、不帶引號的?或帶引號的字符串、

3、不帶引號的?或帶引號的字符串 例如例如3 3、重復(fù)方式、重復(fù)方式DUPDUP 格式:變量格式:變量 定義符定義符 表達式表達式1 DUP1 DUP(表達式(表達式2 2) 其中,表達式其中,表達式1 1為重復(fù)次數(shù)為重復(fù)次數(shù) 表達試表達試2 2為重復(fù)內(nèi)容為重復(fù)內(nèi)容 例如例如4 4、定義過的變量、定義過的變量/ /標號標號 如如 DATA11 DW DATA1DATA11 DW DATA1 DATA12 DD DATA2 GO DATA12 DD DATA2 GO 第四章 匯編語言程序設(shè)計DATA1 DB 30HDATA1 DB 30HDATA2 DW 0240HDATA2 DW 0240H,35

4、00H 3500H DATA1DATA1DATA3 DB (-1DATA3 DB (-1* *3)3),(16/4)(16/4) DATA2 DATA2DATA4 DD 34567HDATA4 DD 34567H DATA3DATA3 DATA4DATA4 返回返回30H40H02H00H35HFDH04H67H45H03H00H第四章 匯編語言程序設(shè)計DATA5 DB ?DATA5 DB ?DATA6 DW ? DATA6 DW ? DATA5DATA5DATA7 DB ABCDDATA7 DB ABCD DATA6DATA6DATA8 DW AB,CDDATA8 DW AB,CD DATA

5、7DATA7 DATA8DATA8 返回返回-41H42H43H44H42H41H44H43H第四章 匯編語言程序設(shè)計DATA9 DW 2 DUP DATA9 DW 2 DUP (?)(?)DATA10 DB 2 DUP(5,2 DUP(0)DATA10 DB 2 DUP(5,2 DUP(0) DATA9DATA9 DATA10 DATA10 返回返回-05H00H00H05H00H00H第四章 匯編語言程序設(shè)計變量和標號的屬性變量和標號的屬性 變量定義數(shù)據(jù)的邏輯地址變量定義數(shù)據(jù)的邏輯地址, ,其屬性有段屬性、偏移地址屬其屬性有段屬性、偏移地址屬性、類型屬性。性、類型屬性。 其類型屬性如下:其

6、類型屬性如下:BYTE-BYTE-字節(jié)字節(jié) WORD-WORD-字字 DWORD-DWORD-雙字雙字 PWORD-PWORD-三字三字 QWORD-QWORD-四字四字 TWORD-TWORD-五字五字 標號定義指令的邏輯地址,其屬性有段屬性、偏移地址標號定義指令的邏輯地址,其屬性有段屬性、偏移地址屬性、距離屬性。屬性、距離屬性。 其距離屬性如下:其距離屬性如下:NEAR-NEAR-近程(默認)近程(默認) FAR-FAR-遠程遠程第四章 匯編語言程序設(shè)計4.1.3 4.1.3 段定義偽指令格式段定義偽指令格式1 1、簡化的段定義偽指令、簡化的段定義偽指令.MODEL-.MODEL-內(nèi)存模式

7、說明內(nèi)存模式說明 (TINYTINY、SMALLSMALL、MEDIUMMEDIUM、COMPACTCOMPACT、LARGELARGE).X86-.X86-選擇選擇80X8680X86指令系統(tǒng)指令系統(tǒng).X86P-.X86P-選擇選擇80X8680X86保護模式指令系統(tǒng)保護模式指令系統(tǒng).DATA-.DATA-定義數(shù)據(jù)段定義數(shù)據(jù)段.STARTUP.STARTUP指示程序開始指示程序開始, ,初始化初始化DS,SSDS,SS.CODE-.CODE-定義代碼段定義代碼段.STACK-.STACK-定義堆棧段定義堆棧段.EXIT-.EXIT-返回操作系統(tǒng)返回操作系統(tǒng) 第四章 匯編語言程序設(shè)計2 2、完

8、整的段定義偽指令、完整的段定義偽指令(1)(1)段定義偽指令段定義偽指令 段名段名 SEGMENT SEGMENT 屬性屬性 段名段名 ENDSENDS(2)(2)段寄存器定義偽指令段寄存器定義偽指令 ASSUME ASSUME 段寄存器段寄存器1:1:段名段名1,1,段寄存器段寄存器2:2:段名段名2,2,4.1.44.1.4匯編結(jié)束偽指令匯編結(jié)束偽指令 對于簡化的段結(jié)構(gòu)程序,匯編結(jié)束偽指令格式:對于簡化的段結(jié)構(gòu)程序,匯編結(jié)束偽指令格式: ENDEND 對于完整的段結(jié)構(gòu)程序,匯編結(jié)束偽指令格式:對于完整的段結(jié)構(gòu)程序,匯編結(jié)束偽指令格式: END END 標號標號 第四章 匯編語言程序設(shè)計4.

9、2 4.2 順序結(jié)構(gòu)程序順序結(jié)構(gòu)程序例例1 將一個將一個2位數(shù)壓縮的位數(shù)壓縮的BCD碼轉(zhuǎn)換成二進制數(shù)碼轉(zhuǎn)換成二進制數(shù). .MODEL SMALL MUL BH .DATA ADD AL,BL BCD DB 01011001B MOV BIN,AL BIN DB ? .EXIT .CODE END .STARTUP MOV AL,BCD MOV BL,AL AND BL,0F H AND AL,0F0H MOV CL,4 ROR AL,CL MOV BH,0AH第四章 匯編語言程序設(shè)計4.3 4.3 分支程序設(shè)計分支程序設(shè)計例例1 用比較指令用比較指令 CMP DEST,SRC JE EQUL

10、EQUL: 用測試指令用測試指令 TEST DEST,SRC JNZ NEXT NEXT: 用邏輯指令用邏輯指令 SHR DEST,CL JC NEXT NEXT:第四章 匯編語言程序設(shè)計例例2 編程實現(xiàn)將鍵盤輸入的小寫字母轉(zhuǎn)換成大寫后編程實現(xiàn)將鍵盤輸入的小寫字母轉(zhuǎn)換成大寫后輸出。輸出。 .MODEL SMALL MOV DL,AL .DATA MOV AH,02HBLOCK DB ERROR!,0DH,0AH,$ INT 21H .CODE JMP DONE .STARTUP NEXT:LEA DX,BLOCK MOV AH,1 MOV AH,9 INT 21H INT 21H CMP AL

11、, a DONE:.EXIT JB NEXT END CMP AL, z JA NEXT AND AL, 11011111B第四章 匯編語言程序設(shè)計4.4 4.4 循環(huán)程序設(shè)計循環(huán)程序設(shè)計例例1 MOV CX,COUNT AGAIN: LOOP AGAIN MOV CL,COUNT AGAIN: DEC CL JNZ AGAIN MOV CX,COUNT AGAIN:JCXZ NEXT JMP AGAIN NEXT:第四章 匯編語言程序設(shè)計例例2 在內(nèi)存在內(nèi)存BLOCK開始處存放了開始處存放了10個無符號字個無符號字節(jié)數(shù),從中找出最大值送入節(jié)數(shù),從中找出最大值送入MAX單元中。單元中。 .MO

12、DEL SMALL .DATA BLOCK DB 100,60,20, MAX DB ? .CODE .STARTUP MOV CX,9 MOV AL,BLOCK LEA BX,BLOCKAGAIN:INC BX CMP AL,BX JAE NEXT XCHG AL,BXNEXT:LOOP AGAIN MOV MAX,AL .EXIT END第四章 匯編語言程序設(shè)計例例3 多位十進制數(shù)相加:多位十進制數(shù)相加:02233585+03703994,兩數(shù)在內(nèi)存中以,兩數(shù)在內(nèi)存中以DATA1 和和DATA2為首址存入,各分配為首址存入,各分配4個字節(jié)單元,以其個字節(jié)單元,以其8位組合位組合BCD碼存入

13、碼存入(低位在前),兩數(shù)相加結(jié)果(低位在前),兩數(shù)相加結(jié)果(組合組合BCD碼碼)送回送回DATA1處。處。 .MODEL SMALL .DATA DATA1 DD 02233585HDATA2 DD 03703994H .CODE .STARTUP LEA SI,DATA1 LEA DI,DATA2 CLC MOV CX,4AGAIN:MOV AL,SI ADC AL,DI DAA MOV SI,AL INC SI INC DI LOOP AGAIN .EXIT END第四章 匯編語言程序設(shè)計例例4 在首地址在首地址BLOCK處存放了處存放了10個字數(shù)據(jù)(無個字數(shù)據(jù)(無符號數(shù)),編程求其和,存

14、入符號數(shù)),編程求其和,存入SUM單元單元。 .MODEL SMALL .DATABLOCK DW 1020H,3040H, SUM DD ? .CODE .STARTUP MOV CX,10 LEA SI,BLOCK MOV AX,0 MOV DX,0AGAIN:ADD AX,SI ADC DX,0 INC SI INC SI LOOP AGAIN MOV SUM,AX MOV SUM+2,DX.EXIT END 第四章 匯編語言程序設(shè)計 例例4 方法二方法二 .MODEL SMALL MOVZX EBX,BX .DATA ADC EAX,EBXBLOCK DW 1020H,3040H, I

15、NC SI SUM DD ? INC SI .CODE LOOP AGAIN .STARTUP MOV SUM,EAX MOV CX,10 .EXIT LEA SI,BLOCK END MOV EAX,0 CLCAGAIN:MOV BX,SI第四章 匯編語言程序設(shè)計例例5 兩位十進制數(shù)乘法:兩位十進制數(shù)乘法:2580,被乘數(shù)和乘數(shù)以組合,被乘數(shù)和乘數(shù)以組合BCD碼形式存于碼形式存于DATA1和和DATA2兩字節(jié)單元中,經(jīng)乘法運算,乘積以組合兩字節(jié)單元中,經(jīng)乘法運算,乘積以組合BCD碼形式存入碼形式存入DATA3定義的兩個內(nèi)存單元中。定義的兩個內(nèi)存單元中。 .MODEL SMALL MOV CL

16、,AL .DATA MOV CH,0DATA1 DB 25H MOV BL,DATA2DATA2 DB 80H MOV AX,0DATA3 DW ? CLC .CODE AGAIN:ADC AL,BL .STARTUP DAA MOV AL,DATA1 XCHG AH,AL MOV BL,AL ADC AL,0 AND BL,0FH DAA AND AL,0F0H XCHG AH,AL MOV CL,4 LOOP AGAIN ROR AL,CL MOV DATA3,AX MOV BH,0AH .EXIT MUL BH END ADD AL,BL第四章 匯編語言程序設(shè)計例例6 將內(nèi)存首地址為將內(nèi)

17、存首地址為BLOCK開始的開始的10個帶符號個帶符號字節(jié)數(shù),將其按由大到小的次序排列。字節(jié)數(shù),將其按由大到小的次序排列。 .MODEL SMALL .DATABLOCK DB 66H,88H,10H, .CODE .STARTUP MOV DI,9 LOOP1:MOV CX,DI MOV BX,0LOOP2:MOV AL,BLOCKBX CMP AL,BLOCKBX+1 JGE NEXT XCHG AL,BLOCKBX+1 MOV BLOCKBX,ALNEXT:INC BX LOOP LOOP2 DEC DI JNZ LOOP1 .EXIT END 第四章 匯編語言程序設(shè)計4.5 4.5 子程

18、序設(shè)計子程序設(shè)計4.5.1 過程定義過程定義過程名過程名 PROC TYPE USES REG RET (或或RET n)過程名過程名 ENDP其中其中,TYPE 包括包括: NEAR FARUSES REG:要保護的通用寄存器要保護的通用寄存器 如如 SUB1 PROC USES AX,BX,CX RET 等效于等效于 SUB1 ENDPSUB1 PROC PUSH AX PUSH BX PUSH CX POP CX POP BX POP AX RETSUB1 ENDP第四章 匯編語言程序設(shè)計4.5.2 調(diào)用與返回指令調(diào)用與返回指令1、調(diào)用指令、調(diào)用指令 CALL 過程名過程名 CALL FAR PTR 過程名過程名CALL 過程名為段內(nèi)調(diào)用,系統(tǒng)將:過程名為段內(nèi)調(diào)用,系統(tǒng)將: EIP(IP) 堆棧堆棧 新偏移地址新偏移地址 EIP(IP)CALL FAR PTR 過程名為段間調(diào)用,系統(tǒng)將:過程名為段間調(diào)用,系統(tǒng)將: CS 堆棧堆棧 EIP(IP) 堆棧

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論