Thông báo

Collapse
No announcement yet.

Help về lệnh ORG

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

  • Help về lệnh ORG

    Hi all,
    ORG 000H
    Lệnh này có ý nghĩa gì, tại sao lại là 000H mà hok phải là 0 thôi.
    3 số 0 có nghĩa là gì.
    Cảm ơn tất cả các bạn!!!!

  • #2
    Mình giải thích qua thế này (hi vọng là đúng):
    ORG là câu lệnh để đưa chương trình và cho ta biết sau câu lệnh đó chương trình sẽ tiếp tục hoặc bắt đầu tại địa chỉ nào trên bộ nhớ.
    Mình nghĩ ở đây bạn đang nói đến ASM cho 89C51. Bộ nhớ của 89C51 là 4096 byte ( 4096 địa chỉ nhớ ) và được thể hiện bằng 3 số hexa.
    000 là địa chỉ đầu tiên.
    Có gì sai các bác thông cảm

    Comment


    • #3
      Lệnh ORG có nghĩa là bắt đầu ở địa chỉ nào đó trong ROM nội đó, thường thì phải ghi 4 số thì phải. Nhớ phải là Hex nha vì khi sản xuất người ta đánh địa chỉ cho từng byte ô nhớ bằng Hex nên phải truy cập bằng Hex.

      Comment


      • #4
        ORG định nghĩa một địa chỉ chứa chương trình trong bộ nhớ chương trình của vdk.còn 4 số 0 chỉ kiểu mã hex , địa chỉ 00.khi vdk bị reset thì bộ đếm chuong trình sẽ chỉ đến địa chỉ 0000h

        Comment


        • #5
          org không phải lệnh
          nó là chỉ thị
          xác định địa chỉ code

          Comment


          • #6
            Nguyên văn bởi binhdao123 Xem bài viết
            Hi all,
            ORG 000H
            Lệnh này có ý nghĩa gì, tại sao lại là 000H mà hok phải là 0 thôi.
            3 số 0 có nghĩa là gì.
            Cảm ơn tất cả các bạn!!!!
            ko nhất thiết phải là 000H hay 0000H
            chú có thể khai báo bất kì giá trị trong các hệ đếm
            Code:
            ORG	0
            ORG	17
            ORG	2H
            ORG	101B
            ORG	110O
            dòng màu xanh chữ cuối cùng là chữ O của hệ OCT

            Comment


            • #7
              có nghĩa là khai báo địa chỉ bắt đầu của 1 chương trình ( địa chỉ này tùy thuộc vào thiết kế của từng IC)...bộ nhớ của IC gồm bộ nhớ dữ liệu và bộ nhớ chương trình thì địa chỉ đây là địa chỉ đầu của vùng địa chỉ chương trình

              Comment


              • #8
                ORG nói hợp ngữ đặt mã lệnh tại ngăn nhớ 0 .nói cách khác là chỉ lệnh để bắt đầu chương trình
                ORG và END là các chỉ lệnh

                Comment


                • #9
                  Hi all,
                  Tóm lại bạn nào giải thích chính xác, dễ hiều dùm mình đi.
                  Cảm ơn

                  Comment


                  • #10
                    hix
                    em trả lời "dễ hiểu" đây

                    trong bộ nhớ chương trình của vi điều khiển 89 tùy từng dòng mà có độ lớn khác nhau
                    ví dụ dòng 89c có 4K ( tức 2 mũ 12 )
                    để quản lý 4K bộ nhớ này ta cần có 12 đường địa chỉ ( tại sao ư vì 12 đường địa chỉ ứng với 12 bit - 12 bit sẽ có 4096 trạng thái tức sẽ có 4096 byte nhớ = 4K)

                    khi viết chương trình vi điều khiển bạn thường gặp chỉ thị ORG ( viết tắt của từ origin - nghĩa là ban đầu)
                    bạn hình dung bộ nhớ chuơng trình là một trang giấy - trong đó có 2 phần là lề và bên trong trang
                    lề là địa chỉ
                    ví dụ dòng đầu ta đánh địa chỉ 000
                    dòng 2 ta đánh địa chỉ 001
                    ---------------
                    cứ như vậy ta đánh đến dòng 4096 tức byte cuối cùng
                    còn nội dung bên trong thì tùy chuơng trình của bạn
                    tôi ví dụ ctr sau:

                    ORG 000h
                    NOP
                    move P1.#00


                    ---
                    ---
                    thì bộ nhớ của bạn như sau:
                    000H: NOP

                    001H: move
                    002H:

                    khi chuơng trình thấy thằng ORG thì nó sẽ nạp cho bộ đếm chuơng trình giá trị sau ORG
                    thường thì người ta nạp giá trị đầu trong rom ( tại sao lại ko nhỉ)
                    chẳng lẽ bạn lại muốn nạp địa chỉ ban đầu là ORG 100H
                    như vậy có được ko
                    hoàn toàn okie
                    nếu bạn nạp ORG 100H
                    thì chuơng trình sẽ chạy từ địa chỉ 100H mà chẳng để ý đến trước đó ( tức từ 000H đến 0FFH)

                    bạn hiểu rồi chứ

                    còn tại sao lại là 000h thì tôi giải thích như sau:
                    thường thì làm việc với vi đièu khiển bạn tùy ý xài hệ nào cũng được
                    thập phân: ko có gì đi kèm
                    ví dụ:
                    ORG 0
                    còn số hex thì có hậu tố "H" - tức hexa ở sau

                    người ta sử dụng 000h tức sử dụng số hex
                    tại sao 3 số 0
                    do:
                    số hex thì mỗi số ứng với 4 bit
                    3 số 0 ứng với 12 bit
                    tại sao 12 bit
                    tức có 12 đường địa chỉ để tạo địa chỉ cho con trỏ chuơng trình trỏ đến dòng lệnh
                    nếu giá trị bạn nạp là 000H thì bạn có thể ghi 0H hoặc 00H vẫn được vì chung quy vẫn là 0 mà
                    nhưng để an toàn ta nên sử dụng " ba số 0"
                    tại sao:
                    vì nếu bạn ghi 0h: nó hiểu là 4 bit cuối là số 0
                    vậy còn 8 bit cao thì sao: lỡ như nó ko tự động xóa thì ctr của ta bị nhảy đến sai chỗ mất ( hehe)

                    đơn giản vậy thui nhé
                    mỏi tay quá
                    Be quan. Plz contact through email:

                    Comment


                    • #11
                      Help me!!!!!
                      Có một chương trình của VĐK như sau
                      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx
                      ;chuong trinh dieu khien port 0 sang don va tat het
                      ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
                      org 0800h ;Khai bao dia chi luu chuon trinh du lieu
                      ma: db 00000001b
                      db 00000010b
                      db 00000100b
                      db 00001000b
                      db 00010000b
                      db 00100000b
                      db 01000000b
                      db 10000000b
                      ; lan 2:
                      db 10000001b
                      db 10000010b
                      db 10000100b
                      db 10001000b
                      db 10010000b
                      db 10100000b
                      db 11000000b
                      ; lan 3:
                      db 11000001b
                      db 11000010b
                      db 11000100b
                      db 11001000b
                      db 11010000b
                      db 11100000b
                      ; lan 4:
                      db 11100001b
                      db 11100010b
                      db 11100100b
                      db 11101000b
                      db 11110000b
                      ; lan 5:
                      db 11110001b
                      db 11110010b
                      db 11110100b
                      db 11111000b
                      ; lan 6:
                      db 11111001b
                      db 11111010b
                      db 11111100b
                      ; lan 7:
                      db 11111101b
                      db 11111110b
                      ; lan 8:
                      db 11111111b
                      ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx
                      org 0000h ;khai bao dia chi chuon trinh chinh
                      lb: mov dptr,#0800h
                      lb1: clr a
                      movc a,@A+dptr
                      mov p0,a
                      lcall delay
                      inc dptr
                      cjne a,#0ffh,lb1
                      sjmp lb
                      ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
                      delay: mov r6,#0ffh
                      de2: mov r7,#0ffh
                      djnz r7,$
                      djnz r6,de2
                      ret
                      end
                      ----------------------------------------------------------------------------------------------------------
                      các bạn cho minh hỏi tại sao tại vị trí khai báo địa chỉ vùng dữ liệu lại là org 0800h chứ không phải là org 0100h hay org 0300h, org 0500h. minh đang lam quen với vđk nên con gà lám. Mong các bạn giúp đỡ!
                      Last edited by vanphonggl; 07-10-2012, 00:33.

                      Comment


                      • #12
                        Nguyên văn bởi vanphonggl Xem bài viết
                        Help me!!!!!
                        Có một chương trình của VĐK như sau
                        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx
                        ;chuong trinh dieu khien port 0 sang don va tat het
                        ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
                        org 0800h ;Khai bao dia chi luu chuon trinh du lieu
                        ma: db 00000001b
                        db 00000010b
                        db 00000100b
                        db 00001000b
                        db 00010000b
                        db 00100000b
                        db 01000000b
                        db 10000000b
                        ; lan 2:
                        db 10000001b
                        db 10000010b
                        db 10000100b
                        db 10001000b
                        db 10010000b
                        db 10100000b
                        db 11000000b
                        ; lan 3:
                        db 11000001b
                        db 11000010b
                        db 11000100b
                        db 11001000b
                        db 11010000b
                        db 11100000b
                        ; lan 4:
                        db 11100001b
                        db 11100010b
                        db 11100100b
                        db 11101000b
                        db 11110000b
                        ; lan 5:
                        db 11110001b
                        db 11110010b
                        db 11110100b
                        db 11111000b
                        ; lan 6:
                        db 11111001b
                        db 11111010b
                        db 11111100b
                        ; lan 7:
                        db 11111101b
                        db 11111110b
                        ; lan 8:
                        db 11111111b
                        ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx
                        org 0000h ;khai bao dia chi chuon trinh chinh
                        lb: mov dptr,#0800h
                        lb1: clr a
                        movc a,@A+dptr
                        mov p0,a
                        lcall delay
                        inc dptr
                        cjne a,#0ffh,lb1
                        sjmp lb
                        ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
                        delay: mov r6,#0ffh
                        de2: mov r7,#0ffh
                        djnz r7,$
                        djnz r6,de2
                        ret
                        end
                        ----------------------------------------------------------------------------------------------------------
                        các bạn cho minh hỏi tại sao tại vị trí khai báo địa chỉ vùng dữ liệu lại là org 0800h chứ không phải là org 0100h hay org 0300h, org 0500h. minh đang lam quen với vđk nên con gà lám. Mong các bạn giúp đỡ!
                        đơn giản là thích để đâu thì để miễn ko ảnh hưởng tới chương trình chính. Lý do đa số những gì bạn đọc họ đều để ở 800h là vì đây là vị trí ở giữa của ROM 4k thế thôi. Vì thế khi dùng bảng tra tốt nhất nên đặt tên cho bảng, ko nêu định 1 địa chỉ cố định, và vị trí bảng để ở cuối chương trình

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X