Thông báo

Collapse
No announcement yet.

Un- asembler cho vi xử lý

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

  • Un- asembler cho vi xử lý

    Em có điều này nhờ các anh chị chỉ giúp

    bình thường là khi lập trình cho vi xử lý là:
    -viết chương trình ( viết bằng asembler, C , C++...)-> tạo ra file asm, Cpp,..
    -sau đó compiler-> tạo ra file obj,...
    -dịch ra file hex( hoặc bin) nạp vào vi xử lý

    bây giờ nếu có yêu cầu là làm ngược lại : có file hex và tìm ngược lại file asm?
    theo các anh/ chị điều này có thể được không? nếu có thì cho em xin chương trình này, hoặc cho em 1 vài lời gợi ý.
    cám ơn

  • #2
    Hi hophuoc2,

    Phần mềm cho phép chuyển đổi từ mã máy (hex, bin) thành mã lệnh hợp ngữ (assembly) người ta gọi là disassembler (không phải là un-asembler như bạn nghĩ). Cũng như trình hợp ngữ (assembler), disassembler là riêng rẽ cho các loại vi xử lý, vi điều khiển bởi một thực tế là các loại vi xử lý, vi điều khiển có tập lệnh hợp ngữ hoàn toàn khác nhau.

    Bạn có thể tìm kiếm các disassembler cho các họ vi xử lý, vi điều khiển trên internet, theo tôi biết thì người ta có free cho các phần mềm này. Bạn hãy thử với Google.

    Tôi không rõ mục đích bạn muốn sử dụng disassembler, nhưng bạn nên lưu ý thế này: Khi bạn có file mã máy (*.hex hay *.bin), bạn có thể dùng disassembler để có được file mã nguồn hợp ngữ *.asm tương ứng, tuy nhiên việc đọc hiểu và nhất là phát triển tiếp chương trình mã nguồn này là rất khó khăn, trong một số trường hợp là không thể. Lý do chủ yếu là vì khi bạn có được file mã nguồn từ disassembler, bạn sẽ có một chương trình chỉ toàn các mã lệnh và các con số, không có bất kỳ nhãn hay tên biến, tên chương trình con nào. Nói đơn giản như thế này cho bạn hiểu: tôi viết một chương trình hợp ngữ cho vi điều khiển 8051, trong đó có viết một lệnh thế này...
    mov P0,led
    với led là một biến ở địa chỉ 0x30.
    Vì một lý do nào đó, bạn có được file *.hex của file mã nguồn trên, bạn dùng disassembler của 8051 và dịch ngược ra thì sẽ được file mã nguồn tương ứng nhưng lệnh tôi viết ở trên sẽ được thay bằng:
    mov 0x80,0x30
    Bạn có thể tra ra 0x80 là địa chỉ của cổng P0, nhưng với 0x30 thì bạn chỉ biết đó là một ô nhớ trong RAM onchip, bạn không thể biết tên tôi đặt cho nó là led, do đó cũng rất khó, nếu không muốn nói là không thể, đoán ra tôi dùng nó làm gì. Tương tự với tất cả các câu lệnh trong chương trình. Hy vọng là bạn hiểu rằng bạn gặp khó khăn thế nào khi đọc một chương trình không hề có bất kỳ một tên biến, tên chương trình con nào, tất cả chỉ là con số và con số...

    Việc tiếp thu và phát triển một chương trình hợp ngữ đã khó, sẽ còn khó hơn rất nhiều lần nếu chương trình đó bạn có được từ disassembler.

    Thân mến,
    blackmoon.

    Comment


    • #3
      Anh nói hoàn toàn đúng, em hoàn toàn đồng ý. Dù sao đi nửa nếu anh có chương trình thì cho em xin để tiện tham khảo.
      em sử dụng vi xử lý 89C52.
      Cám ơn Anh nhiều

      Comment


      • #4
        Chú kiếm con Idag mà dùng. Hàng chuyên nghiệp đấy. Có con dbg51_19 dùng cũng tạm được. Bộ idag4.9 là hàng mới nhất. Vì là cr..k soft nên tôi kô gửi lên đây.
        ! ! you can win if you want ! !

        Comment


        • #5
          Chương trình dịch ngược đây!
          Attached Files

          Comment


          • #6
            To anhtuan133: Bộ idag4.9 có phải là IdaPro không vậy?

            Comment


            • #7
              cám ơn Anh Natra2k2 nhiều

              Comment


              • #8
                Dịch ngược có trường hợp không đúng! Kể cả bạn dịch ngược rồi sau đó dịch xuôi lại thì vẫn không chạy(dù không sửa gì!).Nên tốt hơn hết là bạn chỉ nên dịch ngược khi mã của nó là mã của mình mà thôi(chỉ để debug chương trình)
                Cũ người mới ta!

                Comment


                • #9
                  phan mem diasemble ,ban co the dung TS-EMulators

                  Comment


                  • #10
                    E đang làm bài tập lớn "vẽ mô phỏng chuyển động của chiếc xe đạp" = ngôn ngữ Asembler. có Anh nào biết chỉ giúp cho E với?thanks

                    Comment


                    • #11
                      có ai sử dụng protues ,xin giúp đỡ với.Mình đang học vi điều khiển.
                      Cám ơn nhiều!
                      Trong mỗi chúng ta đều có một thiên tài đang ngủ, chỉ có điều càng ngày anh ta ngủ càng say.

                      Comment


                      • #12
                        Nguyên văn bởi vantan Xem bài viết
                        có ai sử dụng protues ,xin giúp đỡ với.Mình đang học vi điều khiển.
                        Cám ơn nhiều!
                        Bạn post bài cho đúng luồng để mọi người biết mà giúp đỡ chớ.

                        Tham khảo link này:
                        http://www.dientuvietnam.net/forums/...ead.php?t=9330
                        Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
                        Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X