Thông báo

Collapse
No announcement yet.

Lập trình ASM cho 8051

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

  • Lập trình ASM cho 8051

    Chào các bạn! Mình có một vấn đề nhỏ mà không thể giải quyết, mong thỉnh giáo từ các bạn !!!!!
    Trong 3 ô nhớ , ví dụ: 40h, 41h, 42h ; có chứa 3 giá trị thập phân, ví dụ : 1, 2, 0.
    Mình muốn gộp chúng lại thành 1 số duy nhất ( số 120 ) và lưu vào 1 thanh ghi R0 thì phải làm thế nào ?
    Mình đã dùng lệnh :
    MOV A,41h
    MOV B,#10
    MUL AB
    để tạo ra số hàng chục, và lệnh sau :
    MOV A,40h
    MOV B,#100
    MUL AB
    để tạo ra số hàng trăm.
    nhưng ko ổn vì A và B ko chứa 2 số riêng biệt mà lại chứa Byte cao và Byte thấp của kết quả.
    Các bạn giúp mình nhé !!!!!! Help me !!!!!!!!!!!!!!!!!!
    Thank !!!!

    Mobile: 0169.966.3867
    Email:

  • #2
    Nguyên văn bởi success.tl Xem bài viết
    Chào các bạn! Mình có một vấn đề nhỏ mà không thể giải quyết, mong thỉnh giáo từ các bạn !!!!!
    Trong 3 ô nhớ , ví dụ: 40h, 41h, 42h ; có chứa 3 giá trị thập phân, ví dụ : 1, 2, 0.
    Mình muốn gộp chúng lại thành 1 số duy nhất ( số 120 ) và lưu vào 1 thanh ghi R0 thì phải làm thế nào ?
    Mình đã dùng lệnh :
    MOV A,41h
    MOV B,#10
    MUL AB
    để tạo ra số hàng chục, và lệnh sau :
    MOV A,40h
    MOV B,#100
    MUL AB
    để tạo ra số hàng trăm.
    nhưng ko ổn vì A và B ko chứa 2 số riêng biệt mà lại chứa Byte cao và Byte thấp của kết quả.
    Các bạn giúp mình nhé !!!!!! Help me !!!!!!!!!!!!!!!!!!
    Thank !!!!
    Vì cái chỗ tôi tô xanh ấy, R0 giá trị max là 255 thôi, nên số bạn muốn lưu có 40h max là 2 và khi 40h max thì 41h max phải là 5...
    Mà ý bạn là muốn số đó max là 999 thì phải. Bạn xem lại đi nhé.

    email:mahaco@fpt.vn

    Comment


    • #3
      Bạn hoctro89xxx thân mến ! Đúng là R0 chỉ lưu được giá trị Max là 255 và mình cũng chỉ muốn lưu các số nhỏ hơn 255 thôi ! Bạn giúp mình nhé !
      Cảm ơn nhiều !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

      Mobile: 0169.966.3867
      Email:

      Comment


      • #4
        Sao ko làm thế này nhỉ:
        Code:
        MOV R0,#0
        MOV R2,#3
        MOV R1,#40H
        MOV a,R0
        LAP:
        MOV B,#10
        MUL ab
        ADD a,@R1
        INC R1
        DJNZ R2,LAP
        MOV R0,a
        Last edited by VNarmy; 13-07-2008, 14:40.
        AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
        Xem thêm tại Online Store ---> Click here
        Mob: 0982.083.106

        Comment


        • #5
          mov a,40h
          mov b,#10
          mul ab
          add a,41h
          mov b,#10
          mul ab
          add a,42h
          mov r0,a

          Cứ như thế nhé...

          Comment


          • #6
            Nguyên văn bởi VNarmy Xem bài viết
            Sao ko làm thế này nhỉ:
            Code:
            MOV R0,#0
            MOV B,#10
            MOV R2,#3
            MOV R1,#40H
            MOV a,R0
            LAP:
            MUL ab
            ADD a,@R1
            INC R1
            DJNZ R2,LAP
            MOV R0,a
            Thiếu 1 lệnh nạp lại thanh ghi B rồi

            Comment


            • #7
              Cảm ơn các bạn nha !
              Nhờ sự giúp đỡ nhiệt tình của các bạn mà mình đã tìm ra cách giải quyết rồi ! thankyou very much !!!

              Mobile: 0169.966.3867
              Email:

              Comment

              Về tác giả

              Collapse

              success.tl Tìm hiểu thêm về success.tl

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

              Collapse

              Đang tải...
              X