Re: [問題] 16進和10進轉換程式(8051)
※ 引述《WolfLord (呆呆小狼)》之銘言:
: DecConv:
: ;DecConv(char num,char data *byte);
: MOV A,R7 ;Take num
: MOV R0,R5 ;Take *byte
: DA A
: MOV @R0,A ;Put into byte[0]
: SWAP A
: INC R0
: MOV @R0,A ;Put into byte[1]
: MOV R0,R5
: MOV A,#15 ;byte[0]&=0x0f
: ANL A,@R0
: MOV @R0,A
: INC R0
: MOV A,#15 ;byte[0]&=0x0f
: ANL A,@R0
: MOV @R0,A
: RET
不過這樣看來,我覺得用DIV比較快耶
CYCLE CODE
MOV A,R7 ;Take num 1 1
MOV B,#0A ;B=10d 1 2
MOV R0,R5 ;Take *byte 2 2
DIV AB 4 1
MOV @R0,A ;十位數 1 1
INC R0 1 1
MOV @R0,B ;個位數 1 1
RET
這段用C來表示:
Byte[0]=num/10;
Byte[1]=num%10;
不過編譯器會不會判定成只用一個DIV處理可能要看造化了
--
連連看:狼與辛香料(小梅漫畫版) 限制級
秋色天空 普遍級
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.180.163
→
08/26 16:18, , 1F
08/26 16:18, 1F
推
08/26 17:03, , 2F
08/26 17:03, 2F
→
08/26 21:58, , 3F
08/26 21:58, 3F
推
08/26 22:10, , 4F
08/26 22:10, 4F
→
08/26 22:11, , 5F
08/26 22:11, 5F
→
08/26 22:13, , 6F
08/26 22:13, 6F
我算了一下,我的程式碼總共11 CYCLE, 9 CODE
如果改用DA A的話,我能寫到的極限:
CYCLE CODE
MOV A,R7 ;Take num 1 1
MOV R0,R5 ;Take *byte 2 2
DA A 1 1
MOV R1,A 1 1
SWAP A 1 1
ANL A,#0x0F 1 2
MOV @R0,A ;十位數 1 1
INC R0 1 1
MOV A,R1 1 1
ANL A,#0x0F 1 1
MOV @R0,A ;個位數 1 1
RET
總共12 CYCLE, 13 CODE
推
08/26 22:25, , 7F
08/26 22:25, 7F
改了
※ 編輯: SmallBeeWayn 來自: 122.116.180.163 (08/27 00:51)
推
08/27 01:15, , 8F
08/27 01:15, 8F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章