電腦基礎知識匯編語言程序設計PPT課件_第1頁
電腦基礎知識匯編語言程序設計PPT課件_第2頁
電腦基礎知識匯編語言程序設計PPT課件_第3頁
電腦基礎知識匯編語言程序設計PPT課件_第4頁
電腦基礎知識匯編語言程序設計PPT課件_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 4-14-1 匯編程序約定匯編語言程序:用匯編語言編寫的、完成特定功能的指令序列。匯編程序:能將匯編語言源程序轉換成機器語言目標程序的系統(tǒng)軟件。 匯編語言程序到機器語言程序的轉換過程稱為匯編。1.手工匯編:人工查指令表匯編。用于設計短小程序或調試程序的場合。2. .機器匯編:用匯編程序進行匯編。第1頁/共44頁5.1.2 5.1.2 匯編語言規(guī)范匯編語言規(guī)范高級語言:一種面向過程且獨立于計算機硬高級語言:一種面向過程且獨立于計算機硬件結構的通用計算機語言件結構的通用計算機語言匯編語言格式與偽指令1)1)匯編語言源程序由以下兩種指令構成匯編語言源程序由以下兩種指令構成匯編語句(指令語句)匯編語

2、句(指令語句)偽指令(指示性語句)偽指令(指示性語句)2)2)匯編語句的格式:匯編語句的格式: 標號標號:操作碼操作碼操作數(shù)操作數(shù);注釋;注釋3) 偽指令:控制匯編用的特殊指令,這些指令不偽指令:控制匯編用的特殊指令,這些指令不屬于指令系統(tǒng),不產生機器代碼。屬于指令系統(tǒng),不產生機器代碼。 第2頁/共44頁2. 80C512. 80C51匯編程序設計中常用的偽指令匯編程序設計中常用的偽指令 (1)ORG 匯編起始指令 規(guī)定目標程序的起始地址,格式如下: 標號 操作碼 操作數(shù) ORG 表達式(exp)必須為16位地址 (2) EQU 賦值指令 把操作數(shù)段中的地址或數(shù)據(jù)賦值給標號,格式如下: 標號

3、操作碼 操作數(shù) 字符名稱 EQU 數(shù)或匯編符號 例1 AA EQU R1 ;R1與AA等值 則 MOV A, AA 指令與 MOV A,R1指令結果相同。第3頁/共44頁(3)DB(3)DB 從指定單元開始定義(存儲)若干個字節(jié)的數(shù)從指定單元開始定義(存儲)若干個字節(jié)的數(shù)據(jù)或據(jù)或ASCIIASCII碼字符,常用于定義碼字符,常用于定義8 8位數(shù)據(jù)常數(shù)表。位數(shù)據(jù)常數(shù)表。格式:格式: 操作碼操作碼 操作數(shù)操作數(shù) DB DB 字節(jié)常數(shù)或字節(jié)常數(shù)或ASCIIASCII字符字符例例: :ORGORG 1000H 1000HDBDB34H34H,7373,A A,B BDBDB0AH0AH,0BH0BH,

4、2020則則 (1000H1000H)34H 34H (1001H1001H)49H 49H (1002H1002H)41H 41H (1003H1003H)42H 42H (1004H1004H)0AH 0AH (1005H1005H)0BH0BH (1006H1006H)14H 14H 第4頁/共44頁(4 4) DW DW 定義字指令定義字指令 定義程序存儲器中存放的若干個字的數(shù)據(jù)或定義程序存儲器中存放的若干個字的數(shù)據(jù)或ASCIIASCII碼字符碼字符1616位常數(shù)表位常數(shù)表格式格式 DW16DW 。 例3 ORG 2200H DW 1246H,7BH,10 則 (2200H)12H (

5、2201H)46H (2202H)00 (2203H)7BH (2204H)00 (2205H)0AH (5) BIT 定義位地址指令 格式 BIT 例4 ABC BIT P1.0 Q4 BIT P2.2 則匯編后,位地址P1.0,P1.2分別賦給變量ABC和Q4。 (6) END 匯編結束指令第5頁/共44頁(7) DATA定義標號數(shù)值為指令 格式: 標號 操作碼 操作數(shù) 符號名稱 DATA 表達式如 MN DATA 3000H ;MN相當于3000HDATA與EQU的區(qū)別在于前者可以先使用后定義而后者不行,必須先定義才能使用。(8)DS定義存儲空間指令 功能:從指定地址開始保留DS之后表達

