View Single Post
Old 28-04-2009, 06:12 PM   #1
thaithien
Đệ tử 7 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 213
:
Hỏi về INDF và FSR

Mình có đoạn chương trình như sau:
Code:
title "Prog1 Simpple addressing"
LIST P=16F84,F=INHX8M,R=DEC
INCLUDE "p16f84.inc"
;registers
test equ 12
__config _CP_OFF & _WDT_OFF & _RC_OSC
PAGE
;main
	org 0
	clrf test
	movf test,w
	addlw 'A'
	movwf test

	movlw test
	movwf FSR
	
	movf INDF,w
	incf INDF
	movwf INDF
Finished
	goto $
	end
Khi chạy debug thì không hiểu lắm về các kết quả.Cụ thể là có vài câu hỏi thế này :
1. Chỉ thị EQU là gán tên ký hiệu cho một chuỗi hoặc hằng số,vậy nó mang giá trị được gán hay là địa chỉ ?(Mình nghĩ là giá trị được gán,ví dụ test EQU 12 thì test=12).Có phải bất cứ khi nào gọi test thì đều gọi giá trị 12 ?
2. Thanh ghi INDF có chức năng như thế nào vậy ?Công dụng của nó là để làm con trỏ ?
3. Hai dòng lệnh sau đây là như thế nào ?(cũng lấy trong đoạn chương trình trên).TRước dòng lệnh thì test đang giữ giá trị là 0x41 (tức là d65).Ta cho trực hiện 2 lệnh này :
Code:
	
movlw test
movwf FSR
Nhưng kết cục là thanh w mang giá trị 12,mình nghĩ chính là giá trị đã khai báo ở dòng test EQU 12.NHư vậy là sao ?

4. Trong cửa sổ watch có các symbol nhưng mình không hiểu rõ lắm:
Z có phải là cờ zero không ?Lúc đầu thì mình cũng nghĩ vậy nhưng khi cho chạy chương trình từng bước thì nó lại nhảy 1,2,3,4...Nhưng nhìn vào thanh ghi status thì cờ zero vẫn bằng không sau các dòng lệnh.Vậy 2 cái z này khác nhau như thế nào vậy ?

5 Các symbol W,WR,WREG là sao ?Có khác nhau không.Cái nào mới chính là thanh làm việc?(mình nghĩ là WREG).Không biết có phải không nên hỏi cho chắc ăn).

Hy vọng nhận được câu trả lời sớm.Cảm ơn nhiều !!!!!
thaithien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn