Thông báo

Collapse
No announcement yet.

giúp mình giải thích lệnh này với ( assembly)

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

  • giúp mình giải thích lệnh này với ( assembly)

    chào các bạn, mình load được tài liệu 8951 xem ví dụ trong đó thấy có lệnh này "
    CJNE R0,#20,$ +3
    jc off

    CJNE R0,#20,$-4

    KHÔNG HIỂU ($+3) và ($-4) ở đây có nghĩa là gì, và lệnh này thực thi thế nào. mình hiểu viết thế này là sao?


    [FONT=ff3, 'Times New Roman', Times, serif]
    [/FONT]

  • #2
    Nguyên văn bởi phuceltn Xem bài viết
    chào các bạn, mình load được tài liệu 8951 xem ví dụ trong đó thấy có lệnh này "
    CJNE R0,#20,$ +3
    jc off

    CJNE R0,#20,$-4

    KHÔNG HIỂU ($+3) và ($-4) ở đây có nghĩa là gì, và lệnh này thực thi thế nào. mình hiểu viết thế này là sao?


    [FONT=ff3, 'Times New Roman', Times, serif]
    [/FONT]
    $ là nhãn nhảy tới đầu dòng, $+x là nhảy tới giá trị vị trí lệnh hiện tại của $ cộng thêm x .Ví dụ:
    0000: MOV A,#00
    0002: MOV R0,#0FFH
    0004: MOV R1,#0FFH
    0006: MOV A,R0
    0007: CJNE R0,#20,$+3 ;SẼ TƯƠNG ĐƯƠNG CJNE R0,#20,000A
    000A: CJNE R0,#26,$-4 ;SẼ TƯƠNG ĐƯƠNG CJNE R0,#26,0006
    000D: MOV R1,#20H

    0FF

    Comment


    • #3
      Nguyên văn bởi chung1608 Xem bài viết
      $ là nhãn nhảy tới đầu dòng, $+x là nhảy tới giá trị vị trí lệnh hiện tại của $ cộng thêm x .Ví dụ:
      0000: MOV A,#00
      0002: MOV R0,#0FFH
      0004: MOV R1,#0FFH
      0006: MOV A,R0
      0007: CJNE R0,#20,$+3 ;SẼ TƯƠNG ĐƯƠNG CJNE R0,#20,000A
      000A: CJNE R0,#26,$-4 ;SẼ TƯƠNG ĐƯƠNG CJNE R0,#26,0006
      000D: MOV R1,#20H

      0FF
      cám ơn bạn đã giúp, nhưng theo như bạn giải thích thì nếu như $+1 và $ -1 thì sẽ nhảy tới đâu? ( vì trong tài liệu đã load, mình thấy có chổ lệnh " $+1" nữa).
      Ở trên bạn giải thích $+3 thì chỉ nhảy xuống dưới 1 dòng lệnh thôi. vậy đối với lệnh này, phải chăng tối thiểu phải là $+3.bạn chỉ giúp chổ này nhé, cám ơn bạn nhiều

      Comment


      • #4
        Nguyên văn bởi phuceltn Xem bài viết
        cám ơn bạn đã giúp, nhưng theo như bạn giải thích thì nếu như $+1 và $ -1 thì sẽ nhảy tới đâu? ( vì trong tài liệu đã load, mình thấy có chổ lệnh " $+1" nữa).
        Ở trên bạn giải thích $+3 thì chỉ nhảy xuống dưới 1 dòng lệnh thôi. vậy đối với lệnh này, phải chăng tối thiểu phải là $+3.bạn chỉ giúp chổ này nhé, cám ơn bạn nhiều
        phía trước mỗi lệnh bạn thấy có các dãy số, đó là số lượng byte bộ nhớ chương trình mà lệnh đó chiếm.
        Lấy ví dụ lệnh: 0007: CJNE R0,#20,$+3
        $ sẽ tương đương 0007
        nếu ta +3: thì 0007+3=000A là lệnh phía dưới
        nếu ta -1: thì 0007-1=0006 là lệnh phía trên
        nếu ta +6: thì 0007+3=000D là lệnh cuối cùng

        Nhưng trường hợp +2 ở đây: 0007+2=0009 sẽ là nhảy tới vị trí 0009. Vị trí này là 1 phần của lệnh ở 0007 nên ta sẽ nhảy tới 1 lệnh ko có trong chương trình và cũng ko biết lệnh đó là lệnh gì nếu ko khảo sát bằng mô phỏng.

        Như video bạn thấy 2 ví dụ đầu tiên là bình thường
        Đối với ví dụ thứ 3 ta thấy bộ đếm nhảy tới vị trí 0009 là lệnh MOV R7,A không có trong chương trình.

        Comment


        • #5
          mình hiểu rồi, cám ơn bạn rất nhiều!
          Vì trước giờ học asm, khi gặp các lệnh nhảy mình gán nhản cho nó nhảy tới, chứ chưa từng gặp kiểu này. vì mình không quan tâm lắm đến số byte lệnh. giờ hiểu thêm một cách viết nữa. cám ơn bạn.

          Comment


          • #6

            hay that !

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X