You are on page 1of 2

Cho đoạn lệnh sau:

1# ADD R2, (R0);


2# SUBSTRACT R2, (R1);
3# MOVE 500(R0), R2;
4# LOAD R2, #5000;
5# STORE 100(R2), R0;

Biết R0=1500, R1=4500, R2=1000, M[1500]=3000, M[4500]=500


Hãy chỉ ra giá trị của thanh ghi và tại vị trí trong bộ nhớ qua mỗi lệnh thực
hiện.

giải:
1# R2 <- R2 + M[R0] // R2 = 1000 + 3000 = 4000
2# R2 <- R2 - M[R1] // R2 = 4000 - 500 = 3500
3# R2: M[500 + 1500] <- 3500 // M[2000] = 3500
4# R2 = 5000
5# M[100 + 5000] <- 1500 // M[5100] <- 1500

1# MOVE R0, #100;


2# CLEAR R1;
3# CLEAR R2;
4# LAP:
5# ADD R1, 2000(R2);
6# ADD R2, #2;
7# DECREMENT R0;
8# BRANCH_IF>0 LAP;
9# STORE 3000, R1;
a) Giải thích nghĩa từng lệnh
1# Chuyển dữ liệu
R0 <- 100
2# Xóa dữ liệu địa chỉ R1
R1 <- 0
3# Xóa dữ liệu địa chỉ R2
R2 <- 0
4# Gán nhãn LAP: để lặp
5# Thực hiện phép cộng
R1 <- R1 + M[2000 + R2] = M[2000]
6# Thực hiện phép cộng
R2 <- R2 + 2;
7# Giảm 1
R0 <- R0 - 1
8# Nếu đúng điều kiện thì quay trở lại nhãn LAP: (trong vòng lặp)
(Có thể là R0 > 0 thì vòng lặp được tiếp tục)
9# Lưu dữ liệu
Lưu R1 vào ô 3000

Đoạn mã trên dùng để tính tổng các số Chẵn trong ô ? (Giá trị) 2000 -> 3000 ( móe
hỉu lắm)

Bài 3:
1# CLEAR SUM;
2# CLEAR R0;
3# CLEAR i;
4# ADD R0, #1000;
5# LAP:
6# ADD SUM, (R0);
7# INCREASE R0;
8# INCREASE i
9# IF i < 10 (hem biết) goto LAP;
10# STORE 2000, SUM;

You might also like