6、式的值所規(guī)定的存儲單元。 格式: 標號 操作數(shù) DS 表達式例:P105 例7第6頁/共44頁判斷框 連接點 圖:常用流程圖符號 美國國家標準化協(xié)會ANSIANSI(American National American National Standard InstituteStandard Institute)設定了一些常用的流程圖符號如圖所示:起止框 或 流程線輸入輸出框 處理框5.1.35.1.3 匯編語言程序設計步驟一. .分析工作任務、確定方案和計算方法二. .了解應用系統(tǒng)的硬件配置、性能指標。三. .建立系統(tǒng)數(shù)學模型,確定控制算法和操作步驟。四. .畫程序流程圖 表示程序結構和程序功

7、能 五. . 編制源程序1.1.合理分配存儲器單元和了解I/OI/O接口地址。2.2.按功能設計程序,明確各程序之間的相互關系。3.3.用注釋行說明程序,便于閱讀和修改調試和修改。開始1 YN?第7頁/共44頁 5 52 2 順序與循環(huán)程序設計順序與循環(huán)程序設計 5.2.1 順序程序設計(又稱簡單程序) 常用程序結構: 順序程序、循環(huán)程序、分支程序、查表程序、子程第8頁/共44頁將一個字節(jié)內的兩個將一個字節(jié)內的兩個BCD碼拆開并變成碼拆開并變成ASCII碼,碼, 存入兩個存入兩個RAM單元。單元。BCD碼放在內碼放在內RAM的的20H, 轉換后高半字節(jié)放到轉換后高半字節(jié)放到21H,低字節(jié)放,低

8、字節(jié)放22H。 BCDH BCDLBCDH BCDL0011001100110011ROMROM21H21H22H22H20H20HBCD碼碼09對應的對應的ASCII碼為碼為30H39H轉換時,將轉換時,將20H中的中的BCD碼拆開,高四位置為碼拆開,高四位置為“0011”即可。即可。BCDHBCDHBCDLBCDL上頁上頁下頁下頁回目錄回目錄ASCII碼碼即:采用先把即:采用先把20H中低中低4位位BCD碼交換出來加以轉換、碼交換出來加以轉換、存放,然后再把高存放,然后再把高4位位BCD碼交換至低碼交換至低4位加以轉換、位加以轉換、存放。存放。第9頁/共44頁 0011 BCDH0011

9、BCDH0000 00000000 0000 MOV R0, #22H MOV R0,#0 MOV A, 20H XCHD A, R0 ORL 22H, #30H SWAP A ORG 1000H ORL A, #30H MOV 21H, A SJMP $ END;R0 22H; 22H 0;兩個兩個BCD數(shù)送數(shù)送A;BCDL數(shù)送數(shù)送22H;完成轉換完成轉換;BCDH數(shù)送數(shù)送A的低的低4位位;完成轉換完成轉換;存數(shù)存數(shù)BCDH BCDLBCDH BCDLBCDLBCDL0000000000110011BCDH BCDLBCDH BCDLROMROM21H21H22H22H20H20H00000

