利用匯編語言編程,對30H到39H的存儲數據按大小排序,重新存儲,并且去最大值和最小值后,求均值,存在40H
程序是在keilc V4上運行過,成功
單片機源程序如下:
-
- ORG 0000H
- LJMP MAIN
- ORG 0100H
- MAIN: MOV A,#98; 存儲數據
- MOV 30H,A;
- MOV A,#77;
- MOV 31H,A;
- MOV A,#100;
- MOV 32H,A;
- MOV A,#56;
- MOV 33H,A;
- MOV A,#86;
- MOV 34H,A;
- MOV A,#73;
- MOV 35H,A;
- MOV A,#92;
- MOV 36H,A;
- MOV A,#25;
- MOV 37H,A;
- MOV A,#81;
- MOV 38H,A;
- MOV A,#48; 存儲數據
- MOV 39H,A;
- ; 從小到大排序
- MOV R7, #09H ;設置外循環計數器
- NEXT: MOV A, R7
- MOV R5,A
- ;MOV 80H, A ;循環中的比較次數
- MOV R6, A ;設置外循環計數器
- MOV R0, #30H ;設置數據指針
- COMP: MOV A, @R0
- MOV R2, A
- INC R0
- CLR C
- SUBB A, @R0
- JC LESS
- MOV A, R2
- XCH A, @R0
- DEC R0
- MOV @R0, A
- INC R0
- LESS: DJNZ R6,COMP ;(R6)-1不等于0,轉COMP繼續內循環
- MOV R0,#30H
- ;DEC 80H ; 循環中的比較次數
- DEC R5;
- MOV A,R5;
- MOV R6,A
- ;MOV R6, 80h ; 在新的循環中,更新比較次數
- DJNZ R7, COMP ;排序結束
- ;SJMP $
- ; END
-
-
-
- LJMP AJUNZHI
- AJUNZHI:MOV A,39H; ; 保存最大值
- MOV 40H,A;
- MOV A,30H; ; 保存最小值
- MOV 41H,A;
-
- ;求平均值
- MOV R7,#08H ;8個數據 ,除去最大數,最小數,求平均值
- MOV R0,#31H ;首地址
- MOV B,#08H ;求平均值
- MOV R4,#00H ;和的進位清零
- MOV R5,#00H ; 和清零
- MOV R3,#03H ;右移次數,3次,求均值
- CLR C ;C清零
- CLR A ;A清零
- QIUHE: MOV A,R5;
- ADD A,@R0;
- MOV R5,A;
- MOV A,R4;
- ADDC A,#00H;
- MOV R4,A;
- INC R0;
- DJNZ R7,QIUHE;
- JUNZHI: MOV A,R4;
- RRC A;
- MOV R4,A;
- MOV A,R5;
- RRC A;
- MOV R5,A;
- DJNZ R3,JUNZHI;右移三次,相當于除8,求平均值
- MOV 43H,R5
- SJMP $;
- END;
-
復制代碼
所有資料51hei提供下載:
thurs-test.zip
(16.46 KB, 下載次數: 12)
2018-7-13 16:41 上傳
點擊文件名下載附件
整個項目 下載積分: 黑幣 -5
|