RET TRE1ms Endp

Một phần của tài liệu Lập Trình Bằng Hợp Ngữ Với 8088 (Trang 47)

4. Moơt sô chương trình cú theơ:

RET TRE1ms Endp

TRE1ms Endp

Trong chương trình con nói tređn, sô laăn laơp đeơ trong CX phại được tính toán sao cho thời gian cháy toàn boơ chương trình với các vòng laịp kéo dài xâp xư 1ms. Ta nói xâp xư là vì trong thực tê khi CPU làm vieơc, nó còn có theơ còn bị treo đeơ cho quá trình làm tươi boơ nhớ được hoàn tât (nêu heơ thông sử dúng RAM đoơng). Theđm vào đó, vì sô laăn laịp chứa trong CX phại là sô nguyeđn neđn kêt quạ từ các tính toán thực caăn phại được làm tròn cho phù hợp, từ đó gađy ra sai sô.

Trong moơt heơ vi xử lý hốt đoơng với nhieău nguoăn gađy ngaĩt, đođi khi đeơ táo ra moơt khoạng thời gian treê xác định và khođng chịu tác đoơng cụa các yeđu caău ngaĩt, ta còn phại có các leơnh câm/cho pháp các yeđu caău ngaĩt trước/sau khi cháy phaăn leơnh tính thời gian (như ở trong ví dú tređn, ta có theơ bỏ các dâu châm phaơy'.' đứng trước các leơnh CLI và STI đeơ đát được đieău này).

Bađy giờ ta sẽ nói qua veă cách tính giá trị sô phửi đưa vào thanh ghi CX trong thí dú tređn (khođng tính đên các leơnh CLI.NOP và STI)

Theo tài lieơu tra cứu dành cho taơp leơnh cụa CPU 8088, ta có được thời gian cho các leơnh lieđn quan trong chương trình tređn tính theo đơn vị Tclk như sau:

Leơnh Sô chu kỳ PUSH 11 POP 8 MOV 4

LOOP 17 (hoaịc 5 trong trường hợp khođng laịp) RET 16

Nêu ta gĩi sô caăn tìm đeơ đưa vào thanh ghi CX là N, ta sẽ thu được N khi giại phương trình sau:

Tclk* (11 + 8 + 4 + 16 +(N-1)*17 + 5) = 1 ms Thay sô vào ta được:

34 + 17 * N = 5000 hay N = 5000/17-2

Từ đó rút ra N ≈ 292, đađy chính là giá trị phại đưa vào thanh ghi CX ở tređn.

Nhaơn xét phương trình cuôi cùng ta thây thưòi gian mà vòng laịp phại "giêt" lớn hơn rât nhieău so với thời gian dành cho các leơnh khác, vì vaơy ta có theơ tính được N với sai sô khođng lớn laĩm khi lây N ≈ 5000/17 ≈ 294.

Trong ví dú tređn ta mới chư dùng đên moơt giá trị nhỏ mà thanh ghi CX có khạ naíng bieơu dieên. Nêu ta thay giá trị lớn nhât CX = 65535 thì có theơ đát được thời gian treê lớn nhât khoạng 224 ms.

Trong các máy IBM PC các chương trình treê thời gian đát đoơ chính xác cao thường được thực hieơn baỉng cách dùng chương trình đeơ đêm các xung thu được từ các mách định thời gian (timer) có sẵn trong máy. Các mách định thời gian này sẽ có xung đaău vào rât chính xác được lây từ các xung đoăng hoă cụa heơ thông.

Một phần của tài liệu Lập Trình Bằng Hợp Ngữ Với 8088 (Trang 47)