PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > MPASM

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ...

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 17-10-2005, 10:51 AM   #6
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
chương trình thực hiện phép nhân PIC 16

Chương trình nhân 16 bit với 16 bit, kết quả lưu vào thanh ghi 16 bit

Code:
        org     0x020

;Cac thanh ghi của biến nhân và hệ số nhân

mulcH   Res      d'1'       ; MSB of multiplicand. 
mulcL   Res      d'1'       ; LSB of multiplicand. 
mulpH   Res      d'1'       ; MSB of multiplier.
mulpL   Res      d'1'       ; LSB of multiplier.

;Các thanh ghi lưu kết quả nhân

prodH   Res      d'1'       ; MSB of product. 
prodL   Res      d'1'       ; LSB of product. 

index   Res      d'1'       ; temporary counter

;Chuong trinh chinh

start       MOVLW d'0'                 ; Problem: multiply
             MOVWF mulcH
             MOVLW 0x0B                 ; 0Bh by 1016h
             MOVWF mulcL
             MOVLW 0x10                 
             MOVWF mulpH
             MOVLW 0x16                 
             MOVWF mulpL
             CALL multiply              
             GOTO $                     ; Endless loop

Multiply
             CLRF prodH                 ; Clear product to make
             CLRF prodL                 ; way for new calculation.
             MOVLW d'16'                ; Number of bits to calc. 
             MOVWF index

Multiply_loop
             BCF status,c               
             RLF prodL                  ; Shift product left.
             RLF prodH                  
             BCF status,c               
             RLF mulcL                  ; Shift multiplicand left.
             RLF mulcH                  
             BTFSS status,c             ; If carry, add multiplier
             GOTO Multiply_skip
             MOVF mulpL,w               ; to the product. Else skip.
             ADDWF prodL
             BTFSC status,c             ; 16-bit addition: prod+mulp
             INCF prodH                 
             MOVF mulpH,w               
             ADDWF prodH

Multiply_skip
             DECFSZ index               
             GOTO Multiply_loop
             RETLW 0h                   
             
             
             end
Nếu bạn nào làm VHDL hoặc PLC, muốn thực hiện phép cộng thì dùng phép toán nào? Vậy nguyên tắc của phép nhân chính là cộng rồi cộng mãi, nếu như hệ số nhân tại điểm đó là 1.

Chỉ vậy thôi
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Library cho MPASM, các module cơ bản mafd_47a MPASM 12 06-09-2009 03:51 PM
cho tôi fan mềm MPASM hoặc đường line dowload lep Chương trình dịch & các công cụ mô phỏng 3 12-10-2008 03:00 AM
Trình dịch cho MPASM của Microchip. mafd_47a MPASM 8 20-03-2008 12:37 AM
Sườn chương trình cơ bản bằng MPASM falleaf MPASM 6 19-05-2006 03:28 PM
Xin moi nguoi giup do! anzuus Cảm biến 13 19-01-2006 02:49 PM


Múi giờ GMT. Hiện tại là 11:07 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam