0; Đõy là chơng trỡnh con giữ chậm 011 0300 MOV 300H

Một phần của tài liệu GIÁO TRÌNH VI XỬ LÝ 8051 pdf (Trang 40 - 41)

011 0300 MOV 300H

012 0300 DELAY:

013 0300 7DFF MOV R5, #FFH ; Nạp R5 = 255 014 0302 ĐFE AGAIN:DJNZ R5, AGAIN ; Dừng ở đõy 014 0302 ĐFE AGAIN:DJNZ R5, AGAIN ; Dừng ở đõy 015 0304 22 RET ; Trở về nguồn gọi 016 0305 END ; Kết thỳc nạp tin hợp ngữ

Lời giải:

Khi lệnh LCALL đầu tiờn đợc thực hiện thỡ địa chỉ cđa lƯnh “MOV A, #0AAH đợc cất vào ngăn xếp. Lu ý rằng byte thấp vào tr−ớc và byte cao vào saụ Lệnh cuối cựng của chơng trỡnh con đợc gọi phải là lệnh trở về RET để chuyển CPU kéo (POP) các byte trờn đỉnh của ngăn xếp vào bộ đếm chơng trỡnh PC và tiếp tơc thực hiện lệnh tại địa chỉ 07. Sơ đồ bờn chỉ ra khung của ngăn xếp sau lần gọi LCALL đầu tiờn.

0A

09 00 08 07 08 07 SP = 09

3.2.3 Sử dụng lệnh PUSH và POP trong cỏc chơng trỡnh con.

Khi gọi một chơng trỡnh con thỡ ngăn xếp phải bỏm đợc vị trớ mà CPU cần trở vỊ. Sau khi kết thúc ch−ơng trỡnh con vỡ lý do này chỳng ta phải cẩn thận mỗi khi thao tỏc với cỏc nội dung của ngăn xếp. Nguyờn tắc là số lần đẩy vào (PUSH) và kộo

ra (POP) luôn phải phự hợp trong bất kỳ chơng trỡnh con đợc gọi vàọ Hay nói cỏch khỏc đối với mỗi lệnh PUSH thỡ phải cú một lệnh POP. Xem vớ dụ 3.10.

3.2.4 Gọi cỏc chơng trỡnh con.

Trong lập trỡnh hợp ngữ thờng cú một chơng trỡnh chớnh và rất nhiều chơng trỡnh con mà chỳng đợc gọi từ chơng trỡnh chớnh. Điều này cho phộp ta tạo mới chơng trỡnh con trong một mụ-đun riờng biệt. Mỗi mụ-đun cú thể đợc kiĨm tra tách biệt và sau đú đợc kết hỵp với nhau cùng với chơng trỡnh chớnh. Quan trọng hơn là trong một chơng trỡnh lớn thỡ cỏc mụ-đun cú thể đợc phõn cho cỏc lập trỡnh viờn khỏc nhau nhằm rỳt ngắn thời gian phỏt triển.

Ví dụ 3.10:

Phõn tớch ngăn xếp đối với lệnh LCALL đầu tiờn trong đoạn mH.

01 0000 ORG 0

Một phần của tài liệu GIÁO TRÌNH VI XỬ LÝ 8051 pdf (Trang 40 - 41)

Tải bản đầy đủ (PDF)

(199 trang)