單片機實驗報告 實驗一
數據傳送 (RA M – 〉XRA M)
一、實驗目得
熟悉星研集成環境軟件或熟悉 Keil C51集成環境軟件得使用方法。
熟悉 MCS51 匯編指令,能自己編寫簡單得程序,掌握數據傳輸得方法。
二、實驗內容
1、熟悉星研集成環境軟件或熟悉Keil C51 集成環境軟件得安裝與使用方法。
2、編寫程序,實現內外部數據段得傳送、校驗。
三、程序框圖
開始 堆棧指針初始化計數器、地址初始化內部RAM數據傳送外部RAM一次地址指針+1
計數器-1=0?計數器、地址指針復位取內部RAM和對應的外部RAM比較是否相等地址指針+1
計數器-1=0?傳送正確傳送錯誤結束NNYYYN數據傳送程序框圖 四、實驗步驟
MAR 據數部外測檢,序程試調式方點斷、步單用使;據數入輸中HF3~ H03 MAR 部內在?得 1000H ~100FH 中得內容。熟悉查瞧特殊功能寄存器、內部數據 RAM、外部數據空間得各種方法. 五、程序清單
;將內部RAM Address1 開始得 16個字節送到外部RAM從 Address2開始得單元里,再作比較。
Address1 DATA 30H
Address2 XDATA 1000H
ORG 0000H
LJMP STAR
ORG 0100H
STAR: MOV SP,#60H
MOV R0,#Address1
MOV DPTR,#Address2
MOV R7,#10H
STAR1: MOV A,R0 ;傳送
MOVX DPTR,A
INC R0
INC DPTR
DJNZ R7,STAR1
MOV R0,#Address1
MOV DPTR,#Address2
MOV R7,#10H
STAR2: MOV B,R0 ;比較
MOVX A,DPTR
CJNE A,B,STAR3
INC R0
INC DPTR
DJNZ R7,STAR2
SJMP $ ;傳送正確 STAR3: SJMP $ ;傳送錯誤
END
實驗二
雙字節 D BCD 碼( ( 十進制數) ) 加法
一、實驗目得
熟悉51 匯編指令,學會使用星研集成環境軟件,能自己編寫簡單得程序,熟悉BCD 碼,了解如何調用系統提供得子程序. 二、實驗內容
從鍵盤上輸入4位被加數、加數,實現雙字節 BCD 碼(四位數)得加法,結果顯示在數碼管上;熟悉使用斷點、單步進入、單步、運行到光標處、修改 PC 指針、全速運行等各種調試手段;熟悉查瞧特殊功能寄存器、內部數據RAM、外部數據空間得各種方法。
三、實驗框圖
開始初始化堆棧設定"先清LED,再接收鍵輸入"標志通過鍵盤獲得4位被加數(壓縮BCD碼)置位"接收到第一個鍵后才清除LED"標志通過鍵盤獲得4位加數(壓縮BCD碼)被加數與加數的低位字節不帶進位加法被加數與加數的高位字節帶進位加法十進制調整十進制調整壓縮BCD碼(結果)轉換為非壓縮BCD碼高位0消隱顯示結果雙字節BCD加法程序框圖
四、實驗步驟
、1 :明說線連?D3 區 :CLK -- B2區:2M D3 區 :CS -- A3 區:CS5 D3區 :A0 -— A3區:A0 2、在 F4 區得鍵盤上輸入 4 位被加數、加數 3、結果顯示在 F4 區得數碼管上 五、程序清單
EXTRN CODE(Display8, GetBCDKey)
Buffer DATA 30H ;8 字節顯示緩沖區 F1 BIT 0D1H ;PSW、1
ORG 0000H
LJMP START
ORG 0100H
START: MOV SP,#60H
CLR F1 ;先清除顯示,再接收鍵輸入 START1: MOV R0,#buffer
MOV A,#4 ;按鍵次數
LCALL GetBCDKey ;得到雙字節十進制數(被加數)
SETB F1 ;接收到第一個鍵,才清除顯示
MOV R0,#buffer+4
MOV A,#4 ;按鍵次數
LCALL GetBCDKey ;得到雙字節十進制數(加數)
MOV A,buffer+1
ADD A,buffer+5
DA A
MOV buffer+5,A
MOV A,buffer
ADDC A,buffer+4
DA A
MOV buffer+4,A
CLR A
RLC A
Display: PUSH ACC ;顯示結果
MOV R0,#buffer
MOV A,buffer+5 ;低位
ACALL B1toB2 ;壓縮 BCD 碼轉換成非壓縮 BCD 碼
MOV A,buffer+4 ;高位
ACALL B1toB2
POP ACC ;進位
ACALL B1toB2
MOV R0,#10H ;最高二位消隱
INC R0
MOV R0,#10H
MOV R0,#buffer+5
MOV R7,#5
ACALL BlackDisplay ;將高位 0 消隱
MOV R0,#buffer
LCALL Display8
SJMP START1
;將一個字節壓縮 BCD 碼轉換成二個字節非壓縮 BCD 碼 B1toB2: PUSH ACC
ANL A,#0FH
MOV R0,A
INC R0
POP ACC
ANL A,#0F0H
SWAP A
MOV R0,A
INC R0
RET
Bla ckDisplay: MOV A,R0 ;將高位0消隱
JNZ Exit
MOV A,#10H
MOV R0,A
DEC R0
DJNZ R7,BlackDisplay
Exit: RET
END
實驗三
雙字節 D BCD 碼(十進制數)減法
一、實驗目得
熟悉51 匯編指令,學會使用星研集成環境軟件,掌握匯編語言得設計與調試方法.能瞧懂程序流程框圖,能自己設計程序,熟悉 BCD 碼、補碼,了解如何調用系統提供得子程序。
二、實驗內容
從鍵盤上輸入4位被減數、減數,實現雙字節 BCD 碼(四位數)得減法,結果顯示在數碼管上;進一步熟悉使用斷點、單步進入、單步、運行到光標處、修改 PC指針、全速運行等各種調試手段;熟悉查瞧特殊功能寄存器、內部數據 RAM、外部數據空間得各種方法。
三、程序框圖
設定"先清LED,再接收鍵輸入"標志堆棧初始化開始通過鍵盤獲得雙字節十進制被減數(壓縮BCD碼)置位"接收到第一個鍵后才清除LED"標志通過鍵盤獲得雙字節十進制減數(壓縮BCD碼)減數進行十進制取補雙字節十進制加法操作C=1?C=0,有進位(結果為負),再執行一次求補運算,調整為正數高位0消隱,若結果為負,前面加上"-"顯示結果YN雙字節十進制減法程序框圖
四、實驗步驟
、1 :明說線連?D3 區 :CLK —— B2區:2M
D3 區 :CS —— A3 區:CS5 D3 區 :A0 —— A3 區:A0 2、在 F4 區得鍵盤上輸入 4 位被減數、減數 3、結果顯示在 F4區得數碼管上 五、程序清單
EXTRN CODE(Display8, GetBCDKey)
Buffer DATA 30H ;8 字節顯示緩沖區 F1 BIT 0D1H ;PSW、1
ORG 0000H
LJMP START
ORG 0100H
START:
MOV SP,#60H
CLR F1 ;先清除顯示,再接收鍵輸入 START1: MOV R0,#buffer
MOV A,#4 ;按鍵次數
LCALL GetBCDKey ;得到雙字節十進制數(被減數)
SETB F1 ;接收到第一個鍵,才清除顯示
MOV R0,#buffer+4
MOV A,#4 ;按鍵次數
LCALL GetBCDKey ;得到雙字節十進制數(減數)
MOV A,#9AH
CLR C
SUBB A,buffer+5
MOV buffer+5,A
MOV A,#99H
CLR C
SUBB A,buffer+4
MOV buffer+4,A ;減數取補
MOV A,buffer+1
ADD A,buffer+5
DA A
MOV buffer+5,A
MOV A,buffer
ADDC A,buffer+4
DA A
MOV buffer+4,A
MOV F0,C ;借位標志
JC Display
MOV A,#9AH
SUBB A,buffer+5
MOV buffer+5,A
MOV A,#99H
SUBB A,buffer+4
XCH A,buffer+5
ADD A,#00H
DA A
XCH A,buffer+5
ADDC A,#00H
DA A
MOV buffer+4,A
Display:
MOV R0,#buffer ;顯示結果
MOV A,buffer+5 ;低位
ACALL B1toB2 ;壓縮BCD 碼轉換成非壓縮 BCD 碼
MOV A,buffer+4 ;高位
ACALL B1toB2
MOV R0,#10H ;最高四位消隱
INC R0
MOV R0,#10H
INC R0
MOV R0,#10H
INC R0
MOV R0,#10H
MOV R0,#buffer+3
MOV R7,#3
ACALL BlackDisplay ;將高位 0 消隱
MOV R0,#buffer
LCALL Display8
SJMP START1
BlackDi splay:
MOV A,R0 ;將高位 0 消隱
JNZ Exit
MOV A,#10H
MOV R0,A
DEC R0
DJNZ R7, B l a c kDisplay
Exit: JB F0,Exit1
INC R0
MOV R0,#11H ;負數標志 Exit1: RET
B1toB2: PUSH ACC
ANL A,#0FH
MOV R0,A
INC R0
POP ACC
ANL A,#0F0H
SWAP A
MOV R0,A
INC R0
RET
BlackDispl ay:
MOV A,R0
JNZ Exit
MOV A,#10H
MOV R0,A
DEC R0
DJNZ R7,BlackDisplay
Exit:
RET
END
四 實驗四 數制進十轉數制進六十節字四? 四字節十六進制數轉十進制數
一、實驗目得
進一步熟悉51 匯編指令,了解十六進制數轉十進制數得方法. 二、實驗內容
從鍵盤上輸入 8 位十六進制數,實現四字節十六進制數轉8位十進制數,并在數碼管上顯示。注意輸入數據必須在00000000H~05F00000H 范圍,否則,結果超出8位十進制數,無法正確顯示。
三、程序框圖
初始化堆棧開始設定"先清LED,再接收鍵輸入"標志通過鍵盤獲得4字節十六進制數置位"接收到第一個鍵后,才清除LED"標志十六進制轉十進制子程序顯示開始0→R4,R5,R6,R7(用于存放壓縮BCD碼)32→B(循環次數)CLR
C四字節十六進制數帶進位左移一位(R4R5R6R7)×2+進位位C→(R4R5R6R7),同時進行十進制調整主程序 十六進制轉十進制子程序NY返回B-1=0? 四、實驗步驟
、1
:明說線連?D3區 :CLK -- B2 區:2M D3 區 :CS -— A3區:CS5 D3區 :A0 —- A3區:A0 2、在 F4區得鍵盤上輸入 8 位十六進制數 3、結果顯示在 F4 區得數碼管上 五、程序清單
?EXTRN CODE(Display8, GetKey) Buffer DATA 30H ;8 字節顯示緩沖區 F1 BIT 0D1H ;PSW、1
ORG 0000H
LJMP START
ORG 0100H
START: MOV SP,#60H
CLR F1 ;先清除顯示,再接收鍵輸入 START1: MOV R0,#buffer
MOV A,#8 ;按鍵次數
LCALL GetKey ;得到4字節十六進制數
SETB F1 ;接收到第一個鍵后,才清除顯示
MOV R0,buffer
MOV R1,buffer+1
MOV R2,buffer+2
MOV R3,buffer+3
ACALL B4toD4 ;轉換成十進制數 Display: MOV R0,#buffer ;顯示結果
MOV A,R7 ;低位
ACALL B1toB2 ;壓縮BCD 碼轉換成非壓縮BCD 碼
MOV A,R6
ACALL B1toB2
MOV A, R5
ACALL B1toB2
MOV A,R4 ;高位
A C A LL B1toB2
MOV R0,#buffer+7
MOV R7,#7
ACALL BlackDisplay ;將高位0消隱
MOV R0,#buffer
LCALL Display8
SJMP START1
;四字節十六進制數轉十進制數:R0R1R2R3為十六進制,R4R5R6R7為壓縮 BCD碼 B4toD4:
CLR A
MOV R4,A
MOV R5,A
MOV R6,A
MOV R7,A
MOV B,#32
LOOP:
CLR C
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R1
RLC A
MOV R1,A
MOV A,R0
RLC A
MOV R0,A
MOV A,R7
ADDC A,R7
DA A
MOV R7,A
MOV A,R6
ADDC A,R6
DA A
MOV R6,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
DJNZ B,LOOP
RET
B1toB2: PUSH ACC
ANL A,#0FH
MOV R0,A
INC R0
POP ACC
ANL A,#0F0H
SWAP A
MOV R0,A
INC R0
RET
BlackDisplay: MOV A,R0 ;將高位 0 消隱
JNZ Exit
MOV A,#10H
MOV R0,A
DEC R0
DJNZ R7, B lac kDisplay
Exit: RET
END
五 實驗五 節字雙? 雙字節 D BCD 碼( ( 十 進制數) ) 乘法
一、實驗目得
進一步熟悉51 匯編指令,掌握匯編語言得設計與調試方法.根據程序流程圖,自己設計程序,了解如何調用系統提供得子程序。
二、實驗內容
從鍵盤上輸入 4 位被乘數、乘數,實現四位十進制數得乘法,結果顯示在數碼管上。
三、程序框圖
開始初始化堆棧設定"先清LED再接收鍵輸入"標志通過鍵盤獲得4位十進制被乘數轉換成二進制數并壓棧暫存置位"接收到第一個鍵后,才清除LED"標志通過鍵盤獲得4位十進制乘數轉換成二進制數(R2R3)被乘數出棧(R0R1)雙字節十六進制乘法子程序十六進制結果轉十進制壓縮BCD碼轉非壓縮BCD碼將高位0消隱顯示雙字節BCD乘法程序框圖
(R0)(R1) × (R2)(R3)(R3R1H)(R3R1L)(R3R0H)(R3R0L)(R2R1H)(R2R1L)(R2R0H)(R2R0L)R0
R1
R2
R3+雙字節十六進制乘法示意圖
四、實驗步驟
、1
:明說線連?D3 區 :CLK -— B2區:2M D3 區 :CS -— A3區:CS5 D3區 :A0 —— A3 區:A0 2、在F4 區得鍵盤上輸入 4 位被乘數、乘數 3、結果顯示在 F4 區得數碼管上 五、程序清單
EXTRN CODE(Display8, GetBCDKey)
Buffer DATA 30H ;8字節顯示緩沖區 F1 BIT 0D1H ;PSW、1
ORG 0000H
LJMP START
ORG 0100H
START: MOV SP,#60H
CLR F1 ;先清除顯示,再接收鍵輸入 START1: MOV R0,#buffer
MOV A,#4 ;按鍵次數
LCALL GetBCDKey ;得到雙字節十進制數(被乘數)
MOV R0,#buffer
ACALL D4toB2 ;轉換成二進制數
PUSH 02H
PUSH 03H
SETB F1 ;接收到第一個鍵,才清除顯示
MOV R0,#buffer
MOV A,#4 ;按鍵次數
LCALL GetBCDKey ;得到雙字節十進制數(乘數)
MOV R0,#buffer
ACALL D4toB2 ;轉換成二進制數
POP 01H
POP 00H
ACALL WordMul ;(R0R1)*(R2R3)=R0R1R2R3
ACALL B4toD4 ;轉換成十進制數 Display: MOV R0,#buffer ;顯示結果
MOV A,R7 ;低位
ACALL B1toB2 ;壓縮 BCD 碼轉換成非壓縮 BCD 碼
MOV A,R6
ACALL B1toB2
MOV A, R5
ACALL B1toB2
MOV A,R4 ;高位
ACALL B1toB2
MOV R0,#buffer+7
MOV R7,#7
ACALL BlackDisplay ;將高位 0 消隱
MOV R0,#buffer
LCALL Display8
SJMP START1
;雙字節十六進制數乘以雙字節十六進制數子程序 WordMul:
MOV A,R3 ; (
)1R()0R? MOV B,R1 ;
×
(R2)(R3)
MUL AB ;—- - ---—-———-—— -——————---———
XCH A,R3 ;
(R3R1H)(R3R1L)
MOV R7,B ;
(R3R0H)(R3R0L)
MOV B,R0 ;
(R2R1H)(R2R1L)
MUL AB ;(R2R0H)(R2R0L)
ADD A,R7 ; — - - --——-— -————-—-—------————--——
MOV R7,A ;
R0
R1
R2
R3
CLR A
ADDC A,B
XCH A,R1
MOV B,R2
MUL AB
ADD A,R7
XCH A,R2
PUSH ACC
MOV A,B
ADDC A,R1
MOV R1,A
CLR A
RLC A
XCH A,R0
POP B
MUL AB
ADD A,R1
MOV R1,A
MOV A,R0
ADDC A,B
MOV R0,A
RET
;雙字節十進制數轉二進制數 ,R0-—指向雙字節十進制數,結果在 R2R3 中 D4toB2: MOV A,R0
ANL A,#0FH
XCH A,R0
ANL A,#0F0H
SWAP A
MOV B,#10
MUL AB
ADD A,R0
INC R0
MOV B,#10
MUL AB
MOV R2,B
MOV R3,A
MOV A,R0
ANL A,#0FH
XCH A,R0
ANL A,#0F0H
SWAP A
ADD A,R3
XCH A,R2
ADDC A,#0
MOV B,#10
MUL AB
XCH A,R2
MOV B,#10
MUL AB
ADD A,R0
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET
B1toB2:
PUSH ACC
ANL A,#0FH
MOV R0,A
INC R0
POP ACC
ANL A,#0F0H
SWAP A
MOV R0,A
INC R0
RET
BlackDisplay: MOV A,R0 ;將高位 0 消隱
JNZ Exit
MOV A,#10H
MOV R0,A
DEC R0
DJNZ R7,BlackDisplay
B4toD4:
? CLR A
MOV R4,A
MOV R5,A
MOV R6,A
MOV R7,A
MOV B,#32
Exit: RET END 實驗六
雙字節BC C D碼除于單字節 D BCD 碼
一、實驗目得
進一步熟悉 51 匯編指令,掌握匯編語言得設計與調試方法.自己設計程序,了解如何調用系統提供得子程序。
二、實驗內容
從鍵盤上輸入 4 位被除數、二位除數,實現雙字節 BCD碼除于單字節BCD 碼,結果顯示在數碼管上。
三、程序框圖
開始初始化堆棧設定"先清LED,再接收鍵輸入"標志通過鍵盤獲得4位被除數,轉換為十六進制數并暫存通過鍵盤獲得單字節除數,轉換為16進制數顯示子程序置位"接收到第一個鍵后,才清除LED"標志單字節除法:被除數的高字節除以除數,結果為最終商的高8位雙字節除以單字節(商為16位)雙字節除以單字節(商只有8位)子程序最終獲得結果(16位的商,8位余數)雙字節除以單字節(商為16位)子程序循環次數8→R716位被除數(R2,R3)帶進位左移一位(最低位補0, C →F0)R2-除數(B)F0=1?C=1?差→R2,R3自加1R7-1=0?雙字節除以單字節(商為8位)子程序開始 開始返回返回主程序YYYNNN雙字節BCD除法程序框圖 四、實驗步驟
1、連線說明:
D3 區 :CLK —— B2 區:2M D3 區 :CS -- A3區:CS5 D3 區 :A0 —— A3 區:A0 2、在 F4 區得鍵盤上輸入 4 位被乘數、乘數 3、使用各種手段調試程序 4、結果顯示在 F4 區得數碼管上 單 五、程序清單 ??
?EXTRN ? CODE(Display8, GetBCDKey) Buffer DATA 30H ;8 字節顯示緩沖區 F1 BIT 0D1H ;PSW、1
ORG 0000H
LJMP START
ORG 0100H
START: MOV ? SP,#60H
CLR F1 ;先清除顯示,再接收鍵輸入 START1: MOV R0,#buffer
MOV A,#4 ;按鍵次數
LCALL GetBCDKey ;得到雙字節十進制數(被除數)
SETB F1 ;接收到第一個鍵,才清除顯示
MOV R0,#buffer
ACALL D4toB2 ;轉換成二進制數
MOV R0,#buffer
MOV A,#2
LCALL GetBCDKey ;得到 1 字節十進制數(除數)
MOV R0,#buffer
ACALL D2toB2 ;轉換成二進制數
JNZ START2
ACALL DisplayError ;除數為0,出錯
SJMP START
START2:
ACALL B2_DIV_B1 ;被除數 / 除數
ACALL Display ;顯示商與被除數
SJMP START1
; 雙字節除于單字節,R2R3為 16位二進制數,B 為除數,商在 R2R3中, 余數在 A 中 B2_DIV_B1:
PUSH B
MOV A,R2
DIV AB
MOV R2,B
POP B
PUSH ACC
CALL DIV_B2_B1
POP ACC
XCH A,R2
RET
;雙字節除于單字節,R2R3 為被除數,B為除數,結果:商 R3 中,余數在 R2中 DIV_B2_B1: MOV R7,#8 ;雙字節除于單字節 DIV2: CLR C ;R2R3 為被除數,B 為除數,
MOV A,R3 ;結果:商R3 中,余數在 R2 中
RLC ? A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV F0,C
CLR C
SUBB A,B
JB F0,DIV3
JC DIV4
DIV3: MOV R2,A
INC ? R3
DIV4: DJNZ R7,DIV2
RET
;4 字節二進制數轉十進制數,R2R3 為 16位二進制數,R4R5R6為壓縮BCD 碼 B2toD5:
CLR
A
MOV R4,A ;
MOV R5,A
MOV R6,A
MOV R7,#16
LOOP:
CLR ? C
MOV A,R3
RLC ? A
MOV R3,A
MOV A,R2
RLC ? A
MOV R2,A
MOV A,R6
ADDC A,R6
DA ? A
MOV R6,A
MOV A,R5
ADDC A,R5
DA ? A
MOV R5,A
MOV A,R4
ADDC
A,R4
DA ? A
MOV R4,A
DJNZ R7,LOOP
RET
D2toB2: MOV A,R0 ;1 字節十進制數轉二進制數
ANL A,#0FH ;R0——指向 1 字節十進制數,結果在B中
XCH A,R0
ANL A,#0F0H
SWAP A
MOV B,#10
MUL AB
ADD A,R0 ;轉換成二進制數
MOV B,A
RET
Display:
PUSH ACC ;商在低四位,余數在高三位
ACALL B2toD5 ;二進制數轉十進制數
MOV R0,#buffer
MOV A,R6
ACALL B1toB2 ;壓縮BCD碼轉換成非壓縮 BCD 碼
MOV A,R5
ACALL B1toB2
DEC R0
MOV R7,#3
ACALL BlackDisplay ;將高位0消隱
MOV buffer+4,#10H ;消隱
MOV R0,#buffer+7
POP ? ACC
MOV
B,#100
DIV ? AB
MOV R0,A
DEC R0
MOV A,B
MOV B,#10
DIV ? AB
MOV R0,A
DEC R0
MOV R0,B
MOV R0,#buffer+7
MOV R7,#2
ACALL BlackDisplay ;將高位 0 消隱
MOV R0,#buffer
LCALL Display8
RET
Displa y E rror:
MOV
R0,#buffer
MOV R7,#8
MOV A,#0FH
DisplayError1:
MOV ? R0,A
INC ? R0
DJNZ R7,DisplayError1
MOV R0,#buffer
LCALL Display8
RET
D4toB2:
MOV A,R0
ANL A,#0FH
XCH A,R0
ANL A,#0F0H
SWAP A
MOV B,#10
MUL AB
ADD A,R0
INC R0
MOV B,#10
MUL AB
MOV R2,B
MOV R3,A
MOV A,R0
ANL A,#0FH
XCH A,R0
ANL A,#0F0H
SWAP A
ADD A,R3
XCH A,R2
ADDC A,#0
MOV B,#10
MUL AB
XCH A,R2
MOV B,#10
MUL AB
ADD A,R0
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET
B1toB2:
PUSH ACC
ANL A,#0FH
MOV R0,A
INC R0
POP ACC
ANL A,#0F0H
SWAP A
MOV R0,A
INC R0
RET
Blac k D i splay:
MOV A,R0 ;將高位0消隱
JNZ Exit
MOV A,#10H
MOV R0,A
DEC R0
DJNZ R 7 , Bl a ckD isplay
END
實驗八
冒泡排序
一、實驗目得
熟悉使用 MCS51 指令,掌握匯編語言得設計與調試方法,了解如何使用高效方法對數據排序. 二、實驗內容
。列排新重大到小從據數組一將法泡冒用使求要,序程序排個一試調并寫編?
三、程 序框圖
開始初始化堆棧將待排序數組轉移到內部30H開始的RAM中數據數-1→R7,數據交換標志bSort=0
PUSH
07H被比較數地址R0=30H比較數地址R1=R0+1DEC
R7@R0>@R1?@R0與@R1互換1→bSortINC R0INC R1POP R7R7=R7-1 R7=0?bSort=0?結束NNNYYY冒泡排序程序框圖 四、實驗步驟
。列排序順得大到小從按否是就據數中 HF3~H03 MAR部內查檢,序程試調式方點斷用使?單 五、程序清單 ? ?bSort BIT F0
ORG 0000H
LJMP STAR
ORG 0100H
STAR: MOV SP,#60H ;堆棧
MOV R0,#30H ;存放待排序數據得首地址
MOV R7,#16 ;數據個數
MOV DPTR,#TAB_1
STAR1:
CLR A
MOVC A,A+DPTR
MOV R0,A ;將數據移入內部 RAM中
INC R0
INC DPTR
DJNZ R7,STAR1
MOV R7,#16-1 ;存放比較次數 STAR2: PUSH 07H
MOV R0,#30H ;存放啟始地址
CLR bSort
MOV R1,00H
INC R1
MOV A,R0
STAR3:
MOV B,A
MOV A,R1
CJNE A,B,$+3
JNC
STAR5
XCH A,R0
MOV R1,A
SETB bSort
STAR5: INC R0
INC R1
DJNZ R7,STAR3
POP 07H
JNB bSort,Exit
DEC R7
SJMP STAR2
Exit:
SJMP $
TAB_1:
DB 0H,5H,6H,3H,8H,92H,04H,57H,46H,01H,0FFH,0A0H,45H,99H,55H,66H
END
推薦訪問: 單片機 實驗 報告同志們:今天這個大會,是市委全面落實黨要管黨、從嚴治黨要求的一項重大舉措,也是對縣市區委書記履行基層黨建工作第一責任人情況的一次集中檢閱,同時是對全市基層黨建工作的一次再部署、再落實的會議。前面,**
***年,我認真履行領班子、帶隊伍、抓黨員、保穩定的基層黨建工作思路,以學習貫徹習近平新時代中國特色社會主義思想和黨的十九大歷次全會精神為主線,以市局基層黨建工作考核細則為落腳點,落實全面從嚴治黨主體
根據會議安排,現將2022年履行抓基層黨建工作職責情況報告如下:一、履職工作特色和亮點1 突出政治建設,著力在思想認識上提高。牢固樹立抓黨建就是抓政績的理念,以“黨建工作抓引領、社區治理求突破,為民服
2022年以來,在**黨委的正確領導下,堅持以習近平新時代中國特色社會主義思想為指導,深入學習宣傳貫徹黨的二十大精神,以黨建工作為統領,扎實開展夯實“三個基本”活動,以“四化四力”行動為抓手,聚力創建
各位領導,同志們:根據會議安排,現就2022年度抓基層黨建工作情況匯報如下:一、主要做法及成效(一)強化政治引領。一是不斷強化理論武裝。堅持通過黨組會、中心組學習會和“三會一課”,第一時間、第一議題學
2022年度抓基層黨建工作述職報告按照黨委工作部署,現將本人2022年度抓基層黨建工作情況報告如下:一、2022年度抓基層黨建工作情況(一)旗幟鮮明講政治將旗幟鮮明講政治放在全局發展首要位置,積極開展
2022年,是我在數計系黨總支書記這個新崗位上度過的第一個完整的工作年度。回首一年來在校黨委的正確領導下,與數計系領導班子和全體師生共同走過的日子,艱辛歷歷在目,收獲溫潤心田。作為黨總支書記,我始終牢
按照考核要求,現將本人一年來,作為統戰部長履行職責、廉潔自律等方面情況報告如下:一、著眼增強政治素質,不斷深化理論學習堅持把旗幟鮮明講政治作為履職從政的第一位要求,帶領統戰系統干部堅決擁護“兩個確立”
**年,緊緊圍繞黨工委、管委會的決策部署,全體人員團結協作、凝心聚力,緊扣黨工委“**”基本工作思路,全力開拓進取,認真履職盡責,圓滿完成各項工作任務。一、個人思想政治狀況檸檬文苑www bgzjy
按照縣委關于開展抓基層黨建述職評議會議的有關要求,經請示縣委組織部同意,今天,我們在此召開2022年度基層黨組織書記抓基層黨建述職評議會議。1 首先,請**黨委書記,**同志述職。**黨委能夠主動研究