匯編語言程序設(shè)計(jì)(50)課件_第1頁
匯編語言程序設(shè)計(jì)(50)課件_第2頁
匯編語言程序設(shè)計(jì)(50)課件_第3頁
匯編語言程序設(shè)計(jì)(50)課件_第4頁
匯編語言程序設(shè)計(jì)(50)課件_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言格式與偽指令匯編語言格式與偽指令匯編語言源程序由以下兩種指令構(gòu)成匯編語言源程序由以下兩種指令構(gòu)成匯編語句(指令語句)匯編語句(指令語句)偽指令(指示性語句)偽指令(指示性語句)匯編語句的格式:匯編語句的格式: 標(biāo)號(hào)標(biāo)號(hào):操作碼操作碼操作數(shù)操作數(shù);注釋;注釋3. 偽指令:控制匯編用的特殊指令,這些指令不偽指令:控制匯編用的特殊指令,這些指令不屬于指令系統(tǒng),不產(chǎn)生機(jī)器代碼。屬于指令系統(tǒng),不產(chǎn)生機(jī)器代碼。 常用的偽指令v ORG ORG 定位目的程序的起始地址。定位目的程序的起始地址。 格式:格式:ORG ORG 表達(dá)式表達(dá)式 表達(dá)式必須為表達(dá)式必須為16位

