--------
這樣的題目,要考慮壹些技巧。
動壹動腦子,不能直來直去的編。
特別是第三題,是已知數列求和,如果用循環50遍、累加,就不符合題意了。
應該用數列求和的公式來做,簡化程序,盡量縮短程序運行的時間。
3.程序如下:
MOV A, #2 ;首項
ADD A, #100 ;加上末項
MOV B, #25 ;項數/2
MUL AB ;結果在B、A中
SJMP $
結果是:
B = 09H
A = F6H
BA = 09F6H = 2550 = 2 + 4 + 6 + ... + 100
---------------------------
第二題,也可以優化如下:
2.
MOV R0, #30H
MOV R2, #0
MOV R3, #0
MOV R4, #0
LOOP:
CJNE @R0, #0, FU
INC R2 ;零的個數
JMP NEXT
FU:
CJNE @R0, #128, $ + 3
JC ZHENG
INC R4 ;負數個數
JMP NEXT
ZHENG:
INC R3 ;正數個數
NEXT:
INC R0
CJNE R0, #3AH, LOOP
SJMP $
END
程序很簡單,所用的寄存器也最少。