Trong phần lớn lịch sử, một thiết bị chỉ làm một việc. Một chiếc dệt vải dệt cloth. Một chiếc máy tính bỏ túi cộng. Để nó làm điều gì đó mới, bạn phải xây lại nó. Sau đó xuất hiện một cái gì đó tưởng chừng đơn giản nhưng đầy bí ẩn…
English narration · English + 中文 subtitles burned in · Giọng đọc tiếng Anh · phụ đề tiếng Anh + 中文 được ghi trực tiếp
4.1
Von Neumann architecture · Kiến trúc Von Neumann
Syllabus · Chương trình
English
Candidates should be able to:
Notes and guidance
Show understanding of the basic Von Neumann model for a computer system and the stored program concept
Show understanding of the purpose and role of registers, including the difference between general purpose and special purpose registers
Special purpose registers including: • Program Counter (PC) • Memory Data Register (MDR) • Memory Address Register (MAR) • The Accumulator (ACC) • Index Register (IX) • Current Instruction Register (CIR) • Status Register
Show understanding of the purpose and roles of the Arithmetic and Logic Unit (ALU), Control Unit (CU) and system clock, Immediate Access Store (IAS)
Show understanding of how data are transferred between various components of the computer system using the address bus, data bus and control bus
Show understanding of how factors contribute to the performance of the computer system
Including: • processor type and number of cores • the bus width • clock speed • cache memory
Understand how different ports provide connection to peripheral devices
Including connection to: • Universal Serial Bus (USB) • High Definition Multimedia Interface (HDMI) • Video Graphics Array (VGA)
Describe the stages of the Fetch-Execute (F-E) cycle
Describe and use 'register transfer' notation to describe the F-E cycle
Show understanding of the purpose of interrupts
Including: • possible causes of interrupts • applications of interrupts • use of an Interrupt Service Routine (ISR) • when interrupts are detected during the fetch-execute cycle • how interrupts are handled
Tiếng Việt
Thí sinh cần có thể:
Ghi chú và hướng dẫn
Thể hiện sự hiểu biết về mô hình Von Neumann cơ bản cho hệ thống máy tính và khái niệm chương trình lưu trữ
Thể hiện sự hiểu biết về mục đích và vai trò của b bộ đếm (registers), bao gồm sự khác biệt giữa b bộ đếm mục đích chung và b bộ đếm mục đích đặc biệt
B bộ đếm mục đích đặc biệt bao gồm: • B bộ đếm chương trình (PC) • B bộ đếm dữ liệu bộ nhớ (MDR) • B bộ đếm địa chỉ bộ nhớ (MAR) • B bộ tích lũy (ACC) • B bộ đếm chỉ mục (IX) • B bộ đếm lệnh hiện tại (CIR) • B bộ đếm trạng thái
Thể hiện sự hiểu biết về mục đích và vai trò của Đơn vị số học và Logic (ALU), Đơn vị điều khiển (CU) và đồng hồ hệ thống, Bộ nhớ truy cập ngay (IAS)
Thể hiện sự hiểu biết về cách dữ liệu được truyền tải giữa các thành phần khác nhau của hệ thống máy tính sử dụng 总线 địa chỉ (address bus), 总线 dữ liệu (data bus) và 总线 điều khiển (control bus)
Thể hiện sự hiểu biết về các yếu tố đóng góp vào hiệu suất của hệ thống máy tính
Bao gồm: • loại bộ xử lý và số lượng lõi • chiều rộng总线 • tốc độ xung nhịp • b bộ nhớ đệm (cache memory)
Hiểu cách các cổng kết nối (ports) khác nhau cung cấp kết nối với thiết bị ngoại vi
Bao gồm kết nối với: • Bus Serial phổ quát (USB) • Giao diện đa phương tiện độ phân giải cao (HDMI) • Mảng đồ họa video (VGA)
Mô tả các giai đoạn của chu kỳ Lấy - Thực thi (F-E)
Mô tả và sử dụng ký hiệu 'truyền b bộ đếm' để mô tả chu kỳ F-E
Thể hiện sự hiểu biết về mục đích của ngắt
Bao gồm: • các nguyên nhân có thể gây ra ngắt • ứng dụng của ngắt • sử dụng Thuật toán dịch vụ ngắt (ISR) • thời điểm ngắt được phát hiện trong chu kỳ lấy-thực thi • cách ngắt được xử lý
Source: Cambridge International syllabus · Nguồn: Chương trình Cambridge International
English
The fetch-decode-execute cycle
The Von Neumann architecture 冯·诺依曼体系结构 underlies almost every general-purpose computer:
a single memory — the Immediate Access Store 立即存取存储器 (IAS) — holds both program instructions and data (the stored program 存储程序 concept).
a processor 处理器 (CPU) fetches instructions from memory and runs them one at a time.
instructions run in order unless a branch changes the flow.
The stored-program idea is what makes a computer flexible: change the program and you change what it does, with no rewiring.
Tiếng Việt
Chu kỳ lấy - giải mã - thực thi
Kiến trúc Von Neumann· nằm ở nền tảng của hầu hết mọi máy tính đa năng:
một bộ nhớ duy nhất — Bộ nhớ Truy cập Ngay (IAS) — chứa cả chỉ thị chương trình và dữ liệu (khái niệm chương trình được lưu trữ).
một bộ xử lý (CPU) lấy chỉ thị từ bộ nhớ và thực thi chúng lần lượt từng cái một.
các chỉ thị chạy theo thứ tự trừ khi một nhánh rẽ thay đổi luồng chảy.
Ý tưởng chương trình được lưu trữ là điều làm cho máy tính linh hoạt: thay đổi chương trình thì bạn thay đổi những gì nó làm, mà không cần đi lại dây dẫn.
Explore · Khám phá
Tap the parts of a Von Neumann computer · Chạm vào các bộ phận của máy tính Von Neumann
Explore each block. The CPU (control unit, ALU, registers) talks to a single main memory over the buses — and that one shared memory for instructions AND data is the Von Neumann idea. · Khám phá từng khối. CPU (đơn vị điều khiển, ALU, thanh ghi) giao tiếp với một bộ nhớ chính duy nhất qua các总线 — và bộ nhớ chung duy nhất cho cả lệnh VÀ dữ liệu này chính là ý tưởng của Von Neumann.
4.1
The CPU's main parts · Các bộ phận chính của CPU
English
All of these parts sit inside one small chip. The diagram later in this section shows how they connect; the photo below shows the real thing.
Arithmetic and Logic Unit (ALU)
The ALU 算术逻辑单元 does the arithmetic (add, subtract, …) and logic (AND, OR, comparisons). It takes operands from registers 寄存器 and puts results back in a register.
Control Unit (CU)
The control unit 控制单元decodes each instruction and sends the control signals to carry it out — opening data paths, telling the ALU what to do, and controlling memory reads and writes.
System clock
The clock sends a steady stream of pulses that keep the CPU in step. Each instruction takes a fixed number of cycles, and the clock speed 时钟频率 (e.g. 3.8 GHz) is one factor in performance.
"Explain how the CU and the system clock work together": the clock emits pulses at a fixed frequency; the control unit uses each pulse to move the fetch-execute cycle on by one step, sending its control signals in time with the pulses, so every part of the processor changes state together. A faster clock means more steps per second, up to the point where the circuits cannot settle between pulses.
Registers
Registers are tiny, very fast stores inside the CPU. The special purpose registers 专用寄存器 each have a fixed job in the cycle:
Program Counter 程序计数器 (PC) — the address of the next instruction.
Memory Address Register 内存地址寄存器 (MAR) — the address being read or written.
Memory Data Register 内存数据寄存器 (MDR) — the data going to or from memory.
Current Instruction Register 当前指令寄存器 (CIR) — the instruction being decoded.
Accumulator 累加器 (ACC) — the value the ALU is working on.
Status Register 状态寄存器 — holds flags 标志 (carry, zero, negative, overflow) used by branches. Each flag is one bit, set or cleared by the ALU after an operation: the zero flag after a comparison that matched, the carry flag when an addition overflowed the register, the negative flag when a result is negative. A conditional jump reads the flags to decide whether to branch, and an overflow flag can raise an interrupt.
Index Register 变址寄存器 — an offset added to an address in indexed addressing; incrementing it steps through an array one element at a time.
The "complete the table describing the role of each register" question wants one precise sentence per register in these terms: the PC holds the address of the next instruction to be fetched; the MAR holds the address of the location being read from or written to; the MDR holds the data or instruction just read from, or about to be written to, that location; the CIR holds the instruction currently being decoded and executed; the ACC holds the result of the last arithmetic or logic operation.
General-purpose registers 通用寄存器 are used by the programmer for temporary values during a calculation. Movements of data between registers and memory are written in register transfer 寄存器传送 notation — e.g. MAR ← [PC] ("copy the contents of PC into MAR").
Tiếng Việt
Tất cả các bộ phận này đều nằm trong một con chip nhỏ. Sơ đồ ở phần sau sẽ chỉ ra cách chúng kết nối; bức ảnh bên dưới cho thấy mặt thật.
CPU hiện đại: toàn bộ bộ xử lý là một con chip nhỏ (ở đây nhìn từ dưới lên, hiển thị các tiếp điểm)Ổ cắm CPU phù hợp trên bo mạch chủ: các tiếp điểm của chip nhấn lên các chân pin này
Bộarit và Logic (ALU)
ALU thực hiện phép tính cộng, trừ, … và các phép logic (AND, OR, so sánh). Nó nhận toán hạng từ các thanh ghi và đặt kết quả trở lại vào thanh ghi.
Bộ điều khiển (CU)
Bộ điều khiểngiải mã mỗi chỉ thị và gửi tín hiệu điều khiển để thực thi nó — mở các đường dẫn dữ liệu, bảo ALU biết phải làm gì, và kiểm soát việc đọc/ghi bộ nhớ.
Đồng hồ hệ thống
Đồng hồ gửi một dòng xung liên tục giúp CPU đồng bộ hóa. Mỗi chỉ thị mất một số chu kỳ cố định, và tốc độ xung nhịp (ví dụ: 3.8 GHz) là một yếu tố ảnh hưởng đến hiệu suất.
"Giải thích CU và đồng hồ hệ thống hoạt động phối hợp như thế nào": đồng hồ phát xung ở tần số cố định; bộ điều khiển sử dụng mỗi xung để đẩy chu kỳ lấy-thực thi tiến thêm một bước, gửi tín hiệu điều khiển đồng bộ với các xung, để mọi bộ phận của bộ xử lý thay đổi trạng thái cùng lúc. Đồng hồ nhanh hơn có nghĩa là nhiều bước hơn mỗi giây, cho đến khi các mạch không kịp ổn định giữa các xung.
Thanh ghi
Thanh ghi là các ngân hàng lưu trữ nhỏ bé nhưng cực nhanh bên trong CPU. Các thanh ghi mục đích đặc biệt mỗi cái có một nhiệm vụ cố định trong chu trình:
Bộ đếm chương trình (PC) — địa chỉ của chỉ thị tiếp theo.
Thanh ghi Địa chỉ Bộ nhớ (MAR) — địa chỉ đang được đọc hoặc ghi.
Thanh ghi Dữ liệu Bộ nhớ (MDR) — dữ liệu đang đi vào hoặc ra khỏi bộ nhớ.
Thanh Ghi Chỉ Thị Hiện Tại (CIR) — chỉ thị đang được giải mã.
Thanh ghi Tích lũy (ACC) — giá trị mà ALU đang xử lý.
Thanh ghi Trạng thái — chứa các cờ (cARRY, ZERO, NEGATIVE, OVERFLOW) được dùng bởi các nhánh rẽ. Mỗi cờ là một bit, được set hoặc cleared bởi ALU sau mỗi phép toán: cờ zero sau phép so sánh khớp, cờ carry khi phép cộng vượt quá giới hạn thanh ghi, cờ negative khi kết quả mang dấu âm. Nhánh rẽ có điều kiện đọc các cờ để quyết định rẽ, và cờ overflow có thể kích hoạt tín hiệu ngắt.
Thanh ghi Chỉ số — độ lệch được cộng vào địa chỉ trong phương pháp chỉ số hóa; tăng nó lên giúp duyệt qua mảng từng phần tử một.
Câu hỏi "hoàn thành bảng mô tả vai trò của từng thanh ghi" yêu cầu một câu chính xác cho mỗi thanh ghi theo các thuật ngữ này: PC chứa địa chỉ của chỉ thị tiếp theo sẽ được lấy; MAR chứa địa chỉ của vị trí đang được đọc từ hoặc ghi vào; MDR chứa dữ liệu hoặc chỉ thị vừa được đọc từ, hoặc sắp được ghi vào, vị trí đó; CIR chứa chỉ thị đang được giải mã và thực thi hiện tại; ACC chứa kết quả của phép toán số học hoặc logic cuối cùng.
Thanh ghi đa năng được lập trình viên sử dụng để lưu giá trị tạm thời trong quá trình tính toán. Việc di chuyển dữ liệu giữa thanh ghi và bộ nhớ được viết theo ký hiệu chuyển đổi thanh ghi — ví dụ: MAR ← [PC] ("sao chép nội dung PC vào MAR").
CPU Von Neumann: các thanh ghi, đơn vị điều khiển và ALU được liên kết bởi các总线
arithmetic and logic unit/ˌærɪθˈmetɪk ənd ˈlɒdʒɪk ˈjuːnɪt/
bộ xử lý số học và logic
ALU/ˌeɪ el ˈjuː/
ALU
operand/ˈɒpərænd/
toán hạng
bit/bɪt/
bit
4.1
Buses · Các总线
English
Three internal buses 总线 (sets of parallel wires) connect the parts:
address bus 地址总线 — carries the memory address. One-way (CPU → memory).
data bus 数据总线 — carries the data. Two-way.
control bus 控制总线 — carries control signals (read, write, interrupt). Two-way.
An $n$-bit address bus can reach $2^{n}$ memory locations. The data-bus width sets how many bits move per access (often the word size).
Tiếng Việt
Ba 总线 bên trong (tập hợp dây song song) kết nối các thành phần:
总线 địa chỉ — truyền địa chỉ bộ nhớ. Một chiều (CPU → bộ nhớ).
总线 dữ liệu — truyền dữ liệu. Hai chiều.
总线 điều khiển — truyền tín hiệu điều khiển (đọc, ghi, ngắt). Hai chiều.
Một 总线 địa chỉ$n$-bit có thể truy cập $2^{n}$ vị trí bộ nhớ. Chiều rộng 总线 dữ liệu quyết định số bit được di chuyển mỗi lần truy cập (thường là kích thước từ).
Ba总线 hệ thống kết nối CPU, bộ nhớ và thiết bị đầu vào/đầu raBo mạch chủ: CPU, bộ nhớ và I/O đều nằm trên cùng một tập总线 — các đường dẫn in chạy giữa chúng
What affects performance · Những yếu tố ảnh hưởng đến hiệu suất
English
clock speed — more cycles per second.
number of cores 核心 — a multi-core CPU runs several threads at once.
word size 字长 — a 64-bit CPU handles 64-bit chunks per cycle and can address far more memory than a 32-bit one.
amount of RAM 随机存取存储器 — more RAM holds more of the working set; too little forces the OS to page 页 to disk.
cache memory 高速缓存 size — more cache cuts average memory access time.
secondary storage 辅助存储器 type — an SSD loads programs far faster than an HDD.
bus width and speed — wider/faster buses move data more quickly.
Match the specs to the workload: a quad-core beats a dual-core on parallel work, but higher per-core speed wins on single-threaded work.
Each factor is a two-mark answer with a reason attached:
More cores: each core can fetch and execute its own instruction at the same time, so several programs, or the threads of one program, run in parallel. But a program must be written to use more than one core, so doubling the cores does not double the speed.
Higher clock speed: more fetch-execute cycles per second, so more instructions per second; the limit is the heat produced.
Wider bus: a wider data bus moves more bits in each transfer, so fewer transfers are needed for the same data; a wider address bus can address more memory locations.
Cache memory: a small, fast memory inside or next to the processor that keeps the instructions and data used most recently or most often. Reading them from cache is much faster than from RAM, so the processor spends less time waiting.
"Explain why the new computer performs better" is answered by comparing the two specifications line by line: a higher clock speed executes more instructions per second, more cores run more tasks at once, more cache means fewer slow accesses to RAM, and more RAM means fewer transfers to disk.
Tiếng Việt
Tốc độ xung nhịp — nhiều chu kỳ hơn mỗi giây.
Số nhân — CPU đa nhân chạy nhiều luồng cùng lúc.
Kích thước từ — CPU 64-bit xử lý các khối 64-bit mỗi chu kỳ và có thể truy cập bộ nhớ lớn hơn nhiều so với CPU 32-bit.
Dung lượng RAM — nhiều RAM hơn lưu trữ được nhiều dữ liệu hoạt động hơn; thiếu RAM sẽ buộc OS phải pheap vào đĩa.
Dung lượng bộ nhớ đệm — bộ nhớ đệm lớn hơn rút ngắn thời gian truy cập bộ nhớ trung bình.
Loại lưu trữ thứ cấp — SSD tải chương trình nhanh hơn rất nhiều so với HDD.
Chiều rộng và tốc độ总线 —总线 rộng/nhanh hơn di chuyển dữ liệu nhanh hơn.
Gắn thông số kỹ thuật với tác vụ: CPU bốn nhân vượt trội hơn CPU hai nhân trong công việc song song, nhưng tốc độ cao hơn trên mỗi nhân sẽ thắng thế trong công việc đơn luồng.
Mỗi yếu tố là câu trả lời điểm hai kèm theo lý do:
Nhiều nhân hơn: mỗi nhân có thể lấy và thực thi lệnh riêng của nó cùng lúc, nên nhiều chương trình hoặc các luồng của một chương trình chạy song song. Tuy nhiên, một chương trình phải được viết để sử dụng nhiều hơn một nhân, nên việc tăng gấp đôi số nhân không làm tăng gấp đôi tốc độ.
Tốc độ xung nhịp cao hơn: nhiều chu kỳ lấy-thực hiện hơn mỗi giây, nên nhiều lệnh hơn mỗi giây; giới hạn là nhiệt lượng sinh ra.
总线 rộng hơn: 总线 dữ liệu rộng hơn di chuyển nhiều bit hơn trong mỗi lần truyền, nên ít lần truyền hơn là cần thiết cho cùng một lượng dữ liệu; 总线 địa chỉ rộng hơn có thể truy cập nhiều vị trí bộ nhớ hơn.
Bộ nhớ đệm: bộ nhớ nhỏ, nhanh nằm bên trong hoặc cạnh bộ xử lý giữ các lệnh và dữ liệu đã dùng gần đây nhất hoặc thường xuyên nhất. Đọc chúng từ bộ nhớ đệm nhanh hơn nhiều so với từ RAM, nên bộ xử lý dành ít thời gian chờ đợi hơn.
"Giải thích tại sao máy tính mới hoạt động tốt hơn" được trả lời bằng cách so sánh từng dòng hai thông số kỹ thuật: tốc độ xung nhịp cao hơn thực thi nhiều lệnh hơn mỗi giây, nhiều nhân hơn chạy nhiều tác vụ cùng lúc, bộ nhớ đệm lớn hơn nghĩa là ít lần truy cập RAM chậm hơn, và nhiều RAM hơn nghĩa là ít lần truyền vào đĩa hơn.
Different ports use different signals, so an HDMI cable will not fit a USB socket. USB-C is unusual in carrying video, data and power.
"Explain how the computer connects to the monitor through HDMI": the HDMI port sends the video and the audio as one digital signal down a single cable, so no conversion to analogue is needed and the picture is not degraded; the cable carries high-definition resolutions and the monitor's own port decodes the signal. A USB device is plug-and-play: when it is connected the computer detects it, identifies it, loads or installs the driver it needs, and can supply it with power, all without a restart.
Tiếng Việt
Một cổng kết nối là ổ cắm vật lý để kết nối thiết bị ngoại vi:
USB (Bus Serial Đa năng) — đa năng (bàn phím, ổ đĩa, điện thoại).
HDMI (Giao diện Đa phương tiện Độ phân giải Cao) — video và âm số hóa đến màn hình.
VGA (Mảng Đồ họa Video) — tín hiệu video tương tự cũ ra màn hình.
Ethernet (RJ-45) — mạng LAN có dây. Jack âm thanh — tai nghe/micro.
Các cổng kết nối khác nhau sử dụng tín hiệu khác nhau, nên cáp HDMI sẽ không vừa với ổ cắm USB. USB-C đặc biệt ở chỗ truyền cả video, dữ liệu và nguồn điện.
"Giải thích cách máy tính kết nối với màn hình qua HDMI": Cổng HDMI gửi video và âm thanh dưới dạng một tín hiệu số duy nhất qua một cáp, nên không cần chuyển đổi sang tín hiệu tương tự và hình ảnh không bị giảm chất lượng; cáp mang độ phân giải cao và cổng của màn hình giải mã tín hiệu đó. Thiết bị USB là cắm và chạy: khi được kết nối, máy tính phát hiện nó, nhận dạng, tải hoặc cài đặt driver cần thiết, và cung cấp nguồn điện cho nó, tất cả mà không cần khởi động lại.
4.1
Fetch-Execute cycle · Chu kỳ Lấy - Thực thi
English
The CPU repeats the fetch-execute cycle 取指-执行周期, one run per machine instruction.
Fetch
the PC's address is copied to the MAR.
the PC is incremented to point to the next instruction.
a read signal goes over the control bus.
memory puts the instruction on the data bus.
it is copied into the MDR, then into the CIR.
The exam asks for these steps in register transfer notation 寄存器传送记法, where [X] means the contents of register X and [[MAR]] means the contents of the memory location whose address is in the MAR:
The order matters: the PC is incremented straight after its address has been copied, so that a jump executed later can still overwrite it. During execution the same notation describes each instruction; for LDD 200, for example, MAR ← 200, MDR ← [[MAR]], ACC ← [MDR].
Decode
The CU decodes the instruction in the CIR — what operation, and which operands or addresses.
Execute
The CU carries it out: arithmetic/logic goes to the ALU (result to the ACC); a load/store moves data between memory and a register; a branch changes the PC. Then the cycle repeats.
Tiếng Việt
CPU lặp lại chu kỳ lấy-thực hiện, mỗi lần chạy ứng với một lệnh máy.
Lấy
địa chỉ của PC được sao chép vào MAR.
PC được tăng lên để trỏ đến lệnh tiếp theo.
tín hiệu đọc đi qua 总线 điều khiển.
bộ nhớ đưa lệnh lên 总线 dữ liệu.
nó được sao chép vào MDR, sau đó vào CIR.
Đề thi yêu cầu các bước này viết theo ký hiệu chuyển đổi thanh ghi, nơi [X] có nghĩa là nội dung của thanh ghi X và [[MAR]] có nghĩa là nội dung của vị trí bộ nhớ có địa chỉ nằm trong MAR:
MAR ← [PC] the address of the next instruction goes to the MAR
PC ← [PC] + 1 the PC now points to the following instruction
MDR ← [[MAR]] the instruction at that address is read into the MDR
CIR ← [MDR] the instruction is copied into the CIR for decoding
Thứ tự quan trọng: PC được tăng ngay sau khi địa chỉ của nó được sao chép, để đảm bảo rằng một lệnh nhảy được thực thi sau vẫn có thể ghi đè lên nó. Trong quá trình thực thi, ký hiệu tương tự mô tả từng lệnh; ví dụ, đối với LDD 200, ta có MAR ← 200, MDR ← [[MAR]], ACC ← [MDR].
Các chuyển đổi thanh ghi trong quá trình lấy: PC → MAR → bộ nhớ → MDR → CIR, với PC được tăng lên
Giải mã
CU giải mã lệnh trong CIR — thao tác nào, và các toán tử hay địa chỉ nào.
Thực thi
CU thực hiện nó: phép tính số học/logic được gửi đến ALU (kết quả về ACC); lệnh tải/lưu di chuyển dữ liệu giữa bộ nhớ và thanh ghi; lệnh nhảy thay đổi PC. Sau đó chu kỳ lặp lại.
Chu kỳ lấy-thực thi, với việc kiểm tra ngắt mỗi lần
Explore · Khám phá
The fetch-execute cycle · Chu kỳ lấy lệnh-thực thi
Tap round the loop the CPU repeats billions of times a second. Watch how fetch uses the PC/MAR/MDR/CIR registers, then decode and execute act on what was fetched. · Chạm vòng quanh loop mà CPU lặp lại hàng tỷ lần mỗi giây. Xem cách lấy lệnh sử dụng các thanh ghi PC/MAR/MDR/CIR, sau đó giải mã và thực thi tác động lên những gì đã được lấy.
Explore · Khám phá
The fetch–execute cycle · Chu kỳ lấy — thực thi
Step through how the CPU runs one instruction — fetch it from memory, decode it, then execute it, over and over. · Từng bước CPU chạy một lệnh — lấy nó từ bộ nhớ, giải mã nó, sau đó thực thi nó, lặp đi lặp lại.
special purpose registers/ˈspeʃl ˈpɜːpəs ˈredʒɪstəz/
thanh ghi chuyên dụng
Program Counter/ˈprəʊɡræm ˈkaʊntə/
Đếm chương trình (PC)
Memory Address Register/ˈmeməri əˈdres ˈredʒɪstə/
Thanh ghi Địa chỉ Bộ nhớ (MAR)
Memory Data Register/ˈmeməri ˈdeɪtə ˈredʒɪstə/
Thanh ghi Dữ liệu Bộ nhớ (MDR)
Current Instruction Register/ˈkʌrənt ɪnˈstrʌkʃn ˈredʒɪstə/
Thanh ghi Lệnh Hiện tại (CIR)
accumulator/əˈkjuːmjʊleɪtə/
bộ cộng gộp
Status Register/ˈsteɪtəs ˈredʒɪstə/
Thanh ghi Trạng thái (PSW)
flags/flæɡz/
cờ
4.1
Interrupts · Ngắt
English
An interrupt 中断 is a signal that pauses the normal cycle so the CPU can handle an urgent event (a key press, a packet arriving, a hardware fault, division by zero, the OS timer).
Handling one:
finish the current instruction.
save the state (PC and registers).
load the address of the interrupt service routine 中断服务程序 (ISR) into the PC and run it.
the ISR handles the event.
restore the saved state and carry on.
Interrupts let the system respond promptly without the CPU constantly checking devices, and are how the OS multitasks.
"Explain how an interrupt from an input device is detected and handled in the F-E cycle" is a four-mark answer with these points: the device sends an interrupt signal that sets the interrupt flag in the interrupt register 中断寄存器; the processor checks that register at the end of every fetch-execute cycle, after the current instruction has finished executing; if a flag is set and the interrupt has a higher priority than the current task, the contents of the PC and the other registers are saved onto the stack 栈; the address of the interrupt service routine is loaded into the PC and the routine runs; when it finishes, the saved values are restored from the stack and the interrupted program continues from where it stopped.
Causes worth naming: a hardware interrupt from a device (a key pressed, a printer buffer empty, a network packet arriving), a software interrupt from a fault (division by zero, an illegal instruction, arithmetic overflow), a timer interrupt from the operating system marking the end of a time slice, and a power failure warning.
Tiếng Việt
Một ngắt là tín hiệu tạm dừng chu kỳ bình thường để CPU xử lý một sự kiện cấp thiết (nhấn phím, gói tin đến, lỗi phần cứng, chia cho không, bộ đếm hệ điều hành).
Xử lý một ngắt:
hoàn thành lệnh hiện tại.
lưu trạng thái (PC và các thanh ghi).
nạp địa chỉ của chương trình phục vụ ngắt (ISR) vào PC và chạy nó.
ISR xử lý sự kiện.
phục hồi trạng thái đã lưu và tiếp tục.
Ngắt giúp hệ thống phản hồi nhanh mà không cần CPU liên tục kiểm tra các thiết bị, và là cách hệ điều hành đa nhiệm hóa.
"Giải thích cách phát hiện và xử lý một ngắt từ thiết bị đầu vào trong chu kỳ F-E" là câu trả lời điểm 4 với các ý sau: thiết bị gửi tín hiệu ngắt đặt cờ ngắt trong đăng ký ngắt; bộ xử lý kiểm tra đăng ký này ở cuối mỗi chu kỳ lấy-thực thi, sau khi lệnh hiện tại đã hoàn thành thực thi; nếu có cờ được đặt và ngắt có mức ưu tiên cao hơn tác vụ hiện tại, nội dung của PC và các thanh ghi khác được lưu lên ngăn xếp; địa chỉ của chương trình phục vụ ngắt được nạp vào PC và chương trình chạy; khi nó kết thúc, các giá trị đã lưu được phục hồi từ ngăn xếp và chương trình bị gián đoạn tiếp tục từ nơi nó đã dừng.
Các nguyên nhân đáng kể tên: ngắt phần cứng từ thiết bị (nhấn phím, bộ đệm máy in trống, gói tin mạng đến), ngắt phần mềm từ lỗi (chia cho không, lệnh bất hợp lệ, tràn số học), ngắt bộ đếm từ hệ điều hành đánh dấu hết thời lượng, và cảnh báo mất điện.
Assembly language and machine code · Ngôn ngữ assembly và mã máy
Syllabus · Chương trình
English
Candidates should be able to:
Notes and guidance
Show understanding of the relationship between assembly language and machine code
Describe the different stages of the assembly process for a two-pass assembler
Apply the two-pass assembler process to a given simple assembly language program
Trace a given simple assembly language program
Show understanding that a set of instructions are grouped
Including the following groups: • Data movement • Input and output of data • Arithmetic operations • Unconditional and conditional instructions • Compare instructions
Show understanding of and be able to use different modes of addressing
Including immediate, direct, indirect, indexed, relative
Tiếng Việt
Thí sinh cần có thể:
Ghi chú và hướng dẫn
Thể hiện sự hiểu biết về mối quan hệ giữa ngôn ngữ assembly và mã máy
Mô tả các giai đoạn khác nhau của quy trình liên kết cho trình liên kết hai lượt
Áp dụng quy trình trình liên kết hai lượt vào một chương trình ngôn ngữIOException đơn giản được cho
Theo dõi một chương trình ngôn ngữIOException đơn giản được cho
Thể hiện sự hiểu biết rằng một tập lệnh được nhóm lại
Bao gồm các nhóm sau: • Di chuyển dữ liệu • Nhập và xuất dữ liệu • Phép toán số học • Lệnh không điều kiện và có điều kiện • Lệnh so sánh
Thể hiện sự hiểu biết và có khả năng sử dụng các chế độ địa chỉ khác nhau
Bao gồm ngay, trực tiếp, gián tiếp, lưu trữ theo chỉ mục, tương đối
Source: Cambridge International syllabus · Nguồn: Chương trình Cambridge International
English
The CPU actually runs machine code 机器码 — bit patterns, specific to one architecture. Assembly language 汇编语言 is a readable form, with one instruction per machine instruction, written using mnemonics 助记符 like LDD, ADD, JMP. An assembler 汇编器 translates it to machine code.
Two-pass assembler
A two-pass assembler reads the source twice:
pass 1 builds a symbol table 符号表: each time a label 标签 (like LOOP:) appears, record its address; no code yet.
pass 2 generates code: translate each instruction, and when one refers to a label (like JMP LOOP), look up its address in the symbol table.
Two passes handle forward references 前向引用 (a jump to a label defined later).
Worked example. Apply the two-pass process to this program, whose first instruction is stored at address 100.
Pass 1 reads each line, counts the address it will occupy, and records every label in the symbol table: LOOP = 101 (the DEC line) and COUNT = 105 (the data line). No code is produced. Pass 2 reads the program again and translates each line into machine code, replacing each mnemonic by its opcode 操作码 and each symbolic address by the number from the symbol table: LDD COUNT becomes the opcode for LDD with operand 操作数 105, and JPN LOOP becomes the opcode for JPN with operand 101. The jump back to LOOP could have been resolved in one pass, but a jump forward to a label not yet seen could not, which is why the assembler makes two.
Example instruction set
Cambridge uses a small generic set, printed in the paper's reference table, with one general-purpose register, the accumulator (ACC), and an index register (IX). An operand written #n is a denary number, Bn a binary number and &n a hexadecimal number; <address> is a location number or a label.
Group
Instruction
What it does
Data movement
LDM #n
load the number n into ACC (immediate)
LDD <address>
load the contents of the address into ACC (direct)
LDI <address>
the address holds another address; load the contents of that one into ACC (indirect)
LDX <address>
add IX to the address and load the contents of the result into ACC (indexed)
LDR #n
load the number n into IX
MOV <register>
copy ACC into the named register (IX)
STO <address>
store the contents of ACC at the address
Input and output
IN
read a key press and put its ASCII code in ACC
OUT
output the character whose ASCII code is in ACC
Arithmetic
ADD <address> / ADD #n
add the contents of the address, or the number, to ACC
SUB <address> / SUB #n
subtract from ACC
INC <register> / DEC <register>
add 1 to, or subtract 1 from, ACC or IX
Compare
CMP <address> / CMP #n
compare ACC with the contents of the address, or with n, and set the flag
CMI <address>
compare ACC with the contents of the address held at the address (indirect)
Jump
JMP <address>
jump to the address unconditionally
JPE <address> / JPN <address>
jump if the last compare was equal / not equal
Bit manipulation
AND, OR, XOR with #n, Bn, &n or <address>
bitwise operation on ACC
LSL #n / LSR #n
shift ACC logically n places left or right
END
end the program
The "assembly language instructions are grouped" question wants the group names, and an instruction from each: data movement, input and output, arithmetic, unconditional and conditional jumps, compare, and bit manipulation.
Tiếng Việt
CPU thực tế chạy mã máy — các mẫu bit, đặc thù cho một kiến trúc. Ngôn ngữ assembly là dạng dễ đọc, với một lệnh cho mỗi lệnh máy, được viết bằng biểu tượng như LDD, ADD, JMP. Một trình biên dịch assembly dịch nó sang mã máy.
Trình biên dịch assembly biến biểu tượng thành các mẫu bit mã máy
Trình biên dịch assembly hai lượt
Trình biên dịch assembly hai lượt đọc nguồn hai lần:
lượt 1 xây dựng bảng ký hiệu: mỗi lần một nhãn (như LOOP:) xuất hiện, ghi nhận địa chỉ của nó; chưa có mã code nào.
lượt 2 tạo mã: dịch từng lệnh, và khi một lệnh tham chiếu đến một nhãn (như JMP LOOP), tra cứu địa chỉ của nó trong bảng ký hiệu.
Hai lượt xử lý các tham chiếu tới trước (lệnh nhảy đến một nhãn được định nghĩa sau).
Ví dụ đã làm. Áp dụng quy trình hai lượt cho chương trình này, với lệnh đầu tiên được lưu tại địa chỉ 100.
LDD COUNT
LOOP: DEC ACC
CMP #0
JPN LOOP
END
COUNT: 5
Lượt 1 đọc từng dòng, đếm địa chỉ sẽ chiếm giữ, và ghi nhận mọi nhãn trong bảng ký hiệu: LOOP = 101 (dòng DEC) và COUNT = 105 (dòng dữ liệu). Không có mã code nào được tạo ra. Lượt 2 đọc lại chương trình và dịch từng dòng thành mã máy, thay thế mỗi biểu tượng bằng opcode của nó và mỗi địa chỉ ký hiệu bằng số từ bảng ký hiệu: LDD COUNT trở thành opcode cho LDD với toán tử 105, và JPN LOOP trở thành opcode cho JPN với toán tử 101. Lệnh nhảy ngược lại LOOP có thể được giải quyết trong một lượt, nhưng một lệnh nhảy tiến đến một nhãn chưa thấy trước đó thì không, đó là lý do trình biên dịch thực hiện hai lượt.
Ví dụ về tập lệnh
Cambridge sử dụng một tập hợp nhỏ chung, được in trong bảng tham chiếu của đề bài, với một thanh ghi đa năng, bộ cộng tích lũy (ACC), và một thanh chỉ mục (IX). Một toán hạng viết #n là số thập phân, Bn là số nhị phân và &n là số thập lục phân; <address> là số vị trí hoặc nhãn.
Nhóm
Lệnh
Chức năng
Di chuyển dữ liệu
LDM #n
nạp số n vào ACC (ngay lập tức)
LDD <address>
nạp nội dung của địa chỉ vào ACC (trực tiếp)
LDI <address>
địa chỉ chứa một địa chỉ khác; nạp nội dung của địa chỉ đó vào ACC (gián tiếp)
LDX <address>
thêm IX vào địa chỉ và nạp nội dung của kết quả vào ACC (chỉ mục)
LDR #n
nạp số n vào IX
MOV <register>
sao chép ACC vào thanh ghi được chỉ định (IX)
STO <address>
lưu nội dung của ACC tại địa chỉ
Nhập và xuất
IN
đọc một lần nhấn phím và đưa mã ASCII của nó vào ACC
OUT
xuất ký tự có mã ASCII nằm trong ACC
Số học
ADD <address> / ADD #n
thêm nội dung của địa chỉ, hoặc số, vào ACC
SUB <address> / SUB #n
trừ khỏi ACC
INC <register> / DEC <register>
thêm 1 vào, hoặc trừ 1 khỏi, ACC hoặc IX
So sánh
CMP <address> / CMP #n
so sánh ACC với nội dung của địa chỉ, hoặc với n, và đặt cờ
CMI <address>
so sánh ACC với nội dung của địa chỉ được lưu tại địa chỉ (gián tiếp)
Nhảy
JMP <address>
nhảy đến địa chỉ không điều kiện
JPE <address> / JPN <address>
nhảy nếu phép so sánh cuối cùng bằng / không bằng
Thao tác bit
AND, OR, XOR với #n, Bn, &n hoặc <address>
thao tác bit trên ACC
LSL #n / LSR #n
dịch chuyển ACC theo logic n vị trí sang trái hoặc phải
END
kết thúc chương trình
Câu hỏi "câu lệnh ngôn ngữ assembly được nhóm lại" yêu cầu tên các nhóm và một câu lệnh từ mỗi nhóm: di chuyển dữ liệu, nhập xuất, số học, nhảy vô điều kiện và có điều kiện, so sánh, và thao tác bit.
Explore · Khám phá
How a two-pass assembler works · Cách hoạt động của trình biên dịch assembly hai lượt
Step through it. The assembler reads your code twice: pass 1 just finds where every label lives, so pass 2 can fill in the addresses — that is how a jump to a label defined later still works. · Hãy xem xét từng bước. Trình biên dịch đọc mã nguồn của bạn hai lần: lượt 1 chỉ xác định vị trí của mọi nhãn, để lượt 2 có thể điền đầy đủ các địa chỉ — đó là cách một lệnh nhảy đến một nhãn được định nghĩa sau vẫn hoạt động.
The addressing mode 寻址方式 (the modes of addressing) says how the CPU finds the operand:
immediate addressing 立即寻址 — the operand is the value in the instruction. LDM #10 loads 10.
direct addressing 直接寻址 — the instruction holds an address; the operand is the value there. LDD 200.
indirect addressing 间接寻址 — the instruction holds an address that holds another address, which is the data. LDI 200.
indexed addressing 变址寻址 — effective address is address + index register; used for arrays. LDX 100 with IR = 5 reads address 105.
(Relative addressing 相对寻址 gives the address as an offset from the PC — used for jumps.)
Worked example. Memory holds: location 200 = 250, location 250 = 99, location 105 = 7. The index register holds 5. What is in the accumulator after each of LDM #200, LDD 200, LDI 200 and LDX 100? Follow how far each mode has to look. LDM #200 is immediate - the operand is the number written in the instruction, so the accumulator holds 200. LDD 200 is direct - go to location 200 and take what is there: 250. LDI 200 is indirect - location 200 holds 250, which is another address, so go on to location 250: 99. LDX 100 is indexed - add the index register to the address, $100 + 5 = 105$, and read location 105: 7. Count the hops to keep them apart: immediate 0, direct 1, indirect 2, indexed 1 (once the index has been added).
Tiếng Việt
Chế độ trỏ địa chỉ (các chế độ truy cập) cho biết CPU tìm toán hạng như thế nào:
trỏ địa chỉ ngay lập tức — toán hạng là giá trị trong câu lệnh. LDM #10 nạp 10.
trỏ địa chỉ trực tiếp — câu lệnh chứa một địa chỉ; toán hạng là giá trị tại đó. LDD 200.
trỏ địa chỉ gián tiếp — câu lệnh chứa một địa chỉ chứa một địa chỉ khác, đó là dữ liệu. LDI 200.
địa chỉ hóa chỉ mục — địa chỉ hiệu dụng là address + index register; dùng cho mảng. LDX 100 với IR = 5 đọc địa chỉ 105.
(Trỏ địa chỉ tương đối đưa ra địa chỉ dưới dạng độ lệch từ PC — dùng cho các lệnh nhảy.)
Mỗi chế độ trỏ địa chỉ tiếp cận toán hạng của nó như thế nào — ngay lập tức, trực tiếp, gián tiếp và theo chỉ số
Ví dụ đã giải. Bộ nhớ chứa: vị trí 200 = 250, vị trí 250 = 99, vị trí 105 = 7. Thanh chỉ mục chứa 5. Có gì trong bộ cộng tích lũy sau mỗi lệnh LDM #200, LDD 200, LDI 200 và LDX 100? Theo dõi khoảng cách mỗi chế độ phải tìm kiếm. LDM #200 là ngay lập tức - toán hạng là con số được viết trong lệnh, vì vậy bộ cộng tích lũy chứa 200. LDD 200 là trực tiếp - đi đến vị trí 200 và lấy cái gì ở đó: 250. LDI 200 là gián tiếp - vị trí 200 chứa 250, đây là một địa chỉ khác, nên tiếp tục đến vị trí 250: 99. LDX 100 là chỉ mục - thêm thanh chỉ mục vào địa chỉ, $100 + 5 = 105$, và đọc vị trí 105: 7. Đếm số bước nhảy để phân biệt chúng: ngay lập tức 0, trực tiếp 1, gián tiếp 2, chỉ mục 1 (sau khi đã thêm chỉ mục).
Tracing an assembly program · Theo dõi một chương trình assembly
English
To trace it: make a table with columns for the PC, ACC, index register, each variable and any flags. Step through the instructions, updating the table after each; follow branches when they change the PC; stop at END. A common pattern is a loop over an array using indexed addressing.
Worked example. Trace this program. Address 200 holds 5 and address 201 holds 0.
Write one row for each instruction executed, filling in only the columns that change:
Instruction
ACC
200
201
Output
start
5
0
LDD 200
5
CMP #0
JPE 108
not taken
OUT
character with code 5
DEC ACC
4
STO 200
4
LDD 201
0
JMP 100
LDD 200
4
and so on, until LDD 200 loads 0, the compare sets the equal flag, JPE 108 is taken and the program ends. Three things the examiner checks: a CMP changes no register, only a flag; a jump not taken still counts as executed; and OUT outputs a character, so it goes in the output column, not the ACC column. "State the effect of changing LDD 10 to LDM #10": the ACC would hold the number 10 instead of the contents of address 10.
Tiếng Việt
Để theo dõi nó: tạo bảng với các cột cho PC, ACC, thanh ghi chỉ số, từng biến số và bất kỳ cờ nào. Thực hiện lần lượt các câu lệnh, cập nhật bảng sau mỗi bước; theo dõi các nhánh khi chúng thay đổi PC; dừng lại ở END. Một mẫu phổ biến là vòng lặp qua một mảng sử dụng trỏ địa chỉ theo chỉ số.
Ví dụ đã giải. Theo dõi chương trình này. Địa chỉ 200 chứa 5 và địa chỉ 201 chứa 0.
100 LDD 200
101 CMP #0
102 JPE 108
103 OUT
104 DEC ACC
105 STO 200
106 LDD 201
107 JMP 100
108 END
Viết một hàng cho mỗi câu lệnh được thực thi, điền vào chỉ các cột thay đổi:
Câu lệnh
ACC
200
201
Kết quả đầu ra
bắt đầu
5
0
LDD 200
5
CMP #0
JPE 108
không được thực hiện
OUT
ký tự với mã 5
DEC ACC
4
STO 200
4
LDD 201
0
JMP 100
LDD 200
4
và cứ thế cho đến khi LDD 200 nạp 0, phép so sánh đặt cờ bằng, JPE 108 được thực hiện và chương trình kết thúc. Ba thứ mà giám khảo kiểm tra: một CMP không thay đổi thanh ghi nào, chỉ là cờ; một lệnh nhảy không được thực hiện vẫn tính là đã thực thi; và OUT xuất ra một ký tự, vì vậy nó nằm trong cột kết quả đầu ra, không phải cột ACC. "Nêu ảnh hưởng của việc thay đổi LDD 10 thành LDM #10": ACC sẽ chứa số 10 thay vì nội dung của địa chỉ 10.
4.3
Binary shifts · Dịch chuyển nhị phân
Syllabus · Chương trình
Candidates should be able to:
Notes and guidance
Show understanding of and perform binary shifts
Logical, arithmetic and cyclic Left shift, right shift
Show understanding of how bit manipulation can be used to monitor/control a device
Carry out bit manipulation operations Test and set a bit (using bit masking)
Instruction Label | Opcode | Operand
Explanation
AND #n / Bn / &n
Bitwise AND operation of the contents of ACC with the operand
AND
Bitwise AND operation of the contents of ACC with the contents of
XOR #n / Bn / &n
Bitwise XOR operation of the contents of ACC with the operand
XOR
Bitwise XOR operation of the contents of ACC with the contents of
OR #n / Bn / &n
Bitwise OR operation of the contents of ACC with the operand
OR
Bitwise OR operation of the contents of ACC with the contents of
LSL #n
Bits in ACC are shifted logically n places to the left. Zeros are introduced on the right hand end
LSR #n
Bits in ACC are shifted logically n places to the right. Zeros are introduced on the left hand end
Labels an instruction
Gives a symbolic address
All questions will assume there is only one general purpose register available (Accumulator) ACC denotes Accumulator IX denotes Index Register can be an absolute or symbolic address # denotes a denary number, e.g. #123 B denotes a binary number, e.g. B01001010 & denotes a hexadecimal number, e.g. &4A
Source: Cambridge International syllabus · Nguồn: Chương trình Cambridge International
English
A logical shift 逻辑移位 moves all the bits left or right by some places, filling new positions with 0.
left shift by 1 (LSL #1) — bits move left, a 0 enters on the right; for an unsigned number this is × 2.
right shift by 1 (LSR #1) — bits move right, a 0 enters on the left; for an unsigned number this is integer ÷ 2.
Shifting by $n$ places multiplies or divides by $2^{n}$. Example: 00001011 (11) LSL #1 → 00010110 (22).
Bits shifted off the end are lost, so the multiplication is only correct while they were zeros. LSL #2 on the two's-complement integer 11001010 gives 00101000: the two 1s that fell off the left are gone, the sign bit has changed, and the result is no longer four times the original.
An arithmetic right shift keeps the sign bit so a negative signed number stays negative. A cyclic shift 循环移位 (rotate) feeds the bit that drops off one end back in at the other end, so no bits are lost.
"Show the result of an arithmetic right shift of 3 places on 10011110": copy the sign bit into each vacated place, 11110011. The same shift on 01011100 gives 00001011. A cyclic left shift of 1 on 10000110 gives 00001101: the leading 1 reappears on the right.
The difference between the two right shifts is a single bit. Take 11110000, which is 240 read as unsigned and $-16$ read as signed. LSR #1 brings in a 0 and gives 01111000$= 120$, which is the correct half of 240. ASR #1 copies the sign bit instead and gives 11111000$= -8$, which is the correct half of $-16$. Neither is wrong — each halves the value under one reading.
Bit manipulation for monitoring/control
Embedded devices often use one bit 位 of a register per signal (e.g. bit $n$ = LED $n$). Using a mask 掩码 — bit masking — you can:
set bit $n$: R = R OR a mask with bit $n$ set.
clear bit $n$: R = R AND a mask with bit $n$ clear and the rest set.
toggle bit $n$: R = R XOR a mask with bit $n$ set.
test bit $n$: R AND the mask, then check if the result is non-zero.
Bit manipulation is fast, uses little memory, and lets one byte hold up to 8 on/off states.
In the exam's instruction set these are AND, OR and XOR with a mask written as a denary, binary or hexadecimal operand. With the ACC holding 10101100:
Instruction
Mask
Result in ACC
Effect
AND B00001111
00001111
00001100
keeps only the low four bits (clears the others)
OR #1
00000001
10101101
sets the least significant bit, leaving the rest unchanged
XOR &FF
11111111
01010011
inverts every bit
AND B00001000 then CMP #0
00001000
00001000
tests bit 3: the compare is not equal, so bit 3 was set
LSL #2
10110000
shifts left two places, losing the top two bits
LSR #3
00010101
shifts right three places, zeros entering on the left
"Write the instruction that sets the least significant bit to 1 and leaves the others unchanged": OR #1, or OR B00000001. To clear a bit use AND with a mask that has a 0 in that place and 1s elsewhere; to test a bit, AND with a mask that has a 1 only in that place, then compare the result with zero. In a monitoring device, one bit of a register per sensor lets a single AND check whether a particular sensor is on, and one OR switches an actuator's control bit on without disturbing the others.
Tiếng Việt
Dịch chuyển logic di chuyển tất cả các bit sang trái hoặc phải một số vị trí, lấp đầy các vị trí mới bằng 0.
dịch chuyển trái 1 (LSL #1) — các bit di chuyển sang trái, một 0 đi vào bên phải; đối với số không dấu thì đây là × 2.
dịch chuyển phải 1 (LSR #1) — các bit di chuyển sang phải, một 0 đi vào bên trái; đối với số không dấu thì đây là số nguyên ÷ 2.
Dịch chuyển $n$ vị trí nhân hoặc chia cho $2^{n}$. Ví dụ: 00001011 (11) LSL #1 → 00010110 (22).
Các bit bị đẩy ra khỏi cuối sẽ bị mất, nên phép nhân chỉ chính xác trong khi chúng vẫn là số không. LSL #2 trên số nguyên hai bù 11001010 cho kết quả 00101000: hai 1s bị rơi bên trái đã mất, bit dấu đã thay đổi, và kết quả không còn gấp bốn lần giá trị ban đầu nữa.
Dịch chuyển phải số học giữ nguyên bit dấu để số có dấu âm vẫn giữ âm. Dịch chuyển tuần hoàn (xoay) đưa bit bị rơi ra khỏi một đầu quay trở lại ở đầu kia, vì vậy không có bit nào bị mất.
"Hiển thị kết quả của dịch chuyển phải số học 3 vị trí trên 10011110": sao chép bit dấu vào mỗi vị trí trống, 11110011. Cùng một phép dịch chuyển trên 01011100 cho 00001011. Dịch chuyển trái tuần hoàn 1 trên 10000110 cho 00001101: số 1 đứng đầu xuất hiện lại ở phía bên phải.
Trái logic ($\times 2$), phải logic ($\div 2$) và phải số học (giữ bit dấu)
Sự khác biệt giữa hai phép dịch chuyển phải là một bit duy nhất. Lấy 11110000, là 240 đọc dưới dạng không dấu và $-16$ đọc dưới dạng có dấu. LSR #1 đưa vào một 0 và cho 01111000$= 120$, đó là nửa đúng của 240. ASR #1 sao chép bit dấu thay vào đó và cho 11111000$= -8$, đó là nửa đúng của $-16$. Không cái nào sai — mỗi cái đều chia đôi giá trị theo một cách đọc.
Dịch chuyển phải logic và dịch chuyển phải số học trên cùng một byte: chỉ có bit đi vào bên trái khác nhau
Thao tác bit để giám sát/điều khiển
Các thiết bị nhúng thường sử dụng một bit của thanh ghi cho mỗi tín hiệu (ví dụ: bit $n$ = LED $n$). Sử dụng mặt nạ — che mask bit — bạn có thể:
bật bit $n$: R = R OR mặt nạ với bit $n$ được bật.
tắt bit $n$: R = R AND mặt nạ với bit $n$ tắt và phần còn lại bật.
lộn ngược bit $n$: R = R XOR mặt nạ với bit $n$ được bật.
kiểm tra bit $n$: R AND mặt nạ, sau đó kiểm tra xem kết quả có khác không.
Bật bit bằng OR, tắt nó bằng AND, lộn ngược nó bằng XOR — mỗi phép toán đều sử dụng một mặt nạ
Thao tác bit nhanh, tốn ít bộ nhớ, và cho phép một byte chứa tối đa 8 trạng thái bật/tắt.
Trong tập lệnh của bài thi, đây là AND, OR và XOR với mặt nạ được viết dưới dạng số thập phân, nhị phân hoặc thập lục phân. Với ACC đang giữ 10101100:
Lệnh
Mặt nạ
Kết quả trong ACC
Tác động
AND B00001111
00001111
00001100
giữ chỉ bốn bit thấp nhất (tắt các bit khác)
OR #1
00000001
10101101
bật bit quan trọng nhất, để nguyên phần còn lại
XOR &FF
11111111
01010011
đảo ngược mọi bit
AND B00001000 sau đó CMP #0
00001000
00001000
kiểm tra bit 3: phép so sánh không bằng nhau, nên bit 3 đã được bật
LSL #2
10110000
dịch chuyển sang trái hai vị trí, mất hai bit đầu
LSR #3
00010101
dịch chuyển sang phải ba vị trí, zeros điền vào bên trái
"Viết lệnh để bật bit quan trọng nhất thành 1 và để nguyên các bit khác": OR #1, hoặc OR B00000001. Để tắt một bit, hãy dùng AND với mặt nạ có 0 ở vị trí đó và 1 ở các vị trí khác; để kiểm tra một bit, hãy AND với mặt nạ chỉ có 1 ở vị trí đó, sau đó so sánh kết quả với 0. Trong thiết bị giám sát, một bit của thanh ghi cho mỗi cảm biến cho phép một đơn vị AND kiểm tra xem cảm biến cụ thể nào đang bật, và một OR bật bit điều khiển cơ cấu chấp hành mà không làm xáo trộn các bit khác.
Explore · Khám phá
Shift and mask the bits of a byte · D产业发展 và che masking các bit của một byte
Pick an operator and watch each result bit. A left shift (<<) moves every bit up one place (×2); a right shift (>>) moves them down (÷2); AND with a mask clears the bits you don't want. · Chọn một toán tử và xem từng bit kết quả. D产业发展 (<<) moves every bit up one place (×2); a right shift (>>) di chuyển chúng xuống (÷2); AND với mask xóa các bit bạn không muốn.
Definitions the examiner accepts · Các định nghĩa mà giám khảo chấp nhận
English
A definition question is marked against fixed wording. Learn these exactly, and give one answer only.
Term
Definition
stored program concept
the program instructions and the data are both held in main memory, and instructions are fetched and executed one at a time
register
a small, very fast storage location inside the processor with a specific purpose
Program Counter
the register holding the address of the next instruction to be fetched
Memory Address Register
the register holding the address of the memory location being read from or written to
Memory Data Register
the register holding the data or instruction just read from, or about to be written to, memory
Current Instruction Register
the register holding the instruction currently being decoded and executed
Accumulator
the general-purpose register holding the result of the last arithmetic or logic operation
cache memory
small, fast memory close to the processor holding frequently used instructions and data
interrupt
a signal from a device or program that causes the processor to pause the current task and run an interrupt service routine
assembly language
a low-level language in which each mnemonic instruction corresponds to one machine-code instruction
immediate addressing
the operand is the value written in the instruction
direct addressing
the operand is the contents of the address written in the instruction
indirect addressing
the address in the instruction holds the address of the operand
indexed addressing
the operand's address is the address in the instruction plus the contents of the index register
relative addressing
the operand's address is given as an offset from the address of the current instruction
logical shift
every bit moves the given number of places and zeros fill the vacated places
Tiếng Việt
Câu hỏi định nghĩa được chấm dựa trên văn phong cố định. Hãy học thuộc những định nghĩa này và chỉ đưa ra một đáp án duy nhất.
Thuật ngữ
Định nghĩa
khái niệm chương trình lưu trữ
các lệnh chương trình và dữ liệu đều được lưu trong bộ nhớ chính, và các lệnh được lấy và thực thi từng cái một
thanh ghi
một vị trí lưu trữ nhỏ, rất nhanh bên trong bộ xử lý với mục đích cụ thể
Bộ đếm Chương trình
thanh ghi chứa địa chỉ của lệnh tiếp theo cần được lấy
Bộ ghi Địa chỉ Bộ nhớ
thanh ghi chứa địa chỉ của vị trí bộ nhớ đang đọc từ hoặc ghi vào
Bộ ghi Dữ liệu Bộ nhớ
thanh ghi chứa dữ liệu hoặc lệnh vừa được đọc từ, hoặc sắp được ghi vào, bộ nhớ
Bộ ghi Lệnh Hiện tại
thanh ghi chứa lệnh đang được giải mã và thực thi
Bộ tích lũy
thanh ghi đa năng chứa kết quả của phép toán số học hoặc logic cuối cùng
bộ nhớ đệm
bộ nhớ nhỏ, nhanh gần bộ xử lý chứa các lệnh và dữ liệu thường xuyên được sử dụng
ngắt
tín hiệu từ thiết bị hoặc chương trình khiến bộ xử lý tạm dừng tác vụ hiện tại và chạy thủ tục xử lý ngắt
ngôn ngữ assembly
ngôn ngữ cấp thấp mà mỗi lệnh ký hiệu tương ứng với một lệnh mã máy
địa chỉ ngay lập tức
toán tử là giá trị được viết trong lệnh
địa chỉ trực tiếp
toán tử là nội dung của địa chỉ được viết trong lệnh
địa chỉ gián tiếp
địa chỉ trong lệnh chứa địa chỉ của toán tử
địa chỉ chỉ mục
địa chỉ của toán tử là địa chỉ trong lệnh cộng với nội dung của thanh ghi chỉ mục
địa chỉ tương đối
địa chỉ của toán tử được đưa ra như một độ lệch từ địa chỉ của lệnh hiện tại
dịch chuyển logic
mọi bit di chuyển số vị trí cho trước và zeros điền vào các vị trí trống
4.3
Exam tips · Mẹo làm bài thi
English
Learn the fetch-execute cycle in register-transfer terms (PC, MAR, MDR, CIR, ACC) and what increments the PC.
Name each register's job; the address bus is one-way, the data bus is two-way.
Distinguish the addressing modes (immediate, direct, indirect, indexed) — a frequent question.
Explain how clock speed, number of cores, cache size and word length affect performance.
For a binary shift, state whether it is logical or arithmetic; a left shift multiplies by 2, a right shift divides by 2.
Common mistakes
Saying the PC holds the current instruction, or the MDR holds an address. The PC holds the address of the next instruction; the MDR holds data or an instruction, never an address.
Leaving the increment of the PC out of the fetch, or putting it after the execute. It happens as soon as the address has been copied to the MAR.
Reading LDD 10 as "load 10". LDD 10 loads the contents of address 10; LDM #10 loads the number 10.
Putting a value in the ACC column for CMP or OUT. A compare sets a flag only; an output goes to the output column.
Saying an interrupt is handled "immediately". The processor finishes the current instruction and checks for interrupts at the end of the cycle.
Using a logical right shift on a negative two's-complement number. Only an arithmetic shift keeps the sign bit.
Tiếng Việt
Học chu kỳ lấy-thực thi theo thuật toán truyền thanh ghi (PC, MAR, MDR, CIR, ACC) và thứ gì tăng PC.
Tên công việc của mỗi thanh ghi; bus địa chỉ chỉ một chiều, bus dữ liệu hai chiều.
Phân biệt các chế độ địa chỉ (ngay lập tức, trực tiếp, gián tiếp, chỉ mục) — câu hỏi thường gặp.
Giải thích cách tốc độ xung nhịp, số nhân, kích thước bộ nhớ đệm và độ dài từ ảnh hưởng đến hiệu suất.
Đối với dịch chuyển nhị phân, xác định nó là logic hay số học; dịch chuyển sang trái nhân với 2, dịch chuyển sang phải chia cho 2.
Lỗi thường gặp
Nói rằng PC chứa lệnh hiện tại, hoặc MDR chứa địa chỉ. PC chứa địa chỉ của lệnh tiếp theo; MDR chứa dữ liệu hoặc lệnh, không bao giờ chứa địa chỉ.
Bỏ qua sự gia tăng của PC trong bước lấy, hoặc đặt nó sau bước thực thi. Nó xảy ra ngay khi địa chỉ đã được sao chép sang MAR.
Đọc LDD 10 là "tải 10". LDD 10 tải nội dung của địa chỉ 10; LDM #10 tải số 10.
Đặt một giá trị vào cột ACC cho CMP hoặc OUT. Phép so sánh chỉ đặt cờ; đầu ra sẽ đi đến cột đầu ra.
Nói rằng một ngắt được xử lý "ngay lập tức". Bộ xử lý hoàn thành lệnh hiện tại và kiểm tra ngắt vào cuối chu kỳ.
Sử dụng dịch chuyển logic sang phải trên số bù hai âm. Chỉ có dịch chuyển số học mới giữ nguyên bit dấu.
Interactive lessons on this topic · Bài học tương tác về chủ đề này
Work through it step by step, with instant-check exercises. · Làm theo từng bước, kèm theo bài tập kiểm tra ngay lập tức.
More topics in A-Level Computer Science · Khoa học máy tính A-Level · Nhiều chủ đề hơn trong A-Level Computer Science · Khoa học máy tính A-Level
Pick one and the site follows you — notes, papers, videos and practice all open on it. · Chọn một môn và trang sẽ điều hướng theo — ghi chú, tài liệu, video và bài tập đều mở ở đó.
Type to search notes, lessons, code, vocabulary and past-paper questions across every subject. · Nhập để tìm ghi chú, bài học, mã, từ vựng và câu hỏi đề thi cũ trên mọi môn học.