1. 程式人生 > 其它 >C51彙編求最大值

C51彙編求最大值

題目描述:

設在DAT開始的片內RAM中存放8個無符號位元組數,求最大值,並將最大值存放在A中

輸入資料:

55H,7BH,45H,80H,0F5H,0CH,23H,7BH
最大值為:0F5H,所以A中應該儲存0F5H

演算法思想:

直接使用冒泡法即可,比較大小用減法和Cy來實現跳轉

原始碼:

ORG 0000H
LJMP INIT
ORG 0100H
INIT:         ;初始化,向60H開始的RAM裡面存資料,存8個
    MOV R0,#60H
    MOV @R0,#55H
    INC R0
    MOV @R0,#7BH
    INC R0
    MOV @R0,#45H
    INC R0
    MOV @R0,#80H
    INC R0
    MOV @R0,#0F5H
    INC R0
    MOV @R0,#0CH
    INC R0
    MOV @R0,#23H
    INC R0
    MOV @R0,#7BH
INIT2:       ;迴圈初始化部分,A用來儲存最大值,R0暫存器用來訪問RAM儲存器
CLR A MOV R0,#60H MOV R2,#8H MOV R3,#0H CLR C MAX: MOV R3,A ;提前儲存A的值 SUBB A,@R0 ;用減法和Cy來判斷A和@R0的大小關係,
C=0則A大(因為A-@R0夠減,無需借位)
   XCH A,R3 JNC TT MOV A,@R0 ;ELSE @R0大 TT: CLR C INC R0 DJNZ R2,MAX SJMP $ END

除錯結果:

RAM儲存器:

暫存器區:

暫存器也在RAM上(高128B,80H~0FFH)

C=0則A大(因為A-@R0夠減