一段C51的二進制轉十進制的程序
LOOP1:
CLR A ;二轉十子程序MOV R2,TH0 MOV R3,TL0
MOV R4,A ;將R4R5R6分別清零
MOV R5,A
MOV R6,A
MOV R7,#10H ;R7=(#10H)=16
LOOP2:
CLR C ;請進爲標誌位,爲循環移位做準備
MOV A,R3 ;低八位循環左移 最高位數據給了C 最低位補零
RLC A
MOV R3,A
MOV A,R2 ;高八位左移。 C中的值移進R2的最低位(即高八位的最低位)
RLC A
MOV R2,A
MOV A,R6 ;將R6中的值乘以2(帶進位位的)
ADDC A,R6
DA A ;十進制調整指令
MOV R6,A
MOV A,R5 ;同理R5乘以二
ADDC A,R5
DA A
MOV R5,A
MOV A,R4 ;同理R4乘以二
ADDC A,R4
DA A
MOV R4,A
DJNZ R7,LOOP2 ;該段程序循環16次 ,因爲總共有16個位的數據
RET
CLR A ;二轉十子程序MOV R2,TH0 MOV R3,TL0
MOV R4,A ;將R4R5R6分別清零
MOV R5,A
MOV R6,A
MOV R7,#10H ;R7=(#10H)=16
LOOP2:
CLR C ;請進爲標誌位,爲循環移位做準備
MOV A,R3 ;低八位循環左移 最高位數據給了C 最低位補零
RLC A
MOV R3,A
MOV A,R2 ;高八位左移。 C中的值移進R2的最低位(即高八位的最低位)
RLC A
MOV R2,A
MOV A,R6 ;將R6中的值乘以2(帶進位位的)
ADDC A,R6
DA A ;十進制調整指令
MOV R6,A
MOV A,R5 ;同理R5乘以二
ADDC A,R5
DA A
MOV R5,A
MOV A,R4 ;同理R4乘以二
ADDC A,R4
DA A
MOV R4,A
DJNZ R7,LOOP2 ;該段程序循環16次 ,因爲總共有16個位的數據
RET
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.