微控制器組合語言程式設計:對 A 中內容開平方
===================================================
1. 程式設計對累加器A中資料進行開方運算,結果仍儲存於A中。 2013-10-18 09:43
2013-10-18 21:23,提問者採納
A中資料進行開平方,如下即可:
;
MOV R2, #255
LP1:
INC R2
SETB C
SUBB A, R2
JC EXIT
SUBB A, R2
JNC LP1
EXIT:
MOV A, R2
RET
;應用《減奇數法》來開平方。
提問者評價:謝謝!
做而論道 |十七級採納率51%
===================================================
2. 請編寫將片內RAM區中30H~3AH單元中十一個位元組資料按從大到小規律排序的程式。
2013-10-18 09:42
2013-10-18 16:21,提問者採納
如下即可:
SORT: ;排序子程式
MOV R6, #10 ;11個數字,比較10次
S1:
MOV R0, #30H ;起始地址
MOV A, R6
MOV R7, A
CLR PSW.5 ;交換標誌清零
S2:
MOV B, @R0 ;取出前一個數
INC R0
MOV A, @R0 ;取出後一個數
CJNE A, B, S3 ;後-前
S3:
JNC N_JH ;夠減就不用交換
MOV @R0, B ;交換存放
DEC R0
MOV @R0, A
INC R0
SETB PSW.5 ;設立交換標誌位
N_JH:
DJNZ R7, S2
JNB PSW.5, S_END ;沒有交換過,就結束
DJNZ R6, S1
S_END:
RET
提問者評價:謝謝!
做而論道 |十七級採納率51%
===================================================
3. 請編寫將片內RAM區30H~3AH單元中十一個已從大到小排序的位元組資料去除1個最大值、
去除1個最小值後再取平均值的數值濾波程式。
若平均值大於等於100,則置7FH單元為全1,否則將該單元清零。 2013-10-18 09:42
2013-10-18 16:44,提問者採納
去除1個最大值、去除1個最小值後再取平均值,如下即可:
;
;(31H)+(32H)+...+(39H)--->R2R3
;
MOV R0, #31H
MOV R2, #0
MOV R3, #0
LP1:
MOV A, @R0
ADD A, R3
MOV R3, A
JNC NEXT
INC R2 ;和在R2R3
NEXT:
INC R0
CJNE R0, #3AH, LP1 ;迴圈9次
;--------------------------------
;取平均值,即除以9:
;R2R3 / 9 ---> R4
MOV R4, #255
LP2:
INC R4
CLR C
MOV A, R3
SUBB A, #9
MOV R3, A
MOV A, R2
SUBB A, #0
MOV R2, A
JNC LP2
;--------------------------------
;若平均值大於等於100,則置7FH單元為全1,否則將該單元清零:
MOV 7FH, #255
CJNE R4, #100, $ + 3
JNC EXIT
INC 7FH
EXIT:
RET
提問者評價:謝謝!
做而論道 |十七級採納率51%
===================================================
4. 請編寫程式,將片外RAM區1000H單元開始的30個短整數按正、負數分開儲存,負數從30H單元開始存放,非負數從40H單元開始存放。 2013-10-18 09:42
2013-10-18 16:16,提問者採納
短整數,按照單位元組資料來處理,如下即可:
;
MOV DPTR, #1000H
MOV R0, #30H
MOV R1, #40H
MOV R2, #30
LOOP:
MOVX A, @DPTR
JNB ACC.7, ZH
MOV @R0, A
INC R0
SJMP NEXT
ZH:
MOV @R1, A
INC R1
NEXT:
INC DPTR
DJNZ R2, LOOP
RET
提問者評價:謝謝!
做而論道 |十七級採納率51%
===================================================
5. 請編寫統計片外資料儲存器區2000H單元開始的256單元中ASCII碼字元’A’的個數的程式,統計資料存放在片內RAM的6FH單元中。 2013-10-18 09:41
2013-10-18 16:11,提問者採納
如下即可:
;
MOV DPTR, #2000H
MOV R2, #0
MOV 6FH, #0
LOOP:
MOVX A, @DPTR
CJNE A, #'A', NEXT
INC 6FH
NEXT:
INC DPTR
DJNZ R2, LOOP
RET
提問者評價:謝謝!
做而論道 |十七級採納率51%
===================================================
6. 請編寫程式,在片外擴充套件資料儲存器區2000H單元開始的32個單元中尋找最大值,存放到片內RAM的68H單元中。 2013-10-18 09:41
2013-10-18 16:09,提問者採納
如下即可:
;
MOV DPTR, #2000H
MOV R2, #32
MOV 68H, #0
LOOP:
MOVX A, @DPTR
CJNE A, 68H, $ + 3
JC NEXT
MOV 68H, A
NEXT:
INC DPTR
DJNZ R2, LOOP
RET
提問者評價:謝謝!
做而論道 |十七級採納率51%
===================================================
呵呵,一口氣編寫了六個小程式。