Thông báo

Collapse
No announcement yet.

so sánh lớn hơn,nhỏ hơn trong ASM

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

  • so sánh lớn hơn,nhỏ hơn trong ASM

    có bác nào biết cách viết asm để so sánh lớn hơn hay nhỏ hơn giá trị định sẵn không?làm ơn cho mình xin code.CÁM ƠN NHIỀU !!!!!!!!

  • #2
    Nguyên văn bởi thaithanhtam Xem bài viết
    có bác nào biết cách viết asm để so sánh lớn hơn hay nhỏ hơn giá trị định sẵn không?làm ơn cho mình xin code.CÁM ƠN NHIỀU !!!!!!!!
    Mẫu đây bạn ạ:
    nguong equ 100 ; dat nguong theo yeu cau
    mov A,giatricansosanh
    cjne A,#nguong,khac_nguong
    khac_nguong:
    ;if A < nguong thi C=1
    JC nho_hon
    ;A>=nguong
    ; Place your code here for >= nguong
    sjmp end_sosanh
    nho_hon:
    ; Place your code here for < nguong
    end_sosanh:
    Last edited by hoctro89xxx; 08-06-2008, 23:55. Lý do: cjne viết thành cnje

    email:mahaco@fpt.vn

    Comment


    • #3
      Nguyên văn bởi thaithanhtam Xem bài viết
      có bác nào biết cách viết asm để so sánh lớn hơn hay nhỏ hơn giá trị định sẵn không?làm ơn cho mình xin code.CÁM ƠN NHIỀU !!!!!!!!
      Trong sách của thầy Tống Văn On có 1 phần định nghĩa Macro, chỉ cần định nghĩa 1 lần là sử dụng nhiều lần mà không sợ bị nhầm lẫn.
      Ví dụ cho "nhảy nếu A lớn hơn"
      Code:
       ;định nghĩa Macro
       %*DEFINE (JGT(VALUE, LABEL)) (
                        CJNE      A, #%VALUE+1, $+3
                        JNC       %LABEL
                       )
      ;Xong, giời thì sử dụng, so sánh A, và 1 số
      %JGT(55H, LON_HON)
      ;Chỗ này dành cho chương trình nếu A nhỏ hơn
      ;....
      
      LON_HON:
      ;Chỗ này dành cho chương trình nếu lớn hơn
      ...
      Bạn có thể xem chi tiết cách giải thích trong cuống Vi Điều Khiển họ 8051 của thầy Tống Văn On, trang 174
      Diễn đàn Vi điều khiển:

      Comment


      • #4
        cám ơn hai bạn,nhưng mình không biết c,mình muốn hỏi code viết bằng asm.các bạn có thì cho mình xin nhe,cám ơn nhiều lắm.

        Comment


        • #5
          nhưng giá trị a của mình luôn biến thiên các bạn ơi,giúp mình nhe!!!!!

          Comment


          • #6
            2 Ví dụ trên đều là ASM (cái sau viết theo marco), không phải C.
            A vẫn là biến, "nguong" hoặc "value" là giá trị cónst. để so sánh.
            Bạn đọc kỹ Ví dụ trên có thắc mắc thì hỏi tiếp. Thân

            Comment


            • #7
              Nguyên văn bởi thaithanhtam Xem bài viết
              nhưng giá trị a của mình luôn biến thiên các bạn ơi,giúp mình nhe!!!!!
              nguong equ 100 ; dat nguong theo yeu cau
              mov A,giatricansosanh
              giatricansosanh luôn biến thiên theo ý bạn mà, nó là 1 biến chiếm 1 ô nhớ 1 byte trong RAM.
              Bạn hãy học ASM hơn nữa nhé, kiến thức của bạn thấy không ổn!

              email:mahaco@fpt.vn

              Comment


              • #8
                Nguyên văn bởi hoctro89xxx Xem bài viết
                Mẫu đây bạn ạ:
                nguong equ 100 ; dat nguong theo yeu cau
                mov A,giatricansosanh
                cjne A,#nguong,khac_nguong ;(Cái này là so sánh với 100 chứ không phải so sánh với giá trị chứa trong ô nhớ địa chỉ 100)
                khac_nguong:
                ;if A < nguong thi C=1
                JC nho_hon
                ;A>=nguong
                ; Place your code here for >= nguong
                sjmp end_sosanh
                nho_hon:
                ; Place your code here for < nguong
                end_sosanh:
                Nhu thế này thì chính xác hơn
                nguong equ 100 ; dat nguong theo yeu cau(hằng số so sanh sẽ chứa trong ô nhớ 100
                giatricansosanh equ 20h; them như vấy cho bạn ấy dể hiểu(biến để so sánh chứa trong ô nhớ 20h)
                mov A,giatricansosanh
                cjne A,nguong,khac_nguong
                khac_nguong:
                ;if A < nguong thi C=1
                JC nho_hon
                ;A>=nguong
                ; Place your code here for >= nguong
                sjmp end_sosanh
                nho_hon:
                ; Place your code here for < nguong
                end_sosanh:
                Last edited by phienbinh; 09-06-2008, 14:23.

                Comment


                • #9
                  Nguyên văn bởi thaithanhtam Xem bài viết
                  cám ơn hai bạn,nhưng mình không biết c,mình muốn hỏi code viết bằng asm.các bạn có thì cho mình xin nhe,cám ơn nhiều lắm.
                  bạn học vi xử lý và đặt những câu hỏi thế này mà chưa phân biệt lệnh viết bằng C hay asm thì tui thấy bạn chưa biết nhiều về vi xử lý, nên cho dù các bạn khác trả lời bạn đúng và rõ ràng như thế mà bạn cũng không hiểu. Cần cố gắng nhiều hơn nữa.

                  Comment


                  • #10
                    Nguyên văn bởi thaithanhtam Xem bài viết
                    có bác nào biết cách viết asm để so sánh lớn hơn hay nhỏ hơn giá trị định sẵn không?làm ơn cho mình xin code.CÁM ƠN NHIỀU !!!!!!!!
                    Mình có cách này có lẽ dễ hiểu hơn, mọi người xem thủ nhé:
                    nguong equ r1
                    giatricanss equ r2
                    ..............................
                    mov a,nguong
                    sub a,giatricanss
                    jc nhohon ;kiểm tra co c để biết giá trị lớn hơn, bằng, hay nhỏ hơn
                    jz bang ; kiểm tra co z de biet gia tri co bang hay khong
                    ;nếu giatricanss lon hon nguong làm lệnh kế

                    Ở đây mình dùng lệnh SUB(trừ), lấy giá trị cần so sánh trừ cho ngưỡng, nếu kết quả lớn hơn hoặc bằng thì cờ c = 0, nếu kết quả nhỏ hơn thì cờ c = 1. Như vậy chúng ta đi kiểm tra cờ c thì sẽ biết kết quả lớn hơn hoặc bằng hay nhỏ hơn. Để biết kết quả có bằng không thì ta kiểm tra cờ z, nếu bằng thì cờ z = 1.

                    Comment


                    • #11
                      cám ơn các bạn nhiều,mình mới nhập môn mong các bạn giúp đỡ nhiều.
                      các bạn giải thích giùm cách dùng các cờ nhớ giúp mình nhé.khi nào thì cờ c=0 & khi nào cờ c=1,nếu có tài lệu cho mình xin với.
                      mail mình là:tam0903184486@yahoo.com.vn
                      cám ơn trước !!!!!

                      Comment


                      • #12
                        hi.. chắc bạn mới đụng vào 89, mà bạn có tài liệu nào về tập lệnh của 89 ko, của thầy tống văn on hoặc các tài liệu trong các trường đại học chẳng hạn.
                        bạn coi kĩ chỗ giải thích cho lệnh CJNE ở trang 278 trong sách của thầy tống văn on.

                        cjne x,y,nhãn

                        x khác y thì nhảy đến nhãn
                        x=y thì thực hiện lệnh kế.
                        đồng thời:
                        c=1 nếu x<y
                        c=0 nếu x>=y

                        trong đó
                        x là a,Rn hoặc @Ri
                        y là data,Rn...
                        nhãn: là tên nhãn bạn đặt ở đâu mà muốn chương trình nhảy tới.
                        và giá trị so sánh ở đây là giá trị nguyên không dấu 8 bit (0-255)

                        Comment


                        • #13
                          bạn cho hỏi có cách nào chống nhiểu cho ngắt ngoài không,mình viết chương trình sử dụng ngắt ngoài để đếm một số,mổi lần có ngắt thì đếm lên 1 nhưng khi đưa ra board tex
                          thì đếm mấy số một lượt luôn.không biết cách chống nhiểu ra sao,mong bạn hướng dẫn giúp.thank

                          Comment


                          • #14
                            Ngoài chống nhiễu ở phần cứng, thì ở phần mềm bạn viết đoạn code kiểm tra tồn tại của tín hiệu tại cổng nhận sau 1 thời gian nhất định (thường nhiễu có biên độ cao nhưng thời gian tồn tại ngắn), trong thời gian kiểm tra nếu vẫn tồn tại liên tục thì nhận nó là tín hiệu, ngược lại thì coi là nhiểu.
                            Thí dụ, sau khi vào ngắt ( chân INT0, active logic = 0):
                            push r0
                            move r0 # 50
                            loop1: jb INT0, loop2 ; if INT0=1 > nhiểu, nhảy đến loop2 (bỏ qua).
                            djnz r0, loop1
                            ------ ; tín hiệu thật vào xử lý
                            ------
                            loop2: pop r0
                            reti
                            Bạn thử xem.

                            Comment


                            • #15
                              CÁM ƠN CÁC BẠN,BÀI TOÁN CHỐNG NHIỂU CHO NGẮT MÌNH ĐÃ GIẢI QUYẾT XONG RỒI.
                              Mình chọn ngắt theo mức & cho kiểm tra khi chân ngắt về lại mức 1 mình cho delay khoảng 50ms xong mới thực hiện lệnh trong ngắt,hết nhiểu các bạn ạ.
                              Last edited by thaithanhtam; 23-06-2008, 22:49.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              • vi van pham
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi vi van pham
                                Cám ơn những lời chúc tốt đẹp của em.

                                Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

                                Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
                                hôm nay, 02:00
                              • nhathung1101
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi nhathung1101
                                Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

                                Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

                                Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
                                Hôm qua, 22:18
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

                                Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
                                Hôm qua, 14:51
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

                                Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
                                Hôm qua, 14:39
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

                                Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
                                Hôm qua, 14:28
                              • bqviet
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi bqviet
                                Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
                                21-02-2025, 20:26
                              • mèomướp
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi mèomướp
                                Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
                                21-02-2025, 12:32
                              • vi van pham
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi vi van pham
                                Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                                Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                                20-02-2025, 21:31
                              • bqviet
                                Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                                bởi bqviet
                                Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
                                20-02-2025, 17:22
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Tiếng Anh, Đình Thường phải nói là rất tệ, khiến việc giao tiếp đời thường thôi cũng khó chứ nói gì về kĩ thuật.

                                Nhân tiện, nhờ các bạn, các bác xem giúp thư ĐT viết thế này liệu có thể gửi tới địa chỉ nhận hay chăng,...
                                20-02-2025, 11:52
                              Đang tải...
                              X