版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
匯編語言程序設(shè)計(jì)-程序設(shè)計(jì)概述一、匯編語言的特點(diǎn)(1)助記符指令和機(jī)器指令一一對(duì)應(yīng),所以用匯編語言編寫的程序效率高,占用存儲(chǔ)空間小,運(yùn)行速度快,因此匯編語言能編寫出最優(yōu)化的程序。(2)使用匯編語言編程比使用高級(jí)語言困難,因?yàn)閰R編語言是面向計(jì)算機(jī)的,匯編語言的程序設(shè)計(jì)人員必須對(duì)計(jì)算機(jī)硬件有相當(dāng)深入的了解。(3)匯編語言能直接訪問存儲(chǔ)器及接口電路,也能處理中斷,因此匯編語言程序能夠直接管理和控制硬件設(shè)備。(4)匯編語言缺乏通用性,程序不易移植,各種計(jì)算機(jī)都有自己的匯編語言,不同計(jì)算機(jī)的匯編語言之間不能通用。
二、匯編語言程序設(shè)計(jì)的步驟與特點(diǎn)(1)分析任務(wù)(2)建立數(shù)學(xué)模型,確定算法(3)制定程序流程圖(4)編寫源程序(5)源程序的匯編與調(diào)試(6)編寫程序說明文件匯編語言程序設(shè)計(jì)-程序設(shè)計(jì)概述
匯編程序控制譯碼指令1.ORG(ORiGin)匯編起始地址命令
[<標(biāo)號(hào):>]ORG<地址>例:ORG
0000H
ORG
0023H2.END(ENDofassembly)匯編終止命令
[<標(biāo)號(hào):>]END[<表達(dá)式>]3.EQU(EQUate)賦值命令
<字符名稱>EQU<賦值項(xiàng)>例:TTY:EQU
1080H
LOOP1:EQU
TTY匯編語言程序設(shè)計(jì)-常用偽指令
匯編語言源程序由以下兩種指令構(gòu)成匯編語句(指令語句)偽指令(指示性語句)匯編語句的格式:標(biāo)號(hào): 操作碼 操作數(shù) ;注釋數(shù)據(jù)表示形式:二進(jìn)制(B)、十六進(jìn)制(H)、十進(jìn)制(D或省略)、ASCII碼(以單引號(hào)標(biāo)識(shí))3.偽指令:控制匯編用的特殊指令,這些指令不屬于指令系統(tǒng),不產(chǎn)生機(jī)器代碼。匯編語言程序設(shè)計(jì)-匯編語言的規(guī)范
[例]三字節(jié)無符號(hào)數(shù)相加,其中被加數(shù)在內(nèi)部RAM的50H、51H和52H單元中;加數(shù)在內(nèi)部RAM的53H、54H和55H單元中;要求把相加之和存放在50H、51H和52H單元中,進(jìn)位存放在位尋址區(qū)的00H位中。MOV R0, #52H ;被加數(shù)的低字節(jié)地址MOV R1, #55H ;加數(shù)的低字節(jié)地址MOV A, @R0 ADD A, @R1 ;低字節(jié)相加MOV @R0,A ;存低字節(jié)相加結(jié)果DEC R0 DEC R1 MOV A, @R0 ADDC A, @R1 ;中間字節(jié)帶進(jìn)位相加MOV @R0,A ;存中間字節(jié)相加結(jié)果匯編語言程序設(shè)計(jì)-順序結(jié)構(gòu)程序DEC R0 DEC R1 MOV A, @R0 ADDC A, @R1 ;高字節(jié)帶進(jìn)位相加MOV @R0,A ;存高字節(jié)相加結(jié)果MOV 00H,C ;進(jìn)位送00H位保存匯編語言程序設(shè)計(jì)-順序結(jié)構(gòu)程序匯編語言程序設(shè)計(jì)-分支結(jié)構(gòu)程序參考程序:
ORG 0000H VAR DATA 30H FUNC DATA 31H MOV A, VAR ;A←X JZ DONE ;若X=0,則轉(zhuǎn)DONE JNB ACC.7,POSI ;若X>0,則轉(zhuǎn)POSI MOV A, #0FFH ;若X<0,則Y=-1 LJMP DONE POSI:MOV A, #01H ;若X>0,則Y=1DONE:MOV FUNC,A ;存函數(shù)值
SJMP $ END匯編語言程序設(shè)計(jì)-分支結(jié)構(gòu)程序參考程序:
ORG 0000H VAR: DATA 30H FUNC: DATA 31H MOV A, VAR ;A←X JZ DONE ;若X=0,則轉(zhuǎn)DONE MOV R0, #0FFH ;先設(shè)X<0,R0=FFH JNB ACC.7, NEG ;若X<0,則轉(zhuǎn)NEG
MOV R0, #01H ;若X>0,R0=1NEG: MOV A, #01H ;若X>0,則Y=1DONE:MOV FUNC,A ;存函數(shù)值
SJMP $ END 匯編語言程序設(shè)計(jì)-分支結(jié)構(gòu)程序循環(huán)程序一般由:初始化部分循環(huán)體部分--處理部分、修改部分、控制部分結(jié)束部分其結(jié)構(gòu)一般有兩種:先進(jìn)入處理部分,再控制循環(huán)至少執(zhí)行一次循環(huán)體先控制循環(huán),再進(jìn)入處理部分循環(huán)體是否執(zhí)行,取決于判斷結(jié)果。循環(huán)控制的一般方法:循環(huán)次數(shù)已知:利用循環(huán)次數(shù)控制循環(huán)次數(shù)未知:利用關(guān)鍵字控制利用“邏輯尺”:根據(jù)“邏輯尺”的內(nèi)容,進(jìn)行控制匯編語言程序設(shè)計(jì)-循環(huán)程序開始設(shè)置循環(huán)初值循環(huán)處理循環(huán)修改結(jié)束處理結(jié)束循環(huán)結(jié)束?開始設(shè)置循環(huán)初值循環(huán)處理循環(huán)修改結(jié)束處理結(jié)束循環(huán)結(jié)束?YN匯編語言程序設(shè)計(jì)-循環(huán)程序例:統(tǒng)計(jì)數(shù)據(jù)塊的長度入口條件:內(nèi)部RAM30H開始的存儲(chǔ)區(qū)有若干個(gè)數(shù)據(jù),最后一個(gè)數(shù)據(jù)為字符FFH,結(jié)果存入40H單元。
ORG0100HMAIN:MOVR1,#30H ;R1作為地址指針
CLR A ;累加器A作為計(jì)數(shù)器LOOP:CJNE @R1,#0FFH,NEXT ;與數(shù)據(jù)FF比較,不等轉(zhuǎn)移
LJMP JSH1 ;找到結(jié)束符號(hào),結(jié)束循環(huán)NEXT:INC A ;計(jì)數(shù)器加1
INC R1 ;指針加l
LJMPL00P ;循環(huán)匯編語言程序設(shè)計(jì)-循環(huán)程序例.延時(shí)程序(晶振為12M),由于采用12M晶振,機(jī)器周期為1μs,DJNZ的指令周期為2,整個(gè)程序的執(zhí)行時(shí)間為250×200×2×1μs=100000μs=0.1s
ORG 0100H;0.1s延時(shí)程序(晶振為12M) MOV R2,#200LOOP: MOV R3,#250 DJNZ R3,$ DJNZ R2,LOOP匯編語言程序設(shè)計(jì)-循環(huán)程序 ORG 0100H;1s延時(shí)程序(晶振為12M)
MOV R1,#10LOOP1: MOV R2,#200LOOP: MOV R3,#250 DJNZ R3,$ DJNZ R2,LOOP DJNZ R1,LOOP1匯編語言程序設(shè)計(jì)-循環(huán)程序
帶通用性問題,可以把它設(shè)計(jì)成通用子程序以供調(diào)用。這樣使程序緊湊,縮短程序長度,調(diào)式方便。
1子程序結(jié)構(gòu)應(yīng)具備
1)必須標(biāo)明子程序入口地址,即名稱
2)必須以返回指令RET結(jié)束子程序
2子程序設(shè)計(jì)時(shí)注意事項(xiàng):
1)要能正確傳遞參數(shù): 入口條件:子程序中要處理的數(shù)據(jù)如何給予。 出口條件:子程序處理結(jié)果如何存放。(寄存器、存儲(chǔ)器、堆棧方式)匯編語言程序設(shè)計(jì)-子程序結(jié)構(gòu)程序例.單字節(jié)十六進(jìn)制數(shù)轉(zhuǎn)換成雙字節(jié)ASCII碼入口條件:待轉(zhuǎn)換的單字節(jié)十六進(jìn)制數(shù)在寄存器R2中。出口:高四位的ASCII碼在A中,低四位的ASCII碼在B中。ORG 0100HMOV A,R2MOV B,A ;暫存待轉(zhuǎn)換的單字節(jié)十六進(jìn)制數(shù)
LCALL MS1 ;轉(zhuǎn)換低四位
匯編語言程序設(shè)計(jì)-子程序結(jié)構(gòu)程序XCH A,B ;存放低四位的ASCII碼
SWAP A ;準(zhǔn)備轉(zhuǎn)換高四位
LCALL MS1 ;轉(zhuǎn)換高四位
LJMP $MS1:ANL A,#0FH ;將累加器的低四位轉(zhuǎn)換成ASCII碼
ADD A,#90HDA AADDC A,#40HDA ARET
匯編語言程序設(shè)計(jì)-子程序結(jié)構(gòu)程序例5:將多位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼,設(shè)R0指向十六進(jìn)制數(shù)低位,R2存放字節(jié)數(shù),轉(zhuǎn)換后R1指向ASCII碼高位。HTASC:MOVA,@R0;取十六進(jìn)制數(shù)
ANLA,#0FH;取低四位
ADDA,#15;偏移修正
MOVCA,@A+PC;查表得ASCII碼
MOV@R1,A;保存
INCR1MOVA,@R0;取十六進(jìn)制數(shù)高四位
SWAPA;ANLA,#0F0HADDA,#06H;偏移修正匯編語言程序設(shè)計(jì)-查表結(jié)構(gòu)程序[例]內(nèi)部RAM20H單元開始存8個(gè)無符號(hào)8位二進(jìn)制數(shù),找出其中的最大數(shù)。極值查找操作的主要內(nèi)容是進(jìn)行數(shù)值大小的比較。假定在比較過程中,以A存放大數(shù),與之逐個(gè)比較的另一個(gè)數(shù)放在2AH單元中。比較結(jié)束后,把查找到的最大數(shù)送2BH單元中。程序流程如圖所示。匯編語言程序設(shè)計(jì)-設(shè)計(jì)與技巧舉例參考程序如下:
MOV R0, #20H ;數(shù)據(jù)區(qū)首地址
MOV R7, #08H ;數(shù)據(jù)區(qū)長度
MOV A, @R0 ;讀第一個(gè)數(shù)
DEC R7 LOOP:INC R0 MOV 2AH, @R0 ;讀下一個(gè)數(shù)
CJNE A,2AH, CHK ;數(shù)值比較CHK: JNC LOOP1 ;A值大轉(zhuǎn)移
MOV A, @R0 ;大數(shù)送ALOOP1:DJNZ R7, LOOP ;繼續(xù)
MOV 2BH, A ;極值送2BH單元HERE:LJMP HERE ;停止匯編語言程序設(shè)計(jì)-設(shè)計(jì)與技巧舉例例編出能根據(jù)R6的內(nèi)容轉(zhuǎn)向各個(gè)操作程序的程序。設(shè)該操作程序的轉(zhuǎn)向地址分別為OPRD0,OPRDl,…OPRDn。程序如下:MOVDPTR,#TAB3;指向轉(zhuǎn)移地址表MOVA,R6ADDA,R6JNCNANDINCDPHNAND:MOVR7,AMOVCA,@A+DPTR;取轉(zhuǎn)向地址高8位XCHA,R7INCAMOVCA,@A+DPTR;取轉(zhuǎn)向地址低8位PUSHA;轉(zhuǎn)向地址入棧
匯編語言程序設(shè)計(jì)-設(shè)計(jì)與技巧舉例例試編出能模擬圖4-9中電路的程序。匯編語言程序設(shè)計(jì)-設(shè)計(jì)與技巧舉例
ORG0000H
DBIT00H
EBIT01H
GBIT02HLOOP1:ORLP1,#08H;準(zhǔn)備P1.3輸入LOOP2:MOVC,P1.3;檢測(cè)K3狀態(tài)
JCLOOP2;若未準(zhǔn)備好(K3斷),則LOOP2
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版學(xué)校食堂肉類食材采購及食品安全風(fēng)險(xiǎn)評(píng)估與培訓(xùn)服務(wù)合同3篇
- 二零二五年度高端定制家具采購合同范本9篇
- 2025版小區(qū)停車場(chǎng)租賃合同附停車場(chǎng)升級(jí)改造及智慧化服務(wù)協(xié)議3篇
- 二零二五版鍋爐采購、安裝及智能化節(jié)能系統(tǒng)合同3篇
- 2025年度美容行業(yè)美容院美容產(chǎn)品品牌推廣合同范本4篇
- 全新2025年度技術(shù)咨詢合同3篇
- 2025版團(tuán)購業(yè)務(wù)金融風(fēng)險(xiǎn)管理合同3篇
- 公共基礎(chǔ)-2021年試驗(yàn)檢測(cè)師《公共基礎(chǔ)》真題
- 土壤生物技術(shù)改良策略考核試卷
- 居民健康自我管理培訓(xùn)考核試卷
- 2024版塑料購銷合同范本買賣
- JJF 2184-2025電子計(jì)價(jià)秤型式評(píng)價(jià)大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 2024年安徽省中考數(shù)學(xué)試卷含答案
- 2025屆山東省德州市物理高三第一學(xué)期期末調(diào)研模擬試題含解析
- 2024年滬教版一年級(jí)上學(xué)期語文期末復(fù)習(xí)習(xí)題
- 兩人退股協(xié)議書范文合伙人簽字
- 2024版【人教精通版】小學(xué)英語六年級(jí)下冊(cè)全冊(cè)教案
- 汽車噴漆勞務(wù)外包合同范本
- 2024年重慶南開(融僑)中學(xué)中考三模英語試題含答案
- 2023年最新的校長給教師春節(jié)祝福語
評(píng)論
0/150
提交評(píng)論