Mục lục bài họcĐang ở d04-b3
← A-Level Computer Science
0/30 bài đã học xong
Chương 4 · Hardware and Processor Fundamentals · Bài 3/3 của chương · bài 12/30 của A-Level Computer Science

Assembly language, addressing modes and system software

Hợp ngữ, chế độ địa chỉ và phần mềm hệ thống
← Mục lục bài học
Lý thuyết · English

Why assembly still appears

Assembly language is a one-to-one symbolic form of machine code: LDD, ADD, STO, JMP, CMP, JPE. It is used where speed or direct hardware control matters — device drivers and embedded systems — and in the exam because it shows whether you really understand what the processor does.

Four addressing modes

Given LDx n:

Immediate (LDM #n): load the value $n$ itself.
Direct (LDD n): load the contents of address $n$.
Indirect (LDI n): address $n$ holds another address; load the contents of that.
Indexed (LDX n): load the contents of address $n$ plus the index register — the mode that makes array processing possible in a loop.

Assemblers and translators

An assembler converts assembly to machine code, usually in two passes: the first builds a symbol table of labels, the second generates the code now that every label's address is known — which is why forward references work. A compiler translates a high-level program once, producing a fast standalone executable but reporting all errors together. An interpreter translates and runs line by line: slower and it needs the interpreter present, but it stops at the first error, which suits development.

The operating system

Memory management, file management, process scheduling, device management via drivers, security and the user interface. It exists to hide hardware detail from applications, so the same program runs on different machines.

Utility software

Defragmenter, backup, compression, antivirus, disk repair — housekeeping tools, distinct from the OS itself and from application software.

Giải thích tiếng Việt

Vì sao hợp ngữ vẫn có mặt

Hợp ngữ là dạng ký hiệu tương ứng một–một với mã máy: LDD, ADD, STO, JMP, CMP, JPE. Nó được dùng ở nơi cần tốc độ hoặc điều khiển phần cứng trực tiếp — trình điều khiển thiết bị và hệ thống nhúng — và có mặt trong đề thi vì nó cho thấy bạn có thật sự hiểu bộ xử lý làm gì hay không.

Bốn chế độ địa chỉ

Với lệnh LDx n:

Tức thời (LDM #n): nạp chính giá trị $n$.
Trực tiếp (LDD n): nạp nội dung của ô nhớ địa chỉ $n$.
Gián tiếp (LDI n): ô $n$ chứa một địa chỉ khác; nạp nội dung của ô đó.
Chỉ số (LDX n): nạp nội dung của ô có địa chỉ $n$ cộng thanh ghi chỉ số — chế độ làm cho việc duyệt mảng trong vòng lặp trở nên khả thi.

Trình hợp dịch và các trình dịch

Trình hợp dịch chuyển hợp ngữ thành mã máy, thường qua hai lượt: lượt một dựng bảng ký hiệu chứa các nhãn, lượt hai sinh mã khi đã biết địa chỉ của mọi nhãn — và đó là lý do tham chiếu tới nhãn phía sau vẫn chạy. Trình biên dịch dịch chương trình bậc cao một lần, cho ra tệp thực thi chạy độc lập và nhanh, nhưng báo toàn bộ lỗi cùng lúc. Trình thông dịch dịch và chạy từng dòng: chậm hơn và cần có trình thông dịch trên máy, nhưng dừng ngay ở lỗi đầu tiên — thuận cho lúc đang phát triển.

Hệ điều hành

Quản lý bộ nhớ, quản lý tệp, điều độ tiến trình, quản lý thiết bị qua trình điều khiển, bảo mật và giao diện người dùng. Nó tồn tại để che chi tiết phần cứng khỏi ứng dụng, nhờ đó cùng một chương trình chạy được trên nhiều máy khác nhau.

Phần mềm tiện ích

Chống phân mảnh, sao lưu, nén, diệt vi-rút, sửa đĩa — các công cụ dọn dẹp, tách biệt với chính hệ điều hành và với phần mềm ứng dụng.

Ví dụ — phân biệt bốn chế độ địa chỉ trên cùng một bộ nhớ

Bộ nhớ: ô $50$ chứa $60$; ô $60$ chứa $85$; ô $52$ chứa $19$. Thanh ghi chỉ số chứa $2$.

Cho biết ACC nhận giá trị gì sau mỗi lệnh: (a) LDM #50 (b) LDD 50 (c) LDI 50 (d) LDX 50.

Giải.

(a) LDM #50 — tức thời. Dấu $\#$ nghĩa là chính con số đó là toán hạng, không đụng tới bộ nhớ. $\text{ACC}=\mathbf{50}$.

(b) LDD 50 — trực tiếp. Đi tới ô $50$ và lấy nội dung. Ô $50$ chứa $60$. $\text{ACC}=\mathbf{60}$.

(c) LDI 50 — gián tiếp. Hai bước: ô $50$ chứa $60$, nhưng $60$ được hiểu là một ĐỊA CHỈ; đi tiếp tới ô $60$ và lấy nội dung là $85$. $\text{ACC}=\mathbf{85}$.

(d) LDX 50 — chỉ số. Địa chỉ thực $=50+2=52$; ô $52$ chứa $19$. $\text{ACC}=\mathbf{19}$.

Cách nhớ không nhầm. Đếm số lần ‘đi vào bộ nhớ’: tức thời đi $0$ lần, trực tiếp đi $1$ lần, gián tiếp đi $2$ lần. Chế độ chỉ số cũng đi $1$ lần nhưng cộng thanh ghi chỉ số trước.

Vì sao chế độ chỉ số quan trọng. Muốn cộng $100$ phần tử của một mảng bắt đầu ở ô $50$, ta viết một vòng lặp dùng LDX 50 và tăng thanh ghi chỉ số mỗi vòng — cùng một lệnh chạm tới địa chỉ khác nhau. Không có chế độ này thì phải viết $100$ lệnh riêng.

Bẫy hay mất điểm — Nhầm gián tiếp với trực tiếp. LDD 50 lấy nội dung ô $50$; LDI 50 coi nội dung ô $50$ là một địa chỉ rồi đi tiếp một bước nữa. Vẽ hai mũi tên ra nháp là cách chắc chắn không sai.
Phải nhớ — Bốn chế độ địa chỉ phân biệt bằng số bước đi vào bộ nhớ. Trình hợp dịch chạy hai lượt để xử lý nhãn phía sau. Trình biên dịch cho tệp chạy nhanh và báo lỗi một lượt; trình thông dịch dừng ở lỗi đầu tiên nên hợp lúc phát triển.

Đọc xong rồi — làm thử ngay

Bài tập của chương Hardware and Processor Fundamentals gồm 14 câu trắc nghiệm và 3 đề tự luận. Đáp án hiện ngay khi chọn, miễn phí.

Làm bài tập chương →