Đang tải...

Dành cho các bạn mới học Vi xử lý

Thảo luận trong 'Vi điều khiển - Vi xử lý' bắt đầu bởi Bùi Thị Thi, 18/2/17.

View Users: View Users
  1. Bùi Thị Thi

    Bùi Thị Thi Thành viên mới

    Tham gia ngày:
    13/2/17
    Bài viết:
    17
    Điểm thành tích:
    3
    Giới tính:
    Nữ
    Một số vấn đề khi học phần vi xử lý 80x86

    1. Cách mã hóa lệnh
    Qua cách mã hóa lệnh các em sẽ hiểu được cách thức một lệnh được viết dưới dạng mã nhị phân mà vi xử lý có thể hiểu được. Từ đó giúp các em hiểu rằng tất cả lệnh và dữ liệu trong hệ vi xử lý đều tồn tại dưới dạng nhị phân và tại sao khi đọc một chuỗi số nhị phân vi xử lý biết được phải làm gì.
    Các em không phải nhớ một lệnh, ví dụ MUL, có mã nhị phân là bao nhiêu mà cần hiểu một lệnh được xây dựng từ các trường nào? ý nghĩa của mỗi trường ra sao? Từ đó em biết cách mã hóa một lệnh gợi nhớ bất kỳ.
    Ví dụ, lệnh MOV AL, BL được mã hóa dưới dạng nhị phân thế nào?
    Tra trong tài liệu ta sẽ thấy lệnh MOV được mã hóa bởi một trường gồm 6 bit.
    Tiếp theo để chuyển dữ liệu vào thanh ghi AL, vậy AL được xác định bằng các trường nào? Chúng ta thấy có các trường hướng D (D=1 dữ liệu đi tới thanh ghi, D=0 dữ liệu đi từ thanh ghi), trường W (W=0: toán hạng byte, W=1 toán hạng word), trường REG gồm 3 bit dùng để xác định thanh ghi.
    Để xác định thanh ghi BL sẽ cần các trường MOD và R/M. Tra bảng ta sẽ thấy hai trường này kết hợp với nhau để tạo ra chế độ định địa chỉ thanh ghi để truy nhập đến BL.
    Với việc xác định như vậy, các em sẽ lần lượt xác định được giá trị của các trường và bit tương ứng từ đó biết được mã lệnh của cả lệnh.
    Sau khi mã hóa, cần gõ lệnh vào phần mềm, hợp dịch để kiểm tra mã nhị phân tương ứng của lệnh có đúng với cách tính toán không.

    2. Học lệnh
    Vi xử lý 80x86 có tập lệnh rất lớn và các em không cần thiết phải học tất cả các lệnh. Điều các em cần học là học cách tra cứu và sử dụng một lệnh bất kỳ. Sau một quá trình làm các bài tập và ví dụ, các em sẽ tự nhớ một số lệnh hay được sử dụng.
    Trước tiên các em cần tổ chức các lệnh thành các nhóm lệnh cho dễ học, ví dụ nhóm lệnh di chuyển dữ liệu, nhóm lệnh số học, nhóm lệnh logic, nhóm lệnh rẽ nhánh chương trình, v.v. Với mỗi nhóm lệnh này cần liệt kê một vài lệnh.
    Với mỗi lệnh cần tìm hiểu cú pháp của lệnh bao gồm: mã lệnh, toán hạng (có bao nhiêu toán hạng, có thể sử dụng chế độ định địa chỉ nào), tác dụng của lệnh và ảnh hưởng lên các cờ thế nào. Với mỗi lệnh tài liệu đã giải thích rõ. Tuy nhiên, để thực sự hiểu và vận dụng được lệnh các em cần sử dụng phần mềm để kiểm chứng ý hiểu của mình.
    Lấy ví dụ muốn biết lệnh DIV có ý nghĩa gì và cách sử dụng như thế nào?
    Các em tra trong tài liệu sẽ thấy cú pháp của lệnh có dạng: DIV Toánhạng
    Lệnh này thực hiện chia 2 toán hạng.
    - Trường hợp Toánhạng kiểu byte, lấy nội dung thanh ghi AX chia cho toán hạng. Kết quả phần dư lưu trên AH, phần nguyên lưu trên AL
    - Trường hợp Toánhạng kiểu word, lấy nội dung thanh ghi DX AX chia cho toán hạng. Kết quả phần nguyên lưu trên thanh ghi AX, phần dư lưu trên DX.
    Để kiểm tra ý hiểu của mình có đúng không, các em cần làm một vài ví dụ nhỏ để kiểm tra kết quả trên phần mềm. Nếu kết quả trùng với suy đoán thì em đã hiểu hoạt động của lệnh. Ví dụ, trong trường hợp này, nếu ta nạp giá trị 102 vào thanh ghi AX và giá trị 100 vào thanh ghi BL thì kết quả phép chia DIV BL sẽ phải cho thanh ghi AH giá trị 2 và AL giá trị 1. Viết đoạn lệnh sau:

    org 100h
    mov ax,102
    mov bl,100
    div bl
    Dịch và thực hiện lệnh từng bước. Sau khi thực hiện xong lệnh DIV, nếu thanh ghi AH và AL cho cùng giá trị như suy đoán thì ta đã hiểu đúng sự thực hiện của lệnh.
     
    duycop thích bài này.
  2. NguLaEm

    NguLaEm Thành viên mới

    Tham gia ngày:
    14/2/17
    Bài viết:
    8
    Điểm thành tích:
    3
    Giới tính:
    Nam
    muốn học vxl-vdk tốt thì thứ nhất cần thuộc tập lệnh và chức năng của từng thanh ghi. tiếp sau phải hiểu cách tư duy và tự viết cho mình những chương trình con đơn giản vd như ct delay, hiển thị led... cần thiết thì phải viết từng tiến trình ra rồi thực hiện. tìm hiểu các ngoại vi của vdk đó sd ntn vd như timer, uart... biết phân tích đầu vào đầu ra của bài toán cũng rất quan trọng. và dành nhiều thời gian viết và chạy thử chương trình của mình
     

Chia sẻ trang này