版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章
匯編語言程序設(shè)計(jì)知識(shí)/sundae_meng4.1匯編語言程序的匯編1.機(jī)器語言
11100101001100000010010101000000
1111010101010000
2.匯編語言
MOVA,30HADDA,40H
MOV50H,A3.高級(jí)語言
高級(jí)語言是一種面向算法和過程的語言。如:
FORTAN、BASIC、C語言/sundae_meng4.2匯編語言程序設(shè)計(jì)概述4.2.1
匯編語言語句格式〔標(biāo)號(hào):〕<操作碼助記符>[操作數(shù)][;注釋]1.標(biāo)號(hào)
標(biāo)號(hào)是語句地址的標(biāo)志符號(hào)、代表該語句指令代碼第一個(gè)字節(jié)的地址。
2.操作碼助記符
此為語句中唯一不可缸少的部分,也是語句的核心,表示該語句進(jìn)行何種操作。3.操作數(shù)
操作數(shù)是指令的操作對(duì)象。4.注釋
注釋是為方便程序的編寫、理解、交流而書寫的說明解釋性文字、符號(hào)。
/sundae_meng4.2.1偽指令
1.匯編起始地址偽指令ORG(Origin)
格式:〔標(biāo)號(hào):〕ORG<addr16>
功能:規(guī)定目標(biāo)程序段式數(shù)據(jù)塊的起始地址。說明:總放在源程序段的開頭和數(shù)據(jù)塊的開頭
2.匯編結(jié)束指令END
格式:〔標(biāo)號(hào):〕END
功能:告訴匯編程序,源程序到此結(jié)果,匯編到此截止。說明:一個(gè)程序只能有一條END命令,且位于程序的最后。匯編程序?qū)ND語句以后的語句不進(jìn)行匯編。例如:
ORG 2000HSTART:MOV A,BJNB ACC.7,DONECPL ADONE:MOV B,AEND
/sundae_meng
格式:〔標(biāo)號(hào):〕DB<字節(jié)數(shù)據(jù)>
功能:從指定的地址單元開始,存入規(guī)定好的8位數(shù)(字節(jié)數(shù)據(jù))說明:1)存貯地址單元可由前一條指令確定或由ORG命令指定;
2)當(dāng)存貯多個(gè)數(shù)時(shí),中間用“,”隔開。例如:
ORG8000HMOVA,40HTAB:DB40H,1101B,96……表示從8002H單元開始分別存放40H,0DH,43H例:
ORG1000HDB“Howareyou”則把字符串中的字符按ASCII碼連續(xù)存放在1000H~100AH11個(gè)單元中(包括兩個(gè)空格)。
注意:DB0FA2H是非法的,因0FA2H不是字節(jié)數(shù)。3.字節(jié)定義偽指令DB(DefineByte)/sundae_meng
格式:〔標(biāo)號(hào):〕DW<字?jǐn)?shù)據(jù)>
功能:從指定的地址開始,存入字十六位數(shù)據(jù)(字?jǐn)?shù)據(jù))。說明:存入數(shù)據(jù)時(shí)高位在前,低位在后,即高8位存入低地址單元,低8位存入高地址單元。例:
ORG1000HDW765AH,40H,“AB”
則1000H~1005H單元依次存放著:76H,5AH,00H,40H,
41H,42H。注意:
1)DW語句中,40H是8位數(shù),按16位數(shù)0040H存放.
2)DW“ABC”及DW“Howareyou”是非法的,而
DB“ABC”
“Howareyou”則是合法的。
4.字定義偽指令DW(DefineWord)/sundae_meng
格式:〔標(biāo)號(hào):〕DS<數(shù)或表達(dá)式>
功能:從指令的地址單元開始,保留指定數(shù)目的字節(jié)單元作為備用空間。例:
ORG1000HDS20START:MOVA,#00H則匯編后,從1000H開始,保留20個(gè)單元作它用,第三條指令的標(biāo)號(hào)START的地址應(yīng)為1014H。注意:MCS-51系列單片機(jī),DB、DW、DS偽指令只能用于程序存貯器,不能對(duì)數(shù)據(jù)存貯器使用。
5.空間定義偽指令DS(DefineStorage)/sundae_meng
格式:<字符名稱>EQU<數(shù)或表達(dá)式>
功能:將右邊的值賦給左邊用戶定義的字符。說明:1)賦值后的字符即可做為地址使用,也可以做為立即數(shù)使用;2)一經(jīng)使用EQU賦值,整個(gè)程序有效;3)所賦值可是8位(字節(jié))或16位(字);4)該偽指令一般放在程序的開始段;5)指令字符名稱構(gòu)成的規(guī)定和地址標(biāo)號(hào)一樣,但不是標(biāo)號(hào),使用時(shí)后無“:”。例如程序段:
ORG8000HAA EQU10H
;AA=10HABC EQUAA+10H;ABC=20HMOV A,ABC;A←20HBS:ADDA,#AA;A←(A)+10H
說明:程序中,AA、ABC是字符名稱,BS是標(biāo)號(hào)。6.賦值偽指令EQU(Equate)/sundae_meng
格式:<字符名稱>BIT<位地址>
功能:把位地址賦給指定的字符名稱。例:
A1BITP1.0A2BIT20H
說明:賦值命令和位定義命令僅為方便編程和閱讀理解程序使用,使用時(shí),字符名稱或位名稱一般取有意義且便于記憶的字母數(shù)字。
7.位定義偽指令BIT/sundae_meng4.2.2
匯編語言程序設(shè)計(jì)一般步驟
(1)分析問題,明確任務(wù)(2)建立數(shù)學(xué)模型,確定算法(3)繪制程序流程圖(4)編寫源程序
(5)匯編、調(diào)試/sundae_meng4.2.3
循環(huán)結(jié)構(gòu)程序設(shè)計(jì)典型循環(huán)結(jié)構(gòu)包括四部分:初始化部分循環(huán)處理部分循環(huán)控制部分循環(huán)結(jié)束部分/sundae_meng1.設(shè)置循環(huán)計(jì)數(shù)器實(shí)現(xiàn)已知循環(huán)次數(shù)的循環(huán)控制程序如下:
MOVR0,#64H;設(shè)置循環(huán)計(jì)數(shù)器
MOVDPTR,#DATA;設(shè)置地址指針
CLRALOOP:MOVX@DPTR,A;清0INCDPTRDJNZR0,LOOP;判0結(jié)束循環(huán)〔例4-7〕將首址為DATA的100個(gè)外部RAM單元清零?!步狻吃摾秊橐阎h(huán)次數(shù)的循環(huán)程序?qū)⒀h(huán)次數(shù)數(shù)存放在R0中。椐圖如4-7所示。/sundae_meng2.使用測(cè)試條件轉(zhuǎn)移指令控制未知次數(shù)的循環(huán)〔例4-8〕設(shè)某以“$”為結(jié)束標(biāo)志的字符中共不超過256個(gè),存放在內(nèi)部RAM以STA為首址的連續(xù)單元里,設(shè)統(tǒng)計(jì)此字符中長(zhǎng)度并存放到內(nèi)部RAM的LEN單元中?!步夥ㄒ弧晨驁D如圖4-8所示:程序如下:
ORG1000HMOVR2,#STA
;設(shè)地址指針
MOVB,#00H;設(shè)計(jì)數(shù)器LOOP:
MOVA,@R2CJNEA,“$”,NEXT;判斷是否結(jié)束
MOVLEN,B;存數(shù)據(jù)結(jié)果
SJMPDONENEXT:INCB;修改計(jì)數(shù)器
INCR2
;修改地址指針,準(zhǔn)備下一次循環(huán)
SJMPLOOPDONE:END/sundae_meng/sundae_meng程序如下:
ORG1000HMOVR2,#STA-1;設(shè)地址指針
MOVB,#0FFH;設(shè)計(jì)數(shù)器LOOP:INCR2
;修改地址指針,準(zhǔn)備下一次循環(huán)
INCB;修改計(jì)數(shù)器
MOVA,@R2
;取數(shù)
CJNEA,“$”,LOOP
;判斷循環(huán)是否結(jié)束
MOVLEN,B
;存數(shù)據(jù)
END說明:1)解法一為先判斷后處理形式,更符合人們的習(xí)慣思維,但使用了無條件轉(zhuǎn)移指令,程序結(jié)構(gòu)不清晰,質(zhì)量不高。2)解法二為先處理后判斷形式,我們要熟悉并掌握這種方法,同時(shí)注意解法二中對(duì)地址指針R2和計(jì)數(shù)器B的初值設(shè)置?!步夥ǘ晨驁D如圖4-9所示。/sundae_meng4.2.4子程序設(shè)計(jì)1.子程序的概念2.子程序調(diào)用
主程序調(diào)用子程序指令:LCALL、ACALL子程序執(zhí)行結(jié)束返回指令:RET/sundae_meng3.現(xiàn)場(chǎng)保護(hù)
子程序執(zhí)行時(shí)首先必須將兩段程序都用到的寄存器或存貯單元保存起來,稱現(xiàn)場(chǎng)保護(hù)。在子程序返回前,再將保存起來的內(nèi)容恢復(fù)到原處,返回后繼續(xù)執(zhí)行程序,這個(gè)過程稱恢復(fù)現(xiàn)場(chǎng)。對(duì)于PC值的現(xiàn)場(chǎng)保護(hù)和恢復(fù)是由計(jì)算機(jī)在執(zhí)行LCALL,ACALL和RET時(shí)自動(dòng)完成的。
對(duì)于其它需要保護(hù)的存貯單元,由程序員在子程序的開頭和結(jié)尾編程實(shí)現(xiàn),一般也是用棧操作指令完成的。
4.主程序與子程序的參數(shù)傳遞
主程序在調(diào)用子程序時(shí)必須將具體的數(shù)據(jù)傳遞給子程序中相應(yīng)的變量(寄存器等),這些數(shù)據(jù)稱入口參數(shù)。子程序執(zhí)行結(jié)束后也必須將運(yùn)行結(jié)果傳遞給主程序供主程序使用,這些結(jié)果數(shù)據(jù)稱出口參數(shù)。
/sundae_meng〔例4-12〕設(shè)內(nèi)部存放長(zhǎng)度為40H的ASCII字符串,首址為40H。試將該字符中每一個(gè)字符中加偶校驗(yàn)位。要求先編寫ASCII字符的偶校驗(yàn)子程序,通過子程序調(diào)用完成所給任務(wù)。
〔解〕該例中,入口參數(shù)僅有一個(gè)ASCII數(shù),出口數(shù)據(jù)也只有一個(gè)加校驗(yàn)位的ASCII字符,可只用累加器A傳送。子程序編寫如下:
ORG0120HSUB:ADDA,#00H;根據(jù)A中字符的1的個(gè)數(shù);產(chǎn)生PSW的奇偶標(biāo)志位PJNBP,DONE;判A中1個(gè)數(shù)
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026寧波前灣新區(qū)衛(wèi)生系統(tǒng)事業(yè)單位招聘高層次人才42人筆試備考試題及答案解析
- 2026年潤(rùn)含公司招聘2名勞務(wù)派遣員工筆試備考試題及答案解析
- 2026湖南長(zhǎng)沙市雨花湘一外國(guó)語中學(xué)春季合同制教師招聘考試備考試題及答案解析
- 2026江蘇南京大學(xué)哲學(xué)學(xué)院博士后招聘1人筆試備考題庫(kù)及答案解析
- 2026湖北交通投資集團(tuán)有限公司招聘14人考試參考題庫(kù)及答案解析
- 2026年學(xué)生心理健康輔導(dǎo)技巧課程
- 2026首都經(jīng)濟(jì)貿(mào)易大學(xué)招聘103人考試參考題庫(kù)及答案解析
- 2026年甘肅省金昌市金川路街道社區(qū)衛(wèi)生服務(wù)中心招聘(聘用制)專業(yè)技術(shù)人員筆試模擬試題及答案解析
- 北京市大興區(qū)魏善莊鎮(zhèn)社區(qū)衛(wèi)生服務(wù)中心招聘勞務(wù)派遣人員1人(行政技能輔助崗)筆試參考題庫(kù)及答案解析
- 2026上半年貴州事業(yè)單位聯(lián)考綏陽縣招聘73人筆試參考題庫(kù)及答案解析
- 復(fù)發(fā)性叢集性頭痛
- 宮頸息肉個(gè)案護(hù)理
- 新生兒感染護(hù)理查房
- 2026屆高考語文專題復(fù)習(xí)-哲理詩(shī)
- (二調(diào))武漢市2025屆高中畢業(yè)生二月調(diào)研考試 生物試卷(含標(biāo)準(zhǔn)答案)
- 2024-2025學(xué)年天津市和平區(qū)高三上學(xué)期1月期末英語試題(解析版)
- 管理人員應(yīng)懂財(cái)務(wù)知識(shí)
- ISO9001-2015質(zhì)量管理體系版標(biāo)準(zhǔn)
- 翻建房屋四鄰協(xié)議書范本
- 打樁承包合同
- 輸煤棧橋彩鋼板更換施工方案
評(píng)論
0/150
提交評(píng)論