2、地址值。位地址值。如:如:ORG 0000Hv END END 匯編語言程序結(jié)束偽指令。匯編語言程序結(jié)束偽指令。 一定放在程序末尾!一定放在程序末尾!常用的偽指令v EQU EQU 賦值偽指令。賦值偽指令。 格式:格式: 字符名稱字符名稱 EQU EQU 數(shù)值或匯編符號(hào)數(shù)值或匯編符號(hào) 例:例: AAAAEQUEQU30H30HK1K1EQUEQU40H40HMOV AMOV A,AAAA; (30H(30H)AAMOV AMOV A,K1K1;(;(40H40H)AA常用的偽指令v DBDB 從指定單元開始定義(存儲(chǔ))若干個(gè)字節(jié)的數(shù)從指定單元開始定義(存儲(chǔ))若干個(gè)字節(jié)的數(shù)據(jù)或據(jù)或ASCIIAS

3、CII碼字符,常用于定義數(shù)據(jù)常數(shù)表。碼字符,常用于定義數(shù)據(jù)常數(shù)表。格式:格式:DBDB 字節(jié)常數(shù)字節(jié)常數(shù) 或或 ASCIIASCII字符字符例例: :ORGORG 1000H 1000HDBDB34H34H,0DEH0DEH,AA,BBDBDB0AH0AH,0BH0BH,2020常用的偽指令vDWDW 從指定單元開始定義(存儲(chǔ))若干個(gè)字的數(shù)據(jù)從指定單元開始定義(存儲(chǔ))若干個(gè)字的數(shù)據(jù) 或或ASCIIASCII碼字符。碼字符。 格式:格式:DWDW字常數(shù)或字常數(shù)或ASCIIASCII字符字符 例:例: ORG 2000HORG 2000HDWDW1234H1234H,BBDWDW0AH0AH,20

4、20常用的偽指令v BITBIT 位地址符號(hào)指令。位地址符號(hào)指令。 把位地址賦于規(guī)定的字符名稱。把位地址賦于規(guī)定的字符名稱。 格式:字符名稱格式:字符名稱BITBIT位地址位地址例:例: ABCABCBITBITP1.1P1.1QQQQBITBITP3.2P3.2匯編語言程序設(shè)計(jì)應(yīng)用匯編語言程序設(shè)計(jì)應(yīng)用 在進(jìn)行應(yīng)用匯編程序設(shè)計(jì)時(shí),首先要確定算法,算法的優(yōu)劣很大程度上決定了程序的效率,另外還要盡可能畫出程序框圖,以便于分析程序流程。定點(diǎn)數(shù)運(yùn)算子程序定點(diǎn)數(shù)運(yùn)算子程序定點(diǎn)數(shù):小數(shù)點(diǎn)固定的數(shù)。 可以把小數(shù)點(diǎn)固定在數(shù)值的最高位之前, 對(duì)于有符號(hào)的數(shù),小數(shù)點(diǎn)應(yīng)在符號(hào)位與最高數(shù)值位之間,即: 符號(hào)位 數(shù)值部

5、分 也可以把小數(shù)點(diǎn)固定在最低數(shù)值位后面,即: 符號(hào)位 數(shù)值部分定點(diǎn)數(shù)表示方式定點(diǎn)數(shù)表示方式(1)原碼表示法 符號(hào)位為0表示正數(shù),符號(hào)位為1表示負(fù)數(shù) 如:二進(jìn)制數(shù)00110100表示十進(jìn)制數(shù)+52二進(jìn)制數(shù)10110100表示十進(jìn)制數(shù)-52 (2)補(bǔ)碼表示法正數(shù)的補(bǔ)碼表示與原碼相同, 即最高位為0, 其余位為數(shù)值位。負(fù)數(shù)用補(bǔ)碼表示時(shí), 最高位為1, 數(shù)值位要按位取反后再在最低位加1,才是該負(fù)數(shù)的數(shù)值。 例如:十進(jìn)制數(shù)+51的二進(jìn)制補(bǔ)碼為00110011十進(jìn)制數(shù) -51的二進(jìn)制補(bǔ)碼為11001101 例:例: 雙字節(jié)數(shù)取補(bǔ)子程序。雙字節(jié)數(shù)取補(bǔ)子程序。 將(R4R5)中的雙字節(jié)數(shù)取補(bǔ),結(jié)果送R4R5。

6、 CMPT:MOV A,R5 CPL A ADD A,#1 MOV R5,A MOV A,R4 CPL A ADDC A,#0 MOV R4,A RET例:例: 雙字節(jié)原碼數(shù)左移一位子程序。雙字節(jié)原碼數(shù)左移一位子程序。 將(R2R3)左移一位,結(jié)果送R2R3,不改變符號(hào)位, 不考慮溢出。 DRL1: MOV A,R3CLR CRLC AMOV R3,AMOV A,R2RLC AMOV ACC.7,C ;恢復(fù)符號(hào)位;恢復(fù)符號(hào)位MOV R2,ARET例:例: 雙字節(jié)原碼右移一位子程序。雙字節(jié)原碼右移一位子程序。 將(R2R3)右移一位,結(jié)果送R2R3,不改變符號(hào)位。 DRR1: MOV A,R2M

7、OV C,ACC.7 ;保護(hù)符號(hào)位;保護(hù)符號(hào)位CLR ACC.7 ;移入;移入0RRC AMOV R2,AMOV A,R3RRC AMOV R3,ARET例:例: 雙字節(jié)補(bǔ)碼右移一位子程序。雙字節(jié)補(bǔ)碼右移一位子程序。 將(R2R3)右移一位,結(jié)果送R2R3,不改變符號(hào)位。CRR1:MOV A,R2MOV C,ACC.7 ;保護(hù)符號(hào)位;保護(hù)符號(hào)位RRC A ;移入符號(hào)位;移入符號(hào)位MOV R2 ,AMOV A,R3RRC AMOV R3,ARET例:雙字節(jié)無符號(hào)數(shù)加法子程序。例:雙字節(jié)無符號(hào)數(shù)加法子程序。 將(R2R3)和(R6R7)兩個(gè)無符號(hào)數(shù)相加,結(jié)果送R4R5。NADD: MOV A,R3

8、ADD A,R7MOV R5,AMOV A,R2ADDC A,R6MOV R4,ARET例:雙字節(jié)無符號(hào)數(shù)減法子程序。例:雙字節(jié)無符號(hào)數(shù)減法子程序。 將(R2R3)和(R6R7)兩個(gè)雙字節(jié)數(shù)相減,結(jié)果送R4R5。NSUB1: MOV A,R3CLR CSUBB A,R7MOV R5,AMOV A,R2SUBB A,R6MOV R4,ARET例:雙字節(jié)原碼加減運(yùn)算子程序。例:雙字節(jié)原碼加減運(yùn)算子程序。 (R2R3)和(R6R7)為兩個(gè)原碼表示的數(shù),最高位為符號(hào)位,求(R2R3)(R6R7)結(jié)果送R4R5。程序中DADD為原碼加法子程序入口,DSUB為原碼減法子程序入口。出口時(shí)CY=1發(fā)生溢出,C

9、Y=0為正常。 DSUB:MOV A, R6 ;減法入口減法入口CPL ACC.7 ;取反符號(hào)位取反符號(hào)位MOV R6, A DADD: MOV A, R2 ;加法入口加法入口MOV C, ACC.7MOV F0, C ;保存被加數(shù)符號(hào)位保存被加數(shù)符號(hào)位XRL A, R6MOV C, ACC.7 ;C=1,異號(hào),異號(hào),C=0,同號(hào),同號(hào)MOV A, R2 CLR ACC.7 ;清清0被加數(shù)符號(hào)被加數(shù)符號(hào)MOV R2, AMOV A, R6CLR ACC.7 ;清清0加數(shù)符號(hào)加數(shù)符號(hào)MOV R6, AJC DAB2ACALL NADD ;同號(hào)執(zhí)行加法同號(hào)執(zhí)行加法MOV A, R4JB ACC.7

10、, DABEDAB1: MOV C, F0 ;恢復(fù)結(jié)果的符號(hào)恢復(fù)結(jié)果的符號(hào)MOV ACC.7, CMOV R4, ARETDABE: SETB CRET ;溢溢 出出DAB2: ACALL NSUB1 ;異號(hào)執(zhí)行減法異號(hào)執(zhí)行減法MOV A, R4JNB ACC.7, DAB1ACALL CMPT ;不夠減,取補(bǔ)不夠減,取補(bǔ)CPL F0 ;符號(hào)位取反符號(hào)位取反SJMP DAB1例:例: 無符號(hào)二進(jìn)制乘法程序。無符號(hào)二進(jìn)制乘法程序。 將(R2R3)和(R6R7)兩個(gè)雙字節(jié)無符號(hào)數(shù)相乘,結(jié)果送R4R5R6R7。NMUL:MOV R4,#0MOV R5,#0MOV R0,#16 ;16位二進(jìn)制數(shù)位二進(jìn)

11、制數(shù)CLR CNMLP:MOV A,R4 ;右移一位;右移一位RRC AMOV R4,AMOV A,R5RRC AMOV R5,AMOV A,R6RRC AMOV R6,AMOV A,R7RRC AMOV R7,AJNC NMLN ;C為移出的乘數(shù)最低位為移出的乘數(shù)最低位, 若為若為0, 不執(zhí)行加法不執(zhí)行加法MOV A,R5 ;執(zhí)行加法;執(zhí)行加法ADD A,R3MOV R5,AMOV A,R4ADDC A,R2MOV R4,ANMLN:DJNZ R0,NMLP ;循環(huán);循環(huán)16次次MOV A,R4 ;最后將結(jié)果再右移一位;最后將結(jié)果再右移一位RRC AMOV R4,AMOV A,R5RRC AMOV R5,AMOV A,R6RRC AMOV R6,AMOV A,R7RRC AMOV R7,A RET快速乘法快速乘法例:無符號(hào)雙字節(jié)快速乘法。例:無符號(hào)雙字節(jié)快速乘法。 將(R2R3)和(R6R7)兩個(gè)雙字節(jié)無符號(hào)數(shù)相乘,結(jié)果送R4R5R6R7。QMUL:MOV A,R3MOV B,R7MUL AB ;R3R7XCH A,R7 ;R7=(R3R7)LMOV R5,B ;R5=(R3R7)HMOV B,R2MUL AB ;R2R7ADD A,R5MOV R4,ACLR AADDC A,BMOV R5,A ;R5=(R2R

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論