Công thức em tính bị sai rồi TEO, vì vòng lặp ở trong anh viết công thức tính ở bên kia sai, cho nên em xem lại cách tính của anh.
COUNT_L anh ký hiệu cho giá trị ban đầu nhập vào
DECFSZ và GOTO là số chu kỳ máy cần thực hiện của hai lệnh này.
Như vậy, khi bắt đầu lệnh DECFSZ đầu tiên, anh giả sử COUNT_L ban đầu = 2 đi, thì rõ ràng sẽ tốn 5 chu kỳ máy trước khi nhảy đến lệnh RETURN, chứ không phải 2 chu kỳ máy giống như công thức ban đầu anh viết. Có thể do viết bài dài và không tập trung, nên lúc viết mặc dù cố gắng cẩn thận, những cũng không tránh khỏi sai sót như thế này.
Vòng lặp delay_trong2 của em, giống y như bài cơ bản. Do vậy, nó sẽ là 99*3 + 2 = 300 chu kỳ chứ không phải 393 chu kỳ như cách em tính
Vì em lưu ý rằng, nếu kết quả phép trừ của DECFSZ là khác không, thì lệnh này chỉ tốn 1 chu kỳ máy, như bất kỳ lệnh nào khác. Nhưng khi kết quả bằng 0, thì thay vì nó thực hiện lện GOTO thì nó thực hiện lệnh NOP, như vậy, nó giống như trở thành lệnh 2 chu kỳ, chứ không phải nó là một lệnh 2 chu kỳ.
Em xem lại cách tính nhé.
|