




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第四章第四章 匯編語言程序設(shè)計(jì)及知識(shí)匯編語言程序設(shè)計(jì)及知識(shí)4.1 4.1 編程的步驟、方法和技巧編程的步驟、方法和技巧4.2 4.2 匯編語言源程序的編輯和匯編匯編語言源程序的編輯和匯編4.1 編程的步驟、方法和技巧4.1.1 4.1.1 編程的步驟編程的步驟4.1.2 4.1.2 編程的方法和技巧編程的方法和技巧4.1.3 4.1.3 匯編語言程序的基本結(jié)構(gòu)匯編語言程序的基本結(jié)構(gòu)四、編寫程序四、編寫程序n用用89C51匯編語言編寫的源程序行(一條語句)包匯編語言編寫的源程序行(一條語句)包括四個(gè)部分,也叫四個(gè)字段:括四個(gè)部分,也叫四個(gè)字段:標(biāo)號(hào)標(biāo)號(hào):操作碼操作碼操作數(shù)操作數(shù);注釋注釋n 每個(gè)
2、字段之間要用分隔符分隔,而每個(gè)字段內(nèi)部不能使用分每個(gè)字段之間要用分隔符分隔,而每個(gè)字段內(nèi)部不能使用分隔符??梢杂米鞣指舴姆?hào):空格隔符??梢杂米鞣指舴姆?hào):空格“ ”、冒號(hào)、冒號(hào)“:”、逗號(hào)逗號(hào)“,”、分號(hào)、分號(hào)“;”等。等。例:例:LOOP:MOV A,#00H;立即數(shù);立即數(shù)00HA標(biāo)號(hào)標(biāo)號(hào)n標(biāo)號(hào)是用戶定義的符號(hào)地址。標(biāo)號(hào)是用戶定義的符號(hào)地址。n一條指令的標(biāo)號(hào)是該條指令的符號(hào)名字,標(biāo)號(hào)的值是匯編這一條指令的標(biāo)號(hào)是該條指令的符號(hào)名字,標(biāo)號(hào)的值是匯編這條指令時(shí)指令的地址。條指令時(shí)指令的地址。n標(biāo)號(hào)由以英文字母開始的標(biāo)號(hào)由以英文字母開始的18個(gè)字母或數(shù)字組成,以冒號(hào)個(gè)字母或數(shù)字組成,以冒號(hào)“
3、:”結(jié)尾。結(jié)尾。n標(biāo)號(hào)可以由賦值偽指令賦值,如果沒有賦值,匯編程序把存標(biāo)號(hào)可以由賦值偽指令賦值,如果沒有賦值,匯編程序把存放該指令目標(biāo)碼第一字節(jié)的存儲(chǔ)單元的地址賦給該標(biāo)號(hào),所放該指令目標(biāo)碼第一字節(jié)的存儲(chǔ)單元的地址賦給該標(biāo)號(hào),所以,標(biāo)號(hào)又叫指令標(biāo)號(hào)。以,標(biāo)號(hào)又叫指令標(biāo)號(hào)。操作碼操作碼n操作碼是必不可少的。操作碼是必不可少的。n它用一組字母符號(hào)表示指令的操作碼。在它用一組字母符號(hào)表示指令的操作碼。在89C51中,中,由由89C51的指令助記符組成。的指令助記符組成。操作數(shù)操作數(shù)n匯編語言指令可能要求或不要求操作數(shù),所以這一字段可能有也可能沒匯編語言指令可能要求或不要求操作數(shù),所以這一字段可能有也可
4、能沒有。有。n若有兩個(gè)操作數(shù),操作數(shù)之間用逗號(hào)若有兩個(gè)操作數(shù),操作數(shù)之間用逗號(hào)“,”分開。分開。n操作數(shù)包括的內(nèi)容有:操作數(shù)包括的內(nèi)容有:n(1)工作寄存器:由)工作寄存器:由PSW.3和和PSW.4規(guī)定的當(dāng)前工作寄存器區(qū)中的規(guī)定的當(dāng)前工作寄存器區(qū)中的R0R7。n(2)特殊功能寄存器:)特殊功能寄存器:21個(gè)個(gè)SFR的名字。的名字。n(3)標(biāo)號(hào)名:賦值標(biāo)號(hào))標(biāo)號(hào)名:賦值標(biāo)號(hào)由匯編指令由匯編指令EQU等賦值的標(biāo)號(hào);指令標(biāo)號(hào)等賦值的標(biāo)號(hào);指令標(biāo)號(hào)指令標(biāo)號(hào)指示的指令的第一字節(jié)地址是該標(biāo)號(hào)的值。指令標(biāo)號(hào)指示的指令的第一字節(jié)地址是該標(biāo)號(hào)的值。n(4)常數(shù):可用二進(jìn)制()常數(shù):可用二進(jìn)制(B)、十進(jìn)制、十
5、六進(jìn)制()、十進(jìn)制、十六進(jìn)制(H),若常數(shù)以字),若常數(shù)以字符開頭,前面加符開頭,前面加0。n(5)$:用來表示程序計(jì)數(shù)器的當(dāng)前值。:用來表示程序計(jì)數(shù)器的當(dāng)前值。n(6)表達(dá)式:匯編時(shí),計(jì)算出表達(dá)式的值填入目標(biāo)碼。)表達(dá)式:匯編時(shí),計(jì)算出表達(dá)式的值填入目標(biāo)碼。注釋注釋n注釋部分不是匯編語言的功能部分,只是用語增加注釋部分不是匯編語言的功能部分,只是用語增加程序的可讀性。程序的可讀性。n良好的注釋是匯編語言程序編寫中的重要組成部分。良好的注釋是匯編語言程序編寫中的重要組成部分。4.1.2 編程的方法和技巧一、模塊化的程序設(shè)計(jì)方法一、模塊化的程序設(shè)計(jì)方法二、編程技巧二、編程技巧4.1.3 匯編語言
6、程序的基本結(jié)構(gòu)一、順序程序一、順序程序二、分支程序二、分支程序三、循環(huán)程序三、循環(huán)程序4.2 匯編語言源程序的編輯和匯編4.2.1 4.2.1 源程序編輯源程序編輯4.2.2 4.2.2 源程序的匯編源程序的匯編4.2.3 4.2.3 偽指令偽指令4.2.1 源程序編輯n在微型計(jì)算機(jī)上,借助編輯軟件,編寫或修在微型計(jì)算機(jī)上,借助編輯軟件,編寫或修改匯編語言源程序。如行編輯或屏幕編輯軟改匯編語言源程序。如行編輯或屏幕編輯軟件。件。4.2.2 源程序的匯編n匯編:將匯編語言源程序轉(zhuǎn)換為機(jī)器碼表示的目匯編:將匯編語言源程序轉(zhuǎn)換為機(jī)器碼表示的目標(biāo)程序的過程。對(duì)單片機(jī)有:標(biāo)程序的過程。對(duì)單片機(jī)有: 一、
7、手工匯編一、手工匯編 二、機(jī)器匯編二、機(jī)器匯編 三、反匯編三、反匯編一、手工匯編一、手工匯編n通過手工方式查指令編碼表,逐個(gè)把助記符指令通過手工方式查指令編碼表,逐個(gè)把助記符指令“翻譯翻譯”成機(jī)器碼,然后把得到的機(jī)器碼程序鍵入成機(jī)器碼,然后把得到的機(jī)器碼程序鍵入單片機(jī),進(jìn)行調(diào)試和運(yùn)行。單片機(jī),進(jìn)行調(diào)試和運(yùn)行。n手工匯編的缺點(diǎn):手工匯編的缺點(diǎn): 1、偏移量的計(jì)算容易出錯(cuò)、偏移量的計(jì)算容易出錯(cuò) 2、程序的修改會(huì)引起后面指令地址的變化,轉(zhuǎn)移、程序的修改會(huì)引起后面指令地址的變化,轉(zhuǎn)移指令的偏移量也要重新計(jì)算。指令的偏移量也要重新計(jì)算。二、機(jī)器匯編二、機(jī)器匯編n機(jī)器匯編是在計(jì)算機(jī)上使用交叉匯編程序進(jìn)行源
8、程機(jī)器匯編是在計(jì)算機(jī)上使用交叉匯編程序進(jìn)行源程序的匯編。匯編工作由機(jī)器自動(dòng)完成,最后得到以序的匯編。匯編工作由機(jī)器自動(dòng)完成,最后得到以機(jī)器碼表示的目標(biāo)程序。機(jī)器碼表示的目標(biāo)程序。三、反匯編三、反匯編n將二進(jìn)制機(jī)器語言程序翻譯成匯編語言程序的過程將二進(jìn)制機(jī)器語言程序翻譯成匯編語言程序的過程稱反匯編。稱反匯編。n匯編和反匯編的過程如圖匯編和反匯編的過程如圖4-3所示。所示。源程序源程序(匯編語言)(匯編語言)目標(biāo)碼目標(biāo)碼(機(jī)器語言)(機(jī)器語言)匯編(匯編程序)匯編(匯編程序)反匯編(匯編程序)反匯編(匯編程序)圖圖4-3 匯編和反匯編過程匯編和反匯編過程4.2.3 偽指令n偽指令不是真正的指令,無
9、對(duì)應(yīng)的機(jī)器碼,在匯編偽指令不是真正的指令,無對(duì)應(yīng)的機(jī)器碼,在匯編時(shí)不產(chǎn)生目標(biāo)程序,只是用來對(duì)匯編過程進(jìn)行某種時(shí)不產(chǎn)生目標(biāo)程序,只是用來對(duì)匯編過程進(jìn)行某種控制??刂啤RG 匯編起始命令匯編起始命令n格式:格式:ORG 16位地址位地址n功能:規(guī)定該偽指令后面程序的匯編地址,即匯編后生成目功能:規(guī)定該偽指令后面程序的匯編地址,即匯編后生成目標(biāo)程序存放的起始地址。例如:標(biāo)程序存放的起始地址。例如: ORG 2000HSTART:MOV A,#64H n規(guī)定了規(guī)定了START的地址是的地址是2000H,又規(guī)定了匯編后的第一條指,又規(guī)定了匯編后的第一條指令碼從令碼從2000H開始存放。開始存放。END
10、 匯編結(jié)束指令匯編結(jié)束指令n格式:格式:ENDn功能:通知匯編程序結(jié)束匯編。在功能:通知匯編程序結(jié)束匯編。在END之后所有的之后所有的匯編指令均不予以處理。匯編指令均不予以處理。EQU 賦值命令賦值命令n格式:字符名稱格式:字符名稱 EQU 項(xiàng)(數(shù)或匯編符號(hào))項(xiàng)(數(shù)或匯編符號(hào))n功能:把功能:把“項(xiàng)項(xiàng)”賦給賦給“字符名稱字符名稱”。n注意:字符名稱不等于標(biāo)號(hào)(其后沒有冒號(hào));其中的項(xiàng),注意:字符名稱不等于標(biāo)號(hào)(其后沒有冒號(hào));其中的項(xiàng),可以是數(shù),也可以是匯編符號(hào)??梢允菙?shù),也可以是匯編符號(hào)。EQU賦值過的符號(hào)名可以用賦值過的符號(hào)名可以用作數(shù)據(jù)、代碼地址、位地址或一個(gè)立即數(shù)??梢允亲鲾?shù)據(jù)、代碼地
11、址、位地址或一個(gè)立即數(shù)??梢允?位的,位的,也可以是也可以是16位的。位的。n例如:例如:EQU 賦值命令賦值命令例例1:AA EQU R1 MOV A,AA;AA代表工作寄存器代表工作寄存器R1例例2: A10 EQU 10DELY EQU 07EBH MOV A,A10;A10作為片內(nèi)的一個(gè)直接地址作為片內(nèi)的一個(gè)直接地址 LCALL DELY;DELY作為一個(gè)作為一個(gè)16位子程序的入口地位子程序的入口地址址DATA 數(shù)據(jù)地址賦值命令數(shù)據(jù)地址賦值命令n格式:字符名稱格式:字符名稱 DATA 表達(dá)式表達(dá)式n功能:與功能:與EQU類似,但有以下差別:類似,但有以下差別:n1、EQU定義的字符名必
12、須先定義后使用,而定義的字符名必須先定義后使用,而DATA定義的字定義的字符名可以后定義先使用。符名可以后定義先使用。n2、用、用EQU偽指令可以把一個(gè)匯編符號(hào)賦給一個(gè)名字,而偽指令可以把一個(gè)匯編符號(hào)賦給一個(gè)名字,而DATA只能把數(shù)據(jù)賦給字符名。只能把數(shù)據(jù)賦給字符名。n3、DATA語句可以把一個(gè)表達(dá)式的值賦給字符名稱,其中的語句可以把一個(gè)表達(dá)式的值賦給字符名稱,其中的表達(dá)式應(yīng)是可求值的。表達(dá)式應(yīng)是可求值的。DATA偽指令在程序中用來定義數(shù)據(jù)偽指令在程序中用來定義數(shù)據(jù)地址地址DB 定義字節(jié)命令定義字節(jié)命令n格式:格式:DB(項(xiàng)或項(xiàng)表)(項(xiàng)或項(xiàng)表)n功能:通知匯編程序從當(dāng)前功能:通知匯編程序從當(dāng)前
13、ROM地址開始,保留一地址開始,保留一個(gè)字或字節(jié)串的存儲(chǔ)單元,并存入個(gè)字或字節(jié)串的存儲(chǔ)單元,并存入DB后的數(shù)據(jù)。后的數(shù)據(jù)。n注意:項(xiàng)或項(xiàng)表可以是一個(gè)字節(jié),用逗號(hào)隔開的字注意:項(xiàng)或項(xiàng)表可以是一個(gè)字節(jié),用逗號(hào)隔開的字節(jié)串或括在單引號(hào)中的節(jié)串或括在單引號(hào)中的ASCII字符串。字符串。n例如:例如:DB 定義字節(jié)命令定義字節(jié)命令 ORG 2000H DB 0A3HLIST:DB 26H,03H STR:DB ABC 經(jīng)匯編后(經(jīng)匯編后(2000H)=A3H, (2001H)=26H, (2002H)=03H, (2003H)=41H, (2004H)=42H, (2005H)=43H,(,(41H,4
14、2H,43H分別為分別為A,B,C的的ASCII碼)碼)DW 定義字命令定義字命令n格式:格式:DW 16位數(shù)據(jù)項(xiàng)或項(xiàng)表位數(shù)據(jù)項(xiàng)或項(xiàng)表n功能:把功能:把DW后的后的16位數(shù)據(jù)項(xiàng)或項(xiàng)表從當(dāng)前地址連位數(shù)據(jù)項(xiàng)或項(xiàng)表從當(dāng)前地址連續(xù)存放。每項(xiàng)數(shù)值為續(xù)存放。每項(xiàng)數(shù)值為16位二進(jìn)制數(shù),高位二進(jìn)制數(shù),高8位先放,位先放,低低8位后存放。位后存放。DW用于定義一個(gè)地址表。用于定義一個(gè)地址表。n例如:例如:DW 定義字命令定義字命令 ORG 1500HTABLE:DW 7234H,8AH,10H 經(jīng)匯編后(經(jīng)匯編后(1500H)=72H, (1501H)=34H, (1502H)=00H, (1503H)=8AH, (1504H)=00H, (1505H)=10H,DS 定義存儲(chǔ)空間命令定義存儲(chǔ)空間命令n格式:格式:DS 表達(dá)式表達(dá)式n功能:在匯編時(shí),從指定地址開始保留功能:在匯編時(shí),從指定地址開始保留DS之后表達(dá)式的值所之后表達(dá)式的值所規(guī)定的存儲(chǔ)單元以備后用。規(guī)定的存儲(chǔ)單元以備后用。n例如:例如:ORG 1000HDS 08HDB 30H,8AH匯編后,從匯編后,從1000H保留保留8個(gè)單元,然后從個(gè)單元,然后從1008H按按DB命令給內(nèi)命令給內(nèi)存賦值,即(存賦值,即(1008H)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度租船運(yùn)輸費(fèi)用及船舶交易中介服務(wù)協(xié)議
- 2025年度知識(shí)產(chǎn)權(quán)授權(quán)保證金協(xié)議
- 2025年度私家車個(gè)人車輛抵押融資合同
- 二零二五年度勞務(wù)班組退場(chǎng)及新能源項(xiàng)目設(shè)備回收協(xié)議
- 二零二五年度機(jī)床轉(zhuǎn)讓與知識(shí)產(chǎn)權(quán)保護(hù)協(xié)議
- 2025年度生物科技企業(yè)研發(fā)人員勞動(dòng)用工協(xié)議書
- 二零二五年度手房貸款買賣合同(含裝修款分期支付)
- 二零二五年度古井買賣合同范本全新解讀
- 二零二五年度科室承包責(zé)任書及考核協(xié)議
- 幼兒園與社區(qū)聯(lián)合舉辦親子活動(dòng)的合作協(xié)議
- 2024年廣州港集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 【特級(jí)教師上優(yōu)課】《黃河頌》名師課件
- 鋁合金門窗安裝施工工藝詳解
- 《包裝設(shè)計(jì)》課件-包裝設(shè)計(jì)發(fā)展的歷史
- 全國(guó)保密宣傳教育月課件
- 醫(yī)療器械經(jīng)營(yíng)企業(yè)GSP培訓(xùn)
- 語言藝術(shù)訓(xùn)練智慧樹知到期末考試答案2024年
- 報(bào)價(jià)單(產(chǎn)品報(bào)價(jià)單)
- 內(nèi)鏡逆行闌尾炎治療術(shù)
- JJG 633-2024 氣體容積式流量計(jì)
- 2024年國(guó)家社會(huì)科學(xué)基金年度項(xiàng)目申請(qǐng)書;2024年國(guó)家社會(huì)科學(xué)基金重大項(xiàng)目投標(biāo)書
評(píng)論
0/150
提交評(píng)論