10、000 BCDHBCDH00110011A上頁上頁下頁下頁回目錄回目錄R0第10頁/共44頁5.2.25.2.2 循環(huán)程序包含多次重復執(zhí)行的程序段,循環(huán)結構使程序緊湊。循環(huán)控制 ?循環(huán)工作循環(huán)結束循環(huán)初始化YN各個環(huán)節(jié)任務:一初始化部分(循環(huán)初態(tài))循環(huán)準備工作。如:清結果單元、設指針、設循環(huán)控制變量初值等。二循環(huán)體循環(huán)工作部分:需多次重復處理的工作。循環(huán)控制部分:1.1.修改指針和循環(huán)控制變量。2.2.檢測循環(huán)條件:滿足循環(huán)條件,繼續(xù)循環(huán),否則退出循環(huán)。三. .結束部分 處理和保存循環(huán)結果。允許0 0次循環(huán)的循環(huán)結構:在循環(huán)工作之前檢測循環(huán)條件。第11頁/共44頁簡單循環(huán)結構:循環(huán)體中不套循環(huán)

11、。例2 2:試計算下列程序段執(zhí)行時間。 程序 指令執(zhí)行周期 MOV R7MOV R7, #64H #64H 1T1TLOOPLOOP:NOP NOP 1T1T NOP NOP 1T1T DJNZ R7 DJNZ R7, LOOP LOOP 2T2T解:上述程序顯然屬于循環(huán)程序,其算法結構如圖所示。循環(huán)次數(shù)100100次,根據(jù)每條指令的執(zhí)行周期可得每次循環(huán)消耗1+1+2=41+1+2=4(機器周期),加上第一條指令,整個程序段共計消耗時間為(4 4100+1100+1)T= 401TT= 401T,當晶振頻率為6MHZ6MHZ時,T=2sT=2s,故上述程序實際消耗802s802s。第12頁/共

12、44頁多重循環(huán)循環(huán)體中套循環(huán)結構。以雙重循環(huán)使用較多。軟件延時程序。用循環(huán)程序將指令重復多次執(zhí)行,實現(xiàn)軟件延時。 試計算延時程序的執(zhí)行時間。 源程序指令周期(M) (M) 指令執(zhí)行次數(shù)DELAYDELAY:MOV R6MOV R6,#64H#64H1 1I1I1: MOV R7MOV R7,#0FFH#0FFH1 1I2I2: DJNZ R7DJNZ R7,I2I22 2 DJNZ R6 DJNZ R6,I1I12 2 RET RET2 2延時時間計算:(設時鐘f=12MHzf=12MHz,M=1sM=1s)t=(1t=(11+11+1100+2100+2100100255+2255+2100

13、+2100+21)1)M=51.3 msM=51.3 ms1 11001001001002552551001001 1第13頁/共44頁習題:試計算延時程序的執(zhí)行時間。源程序指令周期(M) (M) 指令執(zhí)行次數(shù)DELAYDELAY:MOV R6MOV R6,#100#1001 1D1D1: MOV R7MOV R7,#10#101 1D2D2: NOPNOP1 1 DJNZ R7DJNZ R7,D2D22 2 DJNZ R6 DJNZ R6,D1D12 2 RET RET2 2計算延時程序的執(zhí)行時間( (設時鐘f=6MHz)f=6MHz)。第14頁/共44頁5 53 3 分支程序設計分支程序設

14、計 5.3.1 分支程序設計綜述 分支程序應用要點是正確使用轉移指令,通常有如下3種指令。 1. 無條件轉移:與以執(zhí)行程序的結果無關,只要給出正確的轉移目標地址或偏移量即可 2. 條件轉移 :根據(jù)已執(zhí)行程序對特殊或特定存儲器的影響結果來決定程序的走向。 3. 散轉:根據(jù)某種已輸入的或運算的結果,是程序轉到各個處理程序中 第15頁/共44頁例例3 3 設設5AH5AH單元中有一變量單元中有一變量X X,請編寫計,請編寫計算下述函數(shù)式的程序,結果存入算下述函數(shù)式的程序,結果存入5BH5BH單元單元 Y= 3X , X 10 Y= 2X +10 , 10= X 155.3.2 無條件/條件轉移程序

15、第16頁/共44頁 ORG 200H MOV A,5AH ADD A,5AH ;2XA MOV R1,A MOV A,5AH ;重新把X裝入A CJNE A,#10,L1L1: JC L2 ;X15 CJNE A,#10H,L3 ;與16比L3: JNC L4 ;X15轉L4 MOV A,R1 ADD A,#10 ;10X15,Y2X10第17頁/共44頁 MOV R0,A SJMP L4L2: MOV A,R1 ADD A,5AH ;X10,Y=3X MOV R0,AL4 : MOV 5BH,R0 ;存結果 SJMP $ END第18頁/共44頁空調機制冷時,若排出的空氣溫度比吸入的空氣空調

16、機制冷時,若排出的空氣溫度比吸入的空氣 溫度低溫度低8則認為工作正常,否則便認為是故障,則認為工作正常,否則便認為是故障, 并設置故障標志。并設置故障標志。為了可靠的監(jiān)控空調機的工作情況,做兩次減法:為了可靠的監(jiān)控空調機的工作情況,做兩次減法:第一次(第一次(40H)-(41H),若),若CY=1 ,則肯定有故障;,則肯定有故障;第二次兩個溫度的差值減去第二次兩個溫度的差值減去8 ,若,若CY=1 ,則肯定,則肯定有故障有故障程序的流程圖如下:程序的流程圖如下:上頁上頁下頁下頁回目錄回目錄首先定義一些工作單元首先定義一些工作單元內部內部RAM40H41H42H吸入溫度值吸入溫度值排出溫度值排出

17、溫度值故障標志故障標志第19頁/共44頁A(40H)-(41H)CY=1?(A)-8ENDSTART Y NCY=1?42HFFH42H0 Y N流程圖:流程圖:上頁上頁下頁下頁回目錄回目錄故故 障障正常正常第20頁/共44頁 ORG 1000HSTART:MOV A,40HCLR CSUBB A,41HJC ERRORMOV 42H,#0JC ERRORSUBB A,#8SJMP EXITERROR:MOV 42H,#0FFHEXIT: SJMP $END程序:程序:;吸入溫度值送;吸入溫度值送A; 0 CY; A(40H)-(41H);CY=1,則故障,則故障;是則故障是則故障;溫度小于溫

18、度小于8?;工作正常標志工作正常標志;轉出口轉出口;設置故障標志設置故障標志若若CY1順順序執(zhí)行序執(zhí)行CY=1轉轉移移CY=1轉轉移移若若CY1順順序執(zhí)行序執(zhí)行上頁上頁下頁下頁回目錄回目錄第21頁/共44頁5.3.3 5.3.3 散轉程序設計散轉程序設計 例5 根據(jù)R3的內容,轉向各個操作程序。 R30, 轉入OPR0 R31, 轉入OPR1. R3n, 轉入OPRn 解:程序清單如下。 MOV DPTR,TAB1 ;跳轉表首地址送數(shù)據(jù)指針 MOV A,R3 ;R32 A(修正變址值) ADD A,R3 JNC NOAD ;判有否進位 INC DPH ;有進位則加到高字節(jié)地址 NOAD: JM

19、P ADPTR ;轉向形成的散轉地址入口 TAB1: AJMP OPR0 ;轉移到OPR0 AJMP OPR1. AJMP OPRn第22頁/共44頁5.4 5.4 查表程序上頁上頁 下頁下頁回目錄回目錄對于復雜參數(shù)的計算如對于復雜參數(shù)的計算如:非線性參數(shù)非線性參數(shù)對數(shù)、指數(shù)、三角函數(shù)對數(shù)、指數(shù)、三角函數(shù)微分、積分等微分、積分等用匯編編程十分困難用匯編編程十分困難甚至無法建立數(shù)學模型甚至無法建立數(shù)學模型用用查表查表的方法簡單容易的方法簡單容易80C51指令系統(tǒng)中有兩條指令具有極強的查表功能指令系統(tǒng)中有兩條指令具有極強的查表功能(1) MOVC A,A+DPTR作作基址寄存器基址寄存器作作變址寄

