Thông báo

Collapse
No announcement yet.

thắc mắc về lệnh MOVC của 8051

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • thắc mắc về lệnh MOVC của 8051

    Em đang học về 8051, gặp ngay lệnh

    MOVC A,@A+PC

    em không hiểu rõ lám về ý nghĩa câu lệnh này.

    Giả sử em có Vd:

    rel_pc:
    mov r1,#0
    mov a,r1
    inc a ; em thắc mắc tại sao phải tăng A , nếu không thì sao???
    movc a,@a+pc ; ý nghĩa chỗ này là gì thế ???????????????/
    ret
    db 66h ; DB là gì thế ??????????
    db 77h
    db 88h
    db 99h



    Các bác ai biết, chỉ giùm em với


    em còn thấy lệnh: MOVC A,@A + DPTR ; lệnh này với @A+PC khác nhau chỗ nào thế????

  • #2
    MOVC A,@A+PC : lấy dữ liệu ở thanh ghi có địa chỉ của A+PC (con trỏ chương trình) trỏ tới, lưu vào A
    VD:
    A = 3, PC = 4 --> địa chỉ của thanh ghi chứa dữ liệu cần lấy = A + PC = 7. Tức là nếu có lệnh MOVC A,@A+PC thì CPU sẽ vào thanh ghi có địa chỉ là 7 và lấy dữ liệu ra gán vào A

    MOVC A,@A + DPTR: cũng tương tự
    ------------------------------------------------------------------------------------
    0933.390.864 -
    Mỏ hàn, thiếc hàn, IC....

    Comment


    • #3
      bạn đọc kỹ cuốn Cấu trúc và lập trình họ 8051 sẽ rõ các lệnh DB và những gì cơ bản nhất về vdk
      ------------------------------------------------------------------------------------
      0933.390.864 -
      Mỏ hàn, thiếc hàn, IC....

      Comment


      • #4
        Nguyên văn bởi jacop01234 Xem bài viết
        Em đang học về 8051, gặp ngay lệnh

        MOVC A,@A+PC

        em không hiểu rõ lám về ý nghĩa câu lệnh này.

        Giả sử em có Vd:

        rel_pc:
        mov r1,#0
        mov a,r1
        inc a ; em thắc mắc tại sao phải tăng A , nếu không thì sao???
        movc a,@a+pc ; ý nghĩa chỗ này là gì thế ???????????????/
        ret
        db 66h ; DB là gì thế ??????????
        db 77h
        db 88h
        db 99h



        Các bác ai biết, chỉ giùm em với


        em còn thấy lệnh: MOVC A,@A + DPTR ; lệnh này với @A+PC khác nhau chỗ nào thế????
        -DB là khai báo o nhớ trong bộ nhớ chương trình. Nếu như đoạn lệnh trên thì. Sau khi đặt lệnh RET vào bộ nhớ thì trình biên dịch sẽ đặt tiếp 4 byte có giá trị 66H,77H,88H,99H vào ngay sau đó.
        - Thực ra đoạn lệnh của bạn không sai về cú pháp nhưng chả có ý nghĩa gì.
        - Lệnh MOVC A,@A+PC là gán giá trị của ô nhớ trong bộ nhớ chương trình (phân biệt với lệnh truy suất bộ nhớ dữ liệu) có địa chỉ [A+PC] vào thanh ghi A.
        -MOVC A,@A + DPTR :gà gán giá trị của ô nhớ trong bộ nhớ chương trình có địa chỉ [A+DPTR] vào thanh ghi A.
        - Điểm khác nhau.là DPTR là thanh ghi nháp của 8051 do vậy có thể tuỳ ý gán giá trị. Còn PC là bộ đếm chương trình nó quyết định xem lệnh nào được thực hiện. Do vậy không được thay đổi giá trị của PC một cách tuỳ tiện.

        Comment


        • #5
          Lâu ko ngó tới ASM. Hic _giờ như mù tịt.


          Add: 97 Quán Nam - Lê Chân - Hải Phòng.
          Tel: 031 518648 Phone: 0904 283 505

          Comment


          • #6
            vậy a ơi trong dòng lệnh :
            movc a,@a+pc thì giá trị pc là bằng bao nhiêu
            movc a,@a+dptr thì giá trị của dptr là bao nhiêu
            giữa lệnh movc và movx khác nhau như thế nào

            Tel:0973968101

            Comment


            • #7
              Nguyên văn bởi kien_hatinh Xem bài viết
              vậy a ơi trong dòng lệnh :
              movc a,@a+pc thì giá trị pc là bằng bao nhiêu
              movc a,@a+dptr thì giá trị của dptr là bao nhiêu
              giữa lệnh movc và movx khác nhau như thế nào
              MOVC A,@A+PC thì PC lúc này có giá trị là giá trị của bộ đếm PC hiện tại (cái này chú phải đọc hiểu về PC mới đc.
              MOVC A,@A+DPTR thì DPTR sẽ đc nạp giá trị cụ thể trước đó rồi
              MOVC thực hiện tra giá trị đc khai báo trong ROM nội, còn MOVX là giao tiếp với RAM ngoài

              Comment


              • #8
                cho mình hỏi chút cái lệnh MOVC A,@A+DPTR là cộng giá trị của thanh ghi con trỏ dptr với thanh ghi a rồi được bao nhiêu trỏ đến ô nhớ có địa chỉ là giá trị này gán cho a nhưng dptr là thanh ghi 16 bít vậy lỡ dptr có giá trị toàn là con số 1 vậy là FFFFH mà trong rom nội đâu có ô nhớ nào có địa chỉ lớn như vầy đâu. các bạn giải thích giùm nha
                cảm ơn mấy bạn nhiều

                Comment


                • #9
                  liuchengzhong@gmail.com bác chung1608 vào mail. e có gửi nhờ bác cái
                  Tokyo Driff

                  Comment


                  • #10
                    Nguyên văn bởi toanddt Xem bài viết
                    cho mình hỏi chút cái lệnh MOVC A,@A+DPTR là cộng giá trị của thanh ghi con trỏ dptr với thanh ghi a rồi được bao nhiêu trỏ đến ô nhớ có địa chỉ là giá trị này gán cho a nhưng dptr là thanh ghi 16 bít vậy lỡ dptr có giá trị toàn là con số 1 vậy là FFFFH mà trong rom nội đâu có ô nhớ nào có địa chỉ lớn như vầy đâu. các bạn giải thích giùm nha
                    cảm ơn mấy bạn nhiều
                    thì sẽ ra kết quả 0000 , các cờ không bị ảnh hưởng ..mấy con MCS 51 mà gì có ROM nào 64K đâu mà lên tận FFFFh

                    Comment


                    • #11
                      Nguyên văn bởi khiemauto Xem bài viết
                      thì sẽ ra kết quả 0000 , các cờ không bị ảnh hưởng ..mấy con MCS 51 mà gì có ROM nào 64K đâu mà lên tận FFFFh
                      ai bảo, P89V51RD2 64k flash ROM nhá

                      Comment


                      • #12
                        cho hỏi lúc đầu mình gán giá trị cho DPTR là MOV DPTR, #bangma
                        giờ mình muốn sau mỗi vòng lặp gán lại giá trị cho DPTR tăng thêm 1 giá trị thì làm thế nào

                        Comment


                        • #13
                          Lâu lắm rồi ko lên,
                          Dùng lệnh INC DPTR nhé.
                          Không biết ngày mai sẽ ra sao?
                          Mà có ra sao cũng chẳng sao.

                          Comment


                          • #14
                            Code lấy dữ liệu từ bảng lần lwowntj đưa ra cổng P2

                            K:

                            MOV R1,#10 ;So phan tu can truy cap trong bang
                            MOV DPTR,#BANG


                            LK: CLR A
                            MOVC A,@A+DPTR
                            MOV P2,A
                            INC DPTR

                            DJNZ R1,LK


                            JMP K


                            BANG:
                            DB 000
                            DB 000
                            DB 255
                            DB 000
                            DB 255
                            DB 000
                            DB 255
                            DB 000
                            DB 001
                            DB 003
                            END



                            Comment

                            Về tác giả

                            Collapse

                            jacop01234 Tìm hiểu thêm về jacop01234

                            Bài viết mới nhất

                            Collapse

                            Đang tải...
                            X