




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第4章章 匯編語言程序設計匯編語言程序設計4.1 匯編語言基本概念匯編語言基本概念4.2 匯編語言程序設計匯編語言程序設計4.1 匯編語言基本概念匯編語言基本概念4.1.1 程序設計語言程序設計語言4.1.2 匯編語言的語句結構匯編語言的語句結構4.1.3 偽指令偽指令返回本章首頁4.1.1 程序設計語言程序設計語言按照語言的結構及其功能可以分為三種:按照語言的結構及其功能可以分為三種:1機器語言機器語言:機器語言是用二進制代碼機器語言是用二進制代碼0和和1表表示指令和數據的最原始的程序設計語言。示指令和數據的最原始的程序設計語言。2匯編語言:匯編語言:在匯編語言中,指令用助記符表在匯編語言
2、中,指令用助記符表示,地址、操作數可用標號、符號地址及字示,地址、操作數可用標號、符號地址及字符等形式來描述。符等形式來描述。3高級語言:高級語言:高級語言是接近于人的自然語言,高級語言是接近于人的自然語言,面向過程而獨立于機器的通用語言。面向過程而獨立于機器的通用語言。 返回本節 匯編語言源程序:匯編語言源程序:用匯編語言編寫的程序用匯編語言編寫的程序稱為匯編語言源程序,簡稱源程序。計算機稱為匯編語言源程序,簡稱源程序。計算機不能直接識別和執行源程序。不能直接識別和執行源程序。 匯編(過程):匯編(過程):將匯編語言源程序翻譯成將匯編語言源程序翻譯成機器碼目標程序的過程,稱為匯編過程,或機器
3、碼目標程序的過程,稱為匯編過程,或簡稱為匯編。簡稱為匯編。 匯編程序:匯編程序:它是計算機的系統軟件之一,它是計算機的系統軟件之一,用于將匯編語言源程序翻譯成目標程序。用于將匯編語言源程序翻譯成目標程序。4.1.2 匯編語言的語句結構匯編語言的語句結構1匯編語言的指令類型匯編語言的指令類型 MCS-51單片機匯編語言,包含兩類不同單片機匯編語言,包含兩類不同性質的指令。性質的指令。(1)基本指令:)基本指令:即指令系統中的指令。它們都即指令系統中的指令。它們都是機器能夠執行的指令,每一條指令都有對是機器能夠執行的指令,每一條指令都有對應的機器碼。應的機器碼。(2)偽指令:)偽指令:匯編時用于控
4、制匯編的指令。它匯編時用于控制匯編的指令。它們都是機器不執行的指令,無機器碼。們都是機器不執行的指令,無機器碼。匯編語言及匯編過程匯編語言及匯編過程 匯編程序功能匯編程序功能 源程序源程序 (匯編指令程序)(匯編指令程序) 匯編匯編 目標程序目標程序(機器碼指令程序)(機器碼指令程序) 匯編指令與機器碼指令有一一對應的關系。匯編指令與機器碼指令有一一對應的關系。匯編程序是一種翻譯程序,將源程序翻譯成目標序。匯編程序是一種翻譯程序,將源程序翻譯成目標序。 匯編程序的匯編過程匯編程序的匯編過程 匯編有兩種方法:手工匯編、機器匯編。匯編有兩種方法:手工匯編、機器匯編。 1 1、手工匯編:、手工匯編:
5、第一次匯編:第一次匯編:確定地址,翻譯成各條機器碼,字符標號確定地址,翻譯成各條機器碼,字符標號原樣寫出;原樣寫出;第二次匯編:第二次匯編:標號代真,將字符標號用所計算出的具體標號代真,將字符標號用所計算出的具體地址值或偏移量代換。地址值或偏移量代換。 源程序源程序 目標程序目標程序 地址地址 ORG 1000H ORG 1000H START START:MOV R0MOV R0,2FH 2FH MOV R2 MOV R2,#00H #00H MOV A MOV A,R0 R0 MOV R3 MOV R3,A A INC R3 INC R3 SJMP SJMP NEXT NEXT LOOP
6、LOOP:INC R0 INC R0 CJNE R0 CJNE R0,#44H#44H,NEXTNEXT INC R2 INC R2 NEXT NEXT:DJNZ R3DJNZ R3,LOOPLOOP MOV MOV 2AH2AH,R2 R2 SJMP $ SJMP $ END END 第一次匯編第一次匯編第二次匯編第二次匯編1000 A82F1002 7A001004 E61005 FB1006 0B1007 80NEXT1009 08100A B644NEXT100D 0A100E DBLOOP1010 8A2A1012 80FEA82F7A00E6FB0B800508B644010ADB
7、F98A2A80FE 兩次掃描過程。兩次掃描過程。第一次掃描:第一次掃描:檢查語法錯誤,確定符號名字;檢查語法錯誤,確定符號名字; 建立使用的全部符號名字表;建立使用的全部符號名字表; 每一符號名字后跟一對應值(地址或每一符號名字后跟一對應值(地址或 數)。數)。第二次掃描:第二次掃描:是在第一次掃描基礎上,將符號地址轉是在第一次掃描基礎上,將符號地址轉 換成換成地址(代真);地址(代真); 利用操作碼表將助記符轉換成相應的目利用操作碼表將助記符轉換成相應的目 標碼。標碼。2、機器匯編、機器匯編2匯編語言的語句格式匯編語言的語句格式 匯編語言源程序是由匯編語句(即指令)匯編語言源程序是由匯編語
8、句(即指令)組成的。匯編語言一般由四部分組成。組成的。匯編語言一般由四部分組成。其典型的匯編語句格式如下:其典型的匯編語句格式如下: 標號:標號:操作碼操作碼操作數操作數;注釋;注釋 START: MOV A,30H ;A(30H)各段之間必須用定界符隔開。各段之間必須用定界符隔開。返回本節1、標號段、標號段 標號是用戶給指令語句設定的一個符號,標號是用戶給指令語句設定的一個符號,在匯編產生目標程序時,匯編程序將把標號在匯編產生目標程序時,匯編程序將把標號所指的指令語句目標碼首地址值賦給該標號。所指的指令語句目標碼首地址值賦給該標號。于是,于是,標號便可作為地址或數據在其它語句標號便可作為地址
9、或數據在其它語句的操作數段中引用。的操作數段中引用。 標號是以標號是以字母開頭字母開頭的的18個字母或數字串組個字母或數字串組成,注意,不能使用成,注意,不能使用指令助記符指令助記符、偽指令偽指令或或寄存器名寄存器名來作標號,標號不能重復定義。來作標號,標號不能重復定義。2、操作碼段、操作碼段 操作碼指出指令操作的性質或控制要求。該操作碼指出指令操作的性質或控制要求。該段可以是指令助記符或偽指令助記符。段可以是指令助記符或偽指令助記符。3、操作數段、操作數段 操作數是指令操作碼操作的對象,它是參加操作數是指令操作碼操作的對象,它是參加操作的數或是操作數據所在的地址。操作的數或是操作數據所在的地
10、址。 操作數有三種類型的信息:操作數有三種類型的信息: 立即數、寄存器和地址立即數、寄存器和地址。信息表示方法信息表示方法: 二進制(二進制(B) 十六進制(十六進制(H) 十進制(十進制(D或無字尾)或無字尾) PC現行值(現行值($) ASCII碼(碼( ) 指令標號等。指令標號等。 為區分數字和字符,凡數字以為區分數字和字符,凡數字以09開頭。開頭。 如:如:MOV A,#0A4H 4、注釋段、注釋段 為了便于閱讀和交流,對程序進行注釋。為了便于閱讀和交流,對程序進行注釋。匯編時對注釋部分不予理會。匯編時對注釋部分不予理會。4.1.3 偽指令偽指令1ORG:匯編起始地址:匯編起始地址 用
11、來說明程序段或數據存儲區的起始地址。用來說明程序段或數據存儲區的起始地址。格式為:格式為: ORG 十六位地址十六位地址例如程序:例如程序:ORG 1000H START:MOV A,#20H MOV B,#30H 說明程序從說明程序從1000H開始存放。在一個源程序開始存放。在一個源程序中,可以多次使用中,可以多次使用ORG指令。但不能重疊。指令。但不能重疊。 2EQU:賦值(或等值指令):賦值(或等值指令) 給變量標號賦予一個確定的數值。其值在整個程序給變量標號賦予一個確定的數值。其值在整個程序中不改變,且可多次使用。中不改變,且可多次使用。格式為:格式為:標號(字符名稱)標號(字符名稱)
12、 EQU 數或匯編符號數或匯編符號例如,例如,COUNT EQU 16H ; COUNT=16H ADDR EQU 3000H ; ADDR=3000H MOV A,COUNT ;A=16H COUNT賦值后,當作直接地址使用。賦值后,當作直接地址使用。 ADDR被定被定義為十六位地址。義為十六位地址。注意:必須先賦值,后使用。注意:必須先賦值,后使用。返回本節 3DB:定義字節數據:定義字節數據(Define Byte) 把數據以字節數的形式存放在存儲器單元中。常把數據以字節數的形式存放在存儲器單元中。常用于定義數據常數表。用于定義數據常數表。格式如下格式如下:標號:標號: DB 字節常數表
13、字節常數表例如,例如, ORG 2000H TAB: DB 14H,26,A DB 0AFH,BC 匯編結果匯編結果:(2000H)=14H (2001H)=1AH =26 (2002H)=41H (2003H)=AFH (2004H)=42H (2005H)=43H 4DW:定義字數據:定義字數據 (Define Word) 按字的形式把數據存放在存儲單元中。其中高字節數按字的形式把數據存放在存儲單元中。其中高字節數存入低位地址。存入低位地址。格式如下:格式如下:標號:標號: DB 字常數表字常數表例如,例如, ORG 2000H TAB: DW 7423H, 00ABH, 20匯編結果匯編
14、結果:(2000H)=74H (2001H)=23H (2002H)=00H (2003H)=ABH (2004H)=00H (2005H)=14H 5DS:定義存儲區:定義存儲區(Define Store) 從指定的地址單元開始,保留一定數量存儲單元。從指定的地址單元開始,保留一定數量存儲單元。格式如下:格式如下:標號:標號: DS 表達式表達式 其中,表達式一般是數值,即要保留的內存單元數。其中,表達式一般是數值,即要保留的內存單元數。例如,例如, ORG 1000H DS 5 DB 23H匯編結果匯編結果:從地址從地址1000H開始,保留開始,保留5個字節的內存單元,個字節的內存單元,而
15、(而(1005H )=23H。 6BIT:位定義:位定義 把位地址賦給確定的字符名稱。常用于定把位地址賦給確定的字符名稱。常用于定義位符號地址。義位符號地址。 格式如下:格式如下: 字符名稱字符名稱 BIT 位地址位地址例如,例如, AA BIT P1.0 BB BIT P2.0匯編后,把位地址匯編后,把位地址P1.0、 P2.0分別賦給變量分別賦給變量AA和和BB,在程序中它們就是位地址了。,在程序中它們就是位地址了。7. DATA 數據地址賦值指令數據地址賦值指令 將數據地址或代碼賦給所規定的標號。將數據地址或代碼賦給所規定的標號。格式如下:格式如下: 標號:標號: DATA 表達式表達式
16、 例如,例如,MN: DATA 1000H匯編后,匯編后, MN的值為的值為1000H。 DATA與與EQU的主要區別在于:的主要區別在于:用用DATA定義的標定義的標識符在匯編時作為標號登記在符號表中,所以可先識符在匯編時作為標號登記在符號表中,所以可先使用后定義。而使用后定義。而EQU定義的標識符在匯編時不登記定義的標識符在匯編時不登記在符號表中,因此必須先定義后使用。在符號表中,因此必須先定義后使用。8END:匯編結束:匯編結束 源程序結束指令。在源程序結束指令。在END以后所寫的指令,以后所寫的指令,匯編程序都不予處理。匯編程序都不予處理。一個源程序只能有一一個源程序只能有一個個END
17、指令,指令,放在程序結尾。放在程序結尾。小結:小結:1 1、為什么要對匯編程序進行匯編?、為什么要對匯編程序進行匯編? 2 2、機器匯編的過程是怎樣的?、機器匯編的過程是怎樣的? 3 3、常用偽指令的功能各是什么?、常用偽指令的功能各是什么? 4.2 匯編語言程序設計匯編語言程序設計4.2.1 匯編語方程序設計步驟匯編語方程序設計步驟4.2.2 順序程序順序程序4.2.3 分支程序分支程序4.2.4 循環程序循環程序4.2.5 子程序子程序4.2.6 位操作程序位操作程序返回本章首頁4.2.1 匯編語言程序設計步驟匯編語言程序設計步驟1分析問題分析問題2確定算法確定算法3設計程序流程圖設計程序
18、流程圖4分配內存單元分配內存單元5編寫匯編語言源程序編寫匯編語言源程序6調試程序調試程序返回本節流程圖符號流程圖符號端點框端點框 ;表示程序的起點和終點。;表示程序的起點和終點。處理框處理框 ;表示處理功能。;表示處理功能。判斷框判斷框 ;表示判斷功能,框內標;表示判斷功能,框內標 明檢測條件。明檢測條件。子程序框子程序框 ;表示被調用的子程序。;表示被調用的子程序。流程線流程線 ;表示程序的走向。;表示程序的走向。語句 3語句 2順序結構順序結構 入口入口語句 1 出口出口分支結構分支結構入口入口條件滿足否? 分支 1 出口出口YN 分支 2循環結構循環結構入口入口 處理 修改條件條件滿足否
19、?Y 出口出口N4.2.2 順序程序順序程序 順序程序是一種最簡單,最基本的程序。順序程序是一種最簡單,最基本的程序。特點:特點:程序按編寫的順序依次往下執行每一條程序按編寫的順序依次往下執行每一條指令,直到最后一條。指令,直到最后一條。 【例【例4.1】 將將30H單元內的兩位單元內的兩位BCD碼拆開并碼拆開并轉換成轉換成ASCII碼,存入碼,存入RAM兩個單元中。程兩個單元中。程序流程如圖序流程如圖4-1所示。參考程序如下:所示。參考程序如下:p71 結束取數據低4位轉換成ASCII碼存ASCII碼取數據高4位轉換成ASCII碼存ASCII碼開始圖4-1 拆字程序流程圖ORG2000HMO
20、VA,30H ;取值;取值ANLA,#0FH;取低;取低4位位ADDA,#30H;轉換成;轉換成ASCII碼碼MOV32H,A ;保存結果;保存結果MOVA,30H ;取值;取值SWAPA ;高;高4位與低位與低4位互換位互換ANLA,#0FH;取低;取低4位(原來的高位(原來的高4位)位)ADDA,#30H;轉換成;轉換成ASCII碼碼MOV31H,A ;保存結果;保存結果 SJMP$ END 4.2.3 分支程序分支程序1分支程序的基本形式分支程序的基本形式分支程序有三種基本形式,如圖分支程序有三種基本形式,如圖4-3所示。所示。分支程序的設計要點如下:分支程序的設計要點如下:(1)先建立
21、可供條件轉移指令測試的條件。)先建立可供條件轉移指令測試的條件。 (2)選用合適的條件轉移指令。)選用合適的條件轉移指令。(3)在轉移的目的地址處設定標號。)在轉移的目的地址處設定標號。條件滿足?AYN(a)條件滿足?ABNY(b)(c)A0A1AnK=0 K=1 K=nK=?圖4-3 分支程序結構流程圖2雙向分支程序設計舉例雙向分支程序設計舉例【例【例4.2】 設設X存在存在30H單元中,根據下式單元中,根據下式 X+2X0Y =100X=0 求出求出Y值,將值,將Y值存入值存入31H單元。單元。 X X0解:根據數據的符號位判別該數的正負,若最解:根據數據的符號位判別該數的正負,若最高位為
22、高位為0,再判別該數是否為,再判別該數是否為0。程序流程如。程序流程如圖所示。圖所示。參考程序如下:參考程序如下:A為負數?為負數?取數,取數,A(30H)開始開始結束結束A=0?YNNA|X|A64HAX+2存數,(存數,(31H)AA(3 30H)圖程序流程圖圖程序流程圖Y ORG1000H MOV A,30H ;取數;取數 JBACC.7,NEG ;負數,轉;負數,轉NEG JZZER0 ;為零,轉;為零,轉ZER0 ADD A,#02H ;為正數,求;為正數,求X+2 AJMP SAVE ;轉到;轉到SAVE,保存數據,保存數據ZER0:MOVA,# 64H ;數據為零,;數據為零,Y
23、=100 AJMP SAVE ;轉到;轉到SAVE,保存數據,保存數據 NEG: DEC A ; CPLA ;求;求 X SAVE:MOV 31H,A ;保存數據;保存數據 SJMP ;暫停;暫停 3多向分支程序設計舉例多向分支程序設計舉例【例【例4.3】 根據根據R0的值轉向的值轉向7個分支程序。個分支程序。R010,轉向,轉向SUB0;R020,轉向,轉向SUB1; R00Y= 100 X=0 求出求出Y值,并將值,并將Y值放回原處。值放回原處。 X X 4000H, 256 字節字節 mov r0, #30h mov r1, #00h mov r2, #40h mov r3, #00h
24、mov r7, #0Loop: mov dph, r0 mov dpl, r1 movx a, dptr mov dph, r2 mov dpl, r3 movx dptr, a cjne r1, #0ffh, Goon1 inc r0Goon1: inc r1 cjne r3, #0ffh, Goon2 inc r2Goon2: inc r3 djnz r7, Loop ljmp $end軟件實驗軟件實驗5 5 數據排序數據排序實驗說明:實驗說明: 有有序序的的數列數列更更有有利利于于查找查找。本。本程序用程序用的的是是“冒冒泡泡排序排序”法法,算,算法法是將是將一一個個數與數與后后面面的的數數相相比比較較,如果如果比比后后面面的的數數大大,則則交換交換,如如此將此將所有所有的的數數比比較較一一遍遍后后,最最大大的的數數就會就會在在數列數列的的最最后后面面。再再進行進行下下一一輪比輪比較較,找找出第二出第二大大數據數據,直,直到到全全部數據部數據有有序序。 用冒泡法對數進行排序(由小到大)用冒泡法對數進行排序(由小到大)思路:將相鄰兩數比較,將小的數調到前面。思路:將相鄰兩數比較,將小的數調到前面。 解:先舉四個數排序的例子解:先舉四個數排序的例子內內RAM RAM 第一次第一次 第二次第二次 第三次第三次 結果結果 30H 0 9 0 9 0 5 0 5 0 5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版農村房產交易合同
- 2025農村集體土地使用權流轉合同(受讓方)
- 2025合作伙伴產品合同樣本
- 2025健身房加盟合同范本
- 2025年安全防護欄安裝合同
- 2025華能物流季度結服務合同
- 2025合同終止勞動合同的法律責任
- 2025年土地租賃意向合同
- 2025【工程勞務合同】工程勞務合同
- 《原子與分子揭示了》課件
- 中考數學函數一次函數復習課件
- 美學《形象設計》課件
- 江蘇省建筑與裝飾工程計價定額(2014)電子表格版
- MOOC 數字電路與系統-大連理工大學 中國大學慕課答案
- 服務外包合同
- 立管改造施工方案
- 管道閉水試驗記錄表(自動計算)
- 硅酸鹽水泥熟料的煅燒及冷卻
- FZ15—100型(C2型)翻車機壓車梁故障分析
- 肺栓塞應急預案
- 畢節市財政局國庫科工作運行規程
評論
0/150
提交評論