View Single Post
Old 06-02-2006, 10:18 AM   #3
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
Trong cách viết trên, F cũng đồng thời chỉ ra hai cách viết cho lệnh GOTO.

Code:
LOOP   GOTO    LOOP


Code:
GOTO  $
Hai cách viết này tương đương nhau. Trong đó, $ thay cho vị trí con trỏ tại vị trí lệnh đang thực hiện.

Chính vì vậy, trong đoạn code trên, thay vì viết

Code:
loop
DECFSZ delay_reg1, F ; giảm giá trị thanh ghi “delay_reg1”và so sánh với 0 và ghi lại vào delay-reg1
GOTO loop1 ; nếu chưa bằng 0 nhảy tới label “loop1”
GOTO next ; nếu đã băng 0 chương trình delay hoàn tất
loop1
...
Chúng ta co thể thay thành:

Code:
loop
DECFSZ delay_reg1, F ; giảm giá trị thanh ghi “delay_reg1”và so sánh với 0 và ghi lại vào delay-reg1
GOTO $+2 ; nếu chưa bằng 0 nhảy tới label “loop1”
GOTO next ; nếu đã băng 0 chương trình delay hoàn tất
...
Và đoạn code phía dưới:

Code:
loop1
MOVLW d’255’
MOVWF delay_reg2 ; đưa vào thanh ghi “delay_reg2” giá trị 255

DECFSZ delay_reg2, F ; giảm giá trị thanh ghi “delay_reg2” và so sánh với 0 và ghi lại vào delay_reg2
GOTO $-1 ; 
...
chúng ta co thể thay lại thành:

Code:
loop1
MOVLW d’255’
MOVWF delay_reg2 ; đưa vào thanh ghi “delay_reg2” giá trị 255
loop2
DECFSZ delay_reg2, F ; giảm giá trị thanh ghi “delay_reg2” và so sánh với 0 và ghi lại vào delay_reg2
GOTO loop2;
...
Chúc vui.

thay đổi nội dung bởi: falleaf, 12-02-2006 lúc 01:40 PM.
falleaf vẫn chưa có mặt trong diễn đàn