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

                              • mèomướp
                                Trả lời cho Công thức điện tử
                                bởi mèomướp
                                Dạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
                                Hôm qua, 21:21
                              • mèomướp
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi mèomướp
                                Dạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
                                Hôm qua, 20:31
                              • yname11
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi yname11
                                Ok , thanks bác đã chỉ...
                                Hôm qua, 15:06
                              • nguyendinhvan
                                Công thức điện tử
                                bởi nguyendinhvan
                                Sau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !

                                Chập thì thay. Cháy thì tháo
                                Làm thì láo. Báo thì hay
                                May thì khoe. Rủi thì bỏ
                                Thành tích nhỏ. Báo thành to
                                Làm cho có. Báo chi li
                                Sai cả li. Báo
                                ...
                                Hôm qua, 00:35
                              • yname11
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi yname11
                                có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
                                25-11-2024, 22:31
                              • mèomướp
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi mèomướp
                                Dạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
                                25-11-2024, 22:14
                              • bactho
                                Trả lời cho Tự làm máy đo Cuộn cảm
                                bởi bactho
                                Hay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
                                25-11-2024, 21:48
                              • yname11
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi yname11
                                màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
                                25-11-2024, 21:43
                              • bactho
                                Trả lời cho các bạn giúp mình về file HEX với!!!
                                bởi bactho
                                Bạn vào trang phuclanshop.com ,tìm đến góc kỹ thuật. Tác giả vương khánh hưng nói rất rõ về điều bạn tìm...
                                25-11-2024, 21:21
                              • mèomướp
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi mèomướp
                                Dạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
                                25-11-2024, 20:43
                              Đang tải...
                              X