20、存器變址寄存器長查表指令長查表指令尋址尋址64KB(2) MOVC A,A + PC作基址寄存器作基址寄存器作變址作變址短查表指令短查表指令頁內查表指令頁內查表指令指向表格首址指向表格首址指向表格的第指向表格的第 i 項項16位數(shù)據(jù)指針位數(shù)據(jù)指針第第i項加項加變址調整值變址調整值不能不能第23頁/共44頁例例6:一個十六進制數(shù)放在一個十六進制數(shù)放在HEX單元的低四位單元的低四位,將其轉換成將其轉換成ASCII碼碼 查表程序:查表程序:解:解:十六進制十六進制 09 的的ASCII碼為碼為 30H39H, AF 的的ASCII碼為碼為 41H46H, 利用查表指令利用查表指令 MOVC A,A+

21、DPTRMOVC A,A+PC先用偽指令先用偽指令 DB 或或 DW 把表格的數(shù)據(jù)存入把表格的數(shù)據(jù)存入ROM上頁上頁下頁下頁回目錄回目錄來獲得數(shù)據(jù)來獲得數(shù)據(jù)ASCII碼表格的首址為碼表格的首址為ASCIITAB第24頁/共44頁ASCTAB:DB 30H,31H,32H,33HDB 34H,35H,36H,37HDB 38H,39H,41H,42HDB 43H,44H,45H,46H END上頁上頁下頁下頁回目錄回目錄編程編程1: 0 1 2 3 4 5 6 7 8 9 A B C D E F ORG 0200HHEX EQU 30HHEXASC: MOV A,HEXMOV DPTR,#ASC

22、TABMOVC A,A+DPTRMOV HEX,ARETANL A,#0FHDPTR(A)= 333H(A)= 1546H第25頁/共44頁例例1 1 設計一個將設計一個將1616進制數(shù)轉換成進制數(shù)轉換成ASCIIASCII碼的子程序,設碼的子程序,設1616進制進制數(shù)存放在數(shù)存放在R0R0的低的低4 4位,要求將轉換后的位,要求將轉換后的ASCIIASCII碼送回碼送回R0R0。 ORG 30H MOV A,R0 ANL A,0FH ; 保留低4位 ADD A,2 ;變址調整 MOVC A,APC;查表獲取ASCII碼值 MOV R0,A RET TAB:DB 30H,31H,32H,33H

23、,34H,35H DB 36H,37H,38H,39H,41H,42H,43H,44H,45H,46H 第26頁/共44頁5.5 子程序設計子程序設計一、子程序的概念一、子程序的概念把能完成某種基本操作并具有相同操作的程序段單獨把能完成某種基本操作并具有相同操作的程序段單獨 編成子程序。編成子程序。如:函數(shù)、如:函數(shù)、 運算、代碼轉換、延時等運算、代碼轉換、延時等利用調用子程序指令(利用調用子程序指令(ACALL或或LCALL)和從子程序返)和從子程序返回指令回指令RET使用子程序的優(yōu)點使用子程序的優(yōu)點 不必重復書寫同樣的程序,提高編程效率不必重復書寫同樣的程序,提高編程效率 程序的邏輯結構簡

24、單,便于閱讀程序的邏輯結構簡單,便于閱讀 縮短了源程序和目標程序的長度,節(jié)省了存儲器空間縮短了源程序和目標程序的長度,節(jié)省了存儲器空間 使程序模塊化、通用化、便于交流共享資源使程序模塊化、通用化、便于交流共享資源 便于按某種功能調試便于按某種功能調試上頁上頁下頁下頁回目錄回目錄第27頁/共44頁二、調用子程序的要點二、調用子程序的要點 子程序開頭的標號段必須有一個標志,該子程序開頭的標號段必須有一個標志,該標志標志既是子程序既是子程序的的名字名字又是其又是其入口地址入口地址,以便主程序調用。,以便主程序調用。在主程序中利用指令在主程序中利用指令ACALL或或LCALL可轉入子程序??赊D入子程序

