Social Icons

twitterfacebookgoogle plusrss feedemail

12/31/2009

微處理機(8051)上機考古題 Arithmetic 2-11

11.Write a program to perform the multiplication of a 2-byte BCD number stored in (20H-21H) and a one-byte BCD stored in 22H. And put the result in BCD from at (30-32H). For example, if (20H-21H)=7654H, (22H)=34H, then (30-32H)=260236H.(2009.12.31PM10:42做程式碼簡化的動作)

 本文章題目版權歸屬於朱老師,另外本文所提供答案並不保證其正確性


程式碼如下:
source_h equ 20H
source_l equ 21H
source_mul equ 22H

dest_h equ 30H
dest_m equ 31H
dest_l equ 32H

mov source_h,#76H
mov source_l,#54H
mov source_mul,#34H 

MOV A,source_mul
MOV B,#10H
DIV AB
MOV source_mul,B
MOV B,#10
MUL AB
ADD A,source_mul
MOV source_mul,A

MOV R2,source_mul 

AGAIN:
MOV A,dest_l
ADD A,source_l
DA A
MOV dest_l,A

MOV A,dest_m
ADDC A,source_h
DA A 
MOV dest_m,A

MOV A,dest_h
ADDC A,#00H
DA A
MOV dest_h,A

DJNZ R2,AGAIN

END

如果要複製上方程式碼,請點擊程式碼上方的    圖示會跳出一個視窗,複製即可


AGAIN後半部小解釋:
因為相乘其實等於自己做相加
所以AGAIN後面都是在做自己的相加
例如
10*5其實也等於10+10+10+10+10
接下來只要考慮CY的問題
就能完成乘法運算

如果發現文章有錯誤,歡迎留言告知~謝謝指教!

沒有留言:

張貼留言

俗話說
凡走過必留下痕跡,凡住過必留下鄰居
凡爬過必留下樓梯,凡來過必留下IP
看過文章之後歡迎留下您寶貴的意見喔!

 
 
无觅相关文章插件,迅速提升网站流量