Thông báo

Collapse
No announcement yet.

mấy anh giải thích dùm em mấy lệnh này của 8051

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

  • mấy anh giải thích dùm em mấy lệnh này của 8051

    MOV R0,#30H
    ...
    MOV A,@R0
    ...
    INC R0
    Em xem trong tập lệnh của 8051 thì lệnh MOV R0,#30H là lệnh định địa chỉ tức thời nên em hiểu là mov giá trị 30H vào thanh ghi R0, nhưng khi xem trong giáo trình dạy của thầy thì lệnh "MOV R0,#30H" thầy lại chú thích là R0 trỏ tới địa chỉ 30H trong RAM nội, nên em phân vân quá ai giải thích dùm em chỗ này. lệnh "MOV A,@R0" thầy ghi là ghi nội dung ô nhớ đc trỏ bởi R0 vào A thì em ok. còn lệnh "INC R0" trong ví dụ trên thì khi thực hiện lệnh đó thì ô nhớ 30H sẽ tăng thành 31H hay là nội dung trong ô nhớ đó tăng lên vậy ạ.

    còn lệnh này nữa
    MOV 40H,#0
    ...
    INC 40H
    lệnh này sẽ tăng nội dung trong ô nhớ 40H lên 1, hay là tăng ô nhớ 40H thành 41H vậy ak

  • #2
    để kiểm chứng lý thuyết bạn có thể dùng proteus để mô phỏng và kiểm định lại lý thuyết xem thế nào! good luck!

    Comment


    • #3
      Lệnh Mov R0,#30H tức là đưa giá trị 30H vào thanh ghi R0.
      Còn Mov A,@R0 tức là lấy giá trị trong ô nhớ được chỉ trong thanh ghi R0 vào A.

      VD:
      (A)=05FH, (R0)=30H, (30H)=40H
      Sau khi thực hiện câu lệnh Mov A,@R0 thì: (A)=40H, (R0)=30H, (30H)=40H

      Giải thích:
      R0 chứa giá trị 30H, @R0 sẽ chỉ tới ô nhớ 30H, mà ô nhớ (30H) đang chứa giá trị là 40H => giá trị 40H sẽ đưa vào thanh ghi A.

      Lệnh INC R0 tức là tăng giá trị trong thanh ghi R0 lên 1. Tức là theo chương trình của bạn, sau khi thực hiện câu lệnh INC R0 thì giá trị trong thanh ghi R0 sẽ là 31H

      Lệnh INC 40H sẽ tăng giá trị trong ô nhớ lên 1, cụ thể là (40H)= 1.

      Thân!
      "Cái quý nhất của con người ta là sự sống. Đời người chỉ sống có một lần.Phải sống sao cho khỏi xót xa ân hận..."
      Lê lết, lay lất sống qua ngày! >:)

      Comment


      • #4
        Đúng thế, Quyển của Nguyễn Tăng Cường giải thích khá rõ, tuy nhiên một vài ví dụ sai tùm lum, @babykid: FPTsoft đang tuyển đấy bạn,
        Vũ xuân Lợi
        YM!:

        Comment


        • #5
          Hơ hơ, có điều FPTsoft nằm ở Hà Nội, còn mình ở HCM thì mần sao mà mình xin vào. Với lại tự nhận thấy khả năng mình chưa cao nên vẫn còn cần phải "bế quan luyện công" thêm nữa mới dám xin vào đó được. Mơ ước là vậy.
          "Cái quý nhất của con người ta là sự sống. Đời người chỉ sống có một lần.Phải sống sao cho khỏi xót xa ân hận..."
          Lê lết, lay lất sống qua ngày! >:)

          Comment


          • #6
            hi hi, tưởng HN cũng là mặt đất mà, m nhận được thư gạ gẫm phỏng vấn nên nói bạn biết thôi chứ m cũng k có đăng ký, híc. k biết bạn ở HCM
            Vũ xuân Lợi
            YM!:

            Comment


            • #7
              Chào bạn ylotus

              MOV R0,#30H là : (R0) <- #30H : đưa giá trị 30H vào nội dung của thanh ghi R0 .Ban hiểu vậy là oke rồi , đừng quan tâm trỏ gì cho mệt đầu

              Bạn có :
              (50H) tức là : nội dung ô nhớ có địa chỉ 50H
              ((R0)) tức là :nội dung của ô nhớ có địa chỉ là (R0)
              (R0) tức là : nội dung thanh ghi R0

              MOV A,@R0 là : (A) <- ((R0)) : Đưa nội dung của ô nhớ có địa chỉ là nội dung của thanh ghi R0 vào nội dung của thanh ghi A

              Bạn có thể xem ví dụ của bạn BabyKid

              còn MOV 40H,#0
              ....
              INC 40H
              thì như bạn BabyKid trình bày =]]

              Comment


              • #8
                Mấy câu lệnh này được giải thích rất rõ trong giáo trình 8051 phổ biến,sao bạn lại hỏi nhỉ! Hãy đọc đi chứ!

                Comment


                • #9
                  MOV 40H,#0 //gán giá trị 0 vào ô nhớ có địa chỉ 40H
                  INC 40H //tăng nôi dung ô nhớ 40H lên 1 (tức là giá trị ô nhớ 40h lúc này bằng 1)
                  Đối thủ mà ta khó chiến thắng nhất chính là bản thân !!!

                  Comment


                  • #10
                    thêm 1 vấn đề nữa mấy anh ơi. cái lệnh MOV A,@R0 nó phải đi với cú pháp như thế nào mà sao em viết như vậy bấm biên dịch toàn báo lỗi, em xem trong tài liệu của thầy sao thấy nó toàn đi với lệnh có liên quan tới DPTR ví dụ của thầy em: lấy 10byte ram ghi ra bộ nhớ ngoài
                    ORG 0000H
                    MOV R0,#30H
                    MOV DPTR,#2000H
                    LOOP:
                    MOV A,@R0
                    MOVX @DPTR,A
                    INC R0
                    INC DPTR
                    CJNE R0,#3AH,LOOP
                    END
                    ----------
                    biên dich ko bị lỗi, còn của em chỉ ghi
                    ------------
                    mov r4,#30h

                    c1:
                    mov a,@r4
                    call serial
                    ....

                    serial:
                    mov dem_bit,#8
                    c2: clr c
                    rlc a
                    mov bien_ds,c
                    setb sck
                    clr sck
                    djnz dem_bit,c2
                    ret
                    thì nó báo là lệnh MOV A,@r4 ko đúng cú pháp, có lệnh nào dùng để tăng ô nhớ lên 1 đơn vị ko ak, tại em thấy toàn là lệnh tăng nôi dung ô nhớ

                    Comment


                    • #11
                      Lệnh Mov A,@ chỉ có thể đi với 2 thanh ghi là R0 và R1 thôi, các R khác không dùng được.
                      Chúc vui!

                      Comment


                      • #12
                        Nguyên văn bởi doanhatphong Xem bài viết
                        Lệnh Mov A,@ chỉ có thể đi với 2 thanh ghi là R0 và R1 thôi, các R khác không dùng được.
                        Chúc vui!
                        ôi trời có vụ này nữa hả, hay vậy ta, cám ơn anh, để em thử lại coi sao

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X