Bài tập 9

Sử dụng tham số trung gian

 

Mục đích-yêu cầu:

  • Thông qua việc thực hiện các phép toán cộng để sử dụng các thanh ghi, vị trí ô nhớ trên RAM và ngăn xếp.
  • Sử dụng được các thanh ghi, vị trí ô nhớ trên RAM và ngăn xếp trong lập trình vi xử lý.

Kiến thức nền:

Các tham số đưa vào chương trình có thể thông qua trong 3 cách:

?        Các thanh ghi CPU.

?        Các vị trí RAM.

?        Ngăn xếp.

Trong ví dụ dưới đây sử dụng 3 cách giải khác nhau để cộng 2 số.

 

Chương trình:

; Nhảy qua bảng thông số ----------------------------------------------------

    JMP Start         

    DB 00

    DB 00

Start:

    MOV     AL,5    ;giữ 1 byte của RAM tại địa chỉ 02

    MOV     BL,4    ;giữ 1 byte của RAM tại địa chỉ 03

    CALL       30   ;gọi thủ tục thứ nhất

 ;sử dụng vị trí RAM để đưa các tham số vào trong 1 thủ tục

      MOV        AL,3

      MOV        [02],AL

      MOV        BL,1

      MOV        [03],BL

      CALL        40        ;gọi thủ tục thứ hai

;sử dụng ngăn xếp để đưa tham số vào 1 thủ tục

      MOV        AL,7

      PUSH       AL

      MOV        BL,2

      PUSH       BL

      CALL       60        ;gọi thủ tục thứ ba

      POP          BL

      POP          AL

      JMP          Start                   ;trở về nhãn  Start để thực hiện

;Thủ tục để cộng 2 số (cách 1) -----------------------------------------------

;Các tham số thông qua trong thủ tục sử dụng AL và BL

;Kết quả đưa vào AL

;Ðây là phương pháp đơn giản nhưng không hay lắm vì có nhiều thamsố

    ORG      30             ;bắt đầu tại địa chỉ 30

    ADD     AL,BL      ;cộng BL với AL, kết quả lưu ;trong AL

RET                            ;kết thúc chương trình con, quay trở về từ thủ tục

;Thủ tục để cộng 2 số (cách 2) -----------------------------------------------

;Các tham số thông qua trong thủ tục sử dụng vị trí RAM

;Kết quả lưu vào vị trí RAM

;Phương pháp này thì phức tạp hơn và không giới hạn số tham số

    ORG     40                ;bắt đầu tại địa chỉ 40

    PUSH    CL              ;lưu các thanh ghi và các cờ vào ngăn xếp

    PUSH    DL

    PUSHF

    MOV     CL,[02]        ;tìm nạp tham số từ RAM

    MOV     DL,[03]        ;tìm nạp tham số từ RAM

    ADD     CL,DL

    MOV     [02],CL        ;cất kết quả trong RAM

    POPF                          ;khôi phục lại thanh ghi ban đầu và giá trị cờ

    POP   DL

     POP CL

RET                                ;kết thúc chương trình con

;Thủ tục cộng 2 số (cách 3) ---------------------------------------------------

;Số được cộng bên trong ngăn xếp

;Lấy tham số ra ngăn xếp

;Thực hiện việc cộng

;Ðẩy kết quả vào lại ngăn xếp   

;Phần lớn thủ tục gọi trong thời gian thực đều được sử dụng ngăn xếp

    ORG         60             ;mã bắt đầu tại địa chỉ 60

    POP          DL

    POP          BL

    POP          AL

    ADD        AL,BL     ;đặt trở lại ngăn xếp như trước đó

    PUSH       AL

    PUSH       DL

END                              ;kết thúc chương trình

;-----------------------------------------------------------------------------------

Bài tập 09. Nhấn nút Play để xem.

Tải file phim về ở đây .