25、。 該指令具有保護該指令具有保護斷點斷點的功能的功能例如:調用延時子程序例如:調用延時子程序LCALL(ACALL) DELY 子程序結尾必須使用一條從子程序返回指令子程序結尾必須使用一條從子程序返回指令RET,它具有恢復斷點的功能它具有恢復斷點的功能LCALL addr16LCALL addr16; PC addr16 ; PC addr16 轉向子程序轉向子程序;(PC(PC) (PCPC)+3+3;SP (SP)+1SP (SP)+1,(SP),(SP) PC7 PC70 0;SP (SP)+1,(SP) SP (SP)+1,(SP) PC15PC158 8;在調用子程序之前,保護;在調

26、用子程序之前,保護斷點地址斷點地址RETRET; PC15PC158 (SP) ,8 (SP) ,(SPSP) (SPSP) -1-1; PC7PC70 (SP) ,0 (SP) ,(SPSP) (SPSP) -1-1主程序主程序CALL斷點斷點子程序子程序RET1、子程序的結構、子程序的結構上頁上頁下頁下頁回目錄回目錄子程序特點:功能上有通用性,結構上有獨立性第28頁/共44頁2、正確的參數(shù)傳遞、正確的參數(shù)傳遞 在調用一個子程序時,主程序應先把有關參在調用一個子程序時,主程序應先把有關參數(shù)放到某些約定的位置(如累加器、工作寄存器數(shù)放到某些約定的位置(如累加器、工作寄存器等),子程序運行時,可

27、以從約定的位置得到有等),子程序運行時,可以從約定的位置得到有關參數(shù)。子程序結束前,也應把處理結果送到約關參數(shù)。子程序結束前,也應把處理結果送到約定位置定位置上頁上頁下頁下頁回目錄回目錄3、子程序的通用性、子程序的通用性 為了使程序具有一定的通用性,子程序的操為了使程序具有一定的通用性,子程序的操作對象應盡量采用地址或寄存器形式,而不用立作對象應盡量采用地址或寄存器形式,而不用立即數(shù)形式。即數(shù)形式。第29頁/共44頁4、現(xiàn)場保護、現(xiàn)場保護 如果子程序使用的寄存器與主程序使用的寄存器如果子程序使用的寄存器與主程序使用的寄存器 有沖突,在轉入子程序前,特別是進行中斷服務有沖突,在轉入子程序前,特別

28、是進行中斷服務 子程序時,要進行現(xiàn)場保護。子程序時,要進行現(xiàn)場保護。主程序使用的內部主程序使用的內部 RAM 內容,各工作寄存器內容,內容,各工作寄存器內容,累加器累加器 A 和和 DPTR 以及以及 PSW 等寄存器內容。等寄存器內容。將要保護的單元壓入堆棧。將要保護的單元壓入堆棧。上頁上頁下頁下頁回目錄回目錄中斷保護時中斷保護時:還可以用還可以用 RS1 RS0 來選擇其他通用寄存器組,來選擇其他通用寄存器組, 以便保護主程序現(xiàn)場。以便保護主程序現(xiàn)場。R0 R7第30頁/共44頁5.5.2 5.5.2 子程序設計子程序設計 例1 用程序實現(xiàn)c a2b2。設a、b均小于10。a存在31H單元

29、中,b存在32H單元,把c存入33H單元。 解:因本題二次用到平方值,所以在程序中采用把求平方的程序段編為子程序的方法。依題意編寫主程序和子程序如下:第31頁/共44頁 地址 機器碼 源程序 ORG 200H 200 75 81 3F MOV SP,3FH ;設堆棧指針 203 E5 31 MOV A,31H ;取a值 205 12 04 00 LCALL SQR ;求a2 208 F9 MOV R1,A ;a2值暫存R1 209 E5 32 MOV A,32H ;取b值 20B 12 04 00 LCALL SQR ;求b2 20E 29 ADD A,R1 ;求a2b2 20F F5 33

30、MOV 33H,A ;存入33H 第32頁/共44頁 ; 子程序 地址 機器碼 源程序 ORG 400H 400 04 SQR: INC A 401 83 MOVC A,APC 401 22 RET 403 1 4 9 16 TAB: DB 0,1, 4, 9,16 408 25 36 49 DB 25,36,49 40B 64,81 DB 64,81第33頁/共44頁子程序的嵌套子程序的嵌套 子程序中可調用其他子程序子程序中可調用其他子程序 數(shù)據(jù)處理程序如下數(shù)據(jù)處理程序如下.MAIN: MOV SP, #5FACALL RLC4.;定義堆棧指針定義堆棧指針;處理過程處理過程;調用子程序調用子

31、程序;上頁上頁下頁下頁回目錄回目錄第34頁/共44頁多重嵌套的過程多重嵌套的過程SPSP *PC0L *PC0H *PC1L*PC1H5FH60H61H62H63H64H65H*PC2H*PC2L 斷點入棧斷點入棧斷點入棧斷點入棧SPSP斷點斷點入棧入棧SPSPSPSP彈出斷點彈出斷點彈出斷點彈出斷點SPSP彈出斷點彈出斷點SPSP上頁上頁下頁下頁回目錄回目錄棧棧 底底 子程序與主程序的概念子程序與主程序的概念是相對的,在一個子程序中是相對的,在一個子程序中又可調用其它子程序,這就又可調用其它子程序,這就是子程序的多重嵌套。是子程序的多重嵌套。堆棧的設置是十分重要的堆棧的設置是十分重要的第35

32、頁/共44頁 多字節(jié)無符號數(shù)減法子程序多字節(jié)無符號數(shù)減法子程序NSUB(R0)=被減數(shù)低字節(jié)指針(被減數(shù)低字節(jié)指針(R1)=減數(shù)低字節(jié)指針減數(shù)低字節(jié)指針(R7)= 字節(jié)數(shù)字節(jié)數(shù)n(R0)=差數(shù)高字節(jié)地址指針差數(shù)高字節(jié)地址指針若被減數(shù)大于減數(shù),則差為正數(shù);若被減數(shù)小于若被減數(shù)大于減數(shù),則差為正數(shù);若被減數(shù)小于 減數(shù),則差為補碼數(shù)(負數(shù)),且差數(shù)為減數(shù),則差為補碼數(shù)(負數(shù)),且差數(shù)為n字節(jié)字節(jié)上頁上頁下頁下頁回目錄回目錄5.6 5.6 綜合編程舉例綜合編程舉例 第36頁/共44頁流程圖:流程圖:0CY (R0)-(R1)-CY(R0)RETNSUB(R7)-1=0?修改地址指針修改地址指針(R0)

33、+1R0,R1+1R1 NNSUB: CLR CLOOP: MOV A,R0 NOP MOV R0, ASUBB A, R1INC R0INC R1DJNZ R7, LOOPDEC R0RET程序:程序:上頁上頁下頁下頁回目錄回目錄第37頁/共44頁 雙字節(jié)無符號數(shù)快速乘法子程序雙字節(jié)無符號數(shù)快速乘法子程序MULD(R7R6)= 被乘數(shù)被乘數(shù)ab(R5R4)= 乘數(shù)乘數(shù)cd(R0)= 有定義的內部有定義的內部RAM地址地址(R0)= 乘積的高字節(jié)地址指針乘積的高字節(jié)地址指針于兩個雙字節(jié)無符號數(shù)相乘,用于兩個雙字節(jié)無符號數(shù)相乘,用8位乘法指令來完成位乘法指令來完成需要四次,每次的乘積為需要四次,每次的乘積為16位,會產生位,會產生4個部分積,共需個部分積,共需要要8個單元存放,然后再按個單元存放,然后再按“位權位權”相加,和即為所求之相加,和即為所求之積。這樣所占存儲單元太多,應該采用邊乘邊加的方法。積。這樣所占存儲單元太多,應該采用邊乘邊加的方法。用用R3、R2、R1作暫存器或工作單元。作暫存器或工作單元。上頁

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論