You are on page 1of 16

Company

LOGO
1
Các nội dung:

 Lập trình hợp ngữ


 Các thành phần của một chương trình hợp ngữ
 Quá trình hợp dịch (đọc sách)
 Chương trình với nhiều modul (đọc sách)

© TS. Nguyễn Phúc Khải 2


Lập trình hợp ngữ
 Hợp ngữ là ngôn ngữ cấp thấp và là một bước nâng
cấp nhỏ cho tập lệnh (ISA) của một máy tính.
 Mỗi lệnh hợp ngữ thường xác định một lệnh đơn
trong ISA. Không như ngôn ngữ cấp cao, ngôn ngữ
cấp thấp phụ thuộc rất nhiều vào ISA. Mỗi kiến trúc
tập lệnh ISA chỉ có duy nhất một hợp ngữ.

© TS. Nguyễn Phúc Khải 3


Lập trình hợp ngữ

© TS. Nguyễn Phúc Khải 4


Các thành phần của một chương
trình hợp ngữ
 Lệnh:
 Một lệnh hợp ngữ LC-3 bao gồm bốn phần theo cấu
trúc sau:
LABEL OPCODE OPERANDS; COMMENTS
 Hai phần LABEL và COMMENTS là tùy chọn.
Còn OPCODE và OPERANDS là bắt buộc.
 Một lệnh phải quy định một mã thao tác OPCODE
tức là lệnh cần phải làm, và giá trị thích hợp của toán
hạng OPERANDS.
 Dùng dấu # cho số thập phân, x cho thập lục phân, và
b cho nhị phân
© TS. Nguyễn Phúc Khải 5
Các thành phần của một chương
trình hợp ngữ
 Nhãn (Label):
 Nhãn là các tên tượng trưng được dùng để xác định
các ô nhớ được tham khảo tới trong chương trình.
 Trong hợp ngữ LC-3, nhãn có tối đa 20 ký tự hay ký
số, và bắt đầu bằng một ký tự.
 Ví dụ: LAPLAI, KETTHUC, LAP100
 Các mục đích sử dụng của Nhãn:
 Ô nhớ vị trí đó chứa đích của một lệnh rẽ nhánh
 Ô nhớ vị trí đó chứa một giá trị cần được nạp hay lưu

© TS. Nguyễn Phúc Khải 6


Các thành phần của một chương
trình hợp ngữ
 Ví dụ:
AGAIN ADD R3, R3, R2
BRp AGAIN

LD R2, NUMBER

© TS. Nguyễn Phúc Khải 7


Các thành phần của một chương
trình hợp ngữ
 Ghi chú (Comments):
 Ghi chú là các thông điệp chỉ cần thiết với con
người, nó không có bất kỳ ảnh hưởng nào
trong quá trình dịch và cũng không chịu tác
động nào từ bộ dịch hợp ngữ LC-3.
 Ghi chú được quy định bằng dấu chấm phẩy
đặt trước, phần sau dấu chấm phẩy (nếu có) là
một ghi chú và được bộ dịch bỏ qua.

© TS. Nguyễn Phúc Khải 8


Các thành phần của một chương
trình hợp ngữ
 Mã giả (Các hướng dẫn dịch):
 Bộ hợp dịch LC-3 là chương trình lấy đầu vào là
chuỗi ký tự biểu diễn một chương trình được viết
bằng hợp ngữ LC-3, và dịch nó ra thành chương trình
ở cấp kiến trúc tập lệnh (ISA) của LC-3.
 Mã giả (pseudo-ops) giúp cho bộ dịch thực hiện
nhiệm vụ này, còn được gọi là hướng dẫn dịch
(assembler directives).
 Bộ hợp dịch LC-3 gồm năm mã giả: .ORIG, .FILL,
.BLKW, .STRINGZ, và .END.

© TS. Nguyễn Phúc Khải 9


Các thành phần của một chương
trình hợp ngữ
 Mã giả (Các hướng dẫn dịch):
 .ORIG
 .ORIG cho bộ dịch biết nơi bắt đầu chương trình LC-
3 trong bộ nhớ.
 Cú pháp: .ORIG <Địa chỉ 16 bit>
 .FILL
 .FILL nói cho bộ hợp dịch biết việc cần dùng vị trí
trong chương trình và khởi động nó bằng giá trị của
toán hạng.
 Cú pháp thường dùng: <LABEL> .FILL <Giá trị>
© TS. Nguyễn Phúc Khải 10
Các thành phần của một chương
trình hợp ngữ
 Mã giả (Các hướng dẫn dịch):
 ..STRINGZ
 .STRINGZ yêu cầu bộ dịch khởi tạo (n +1) ô nhớ chứ
chuỗi ký n ký tự, bên trong cặp dấu nháy kép. Khi đó,
n từ nhớ đầu tiên được khởi động bằng các ký tự mã
ASCII Từ nhớ cuối cùng được khởi tạo là 0, tức
x0000
 Cú pháp: <LABEL> .STRINGZ “Chuỗi ký tự”

© TS. Nguyễn Phúc Khải 11


Các thành phần của một chương
trình hợp ngữ
 Mã giả (Các hướng dẫn dịch):
 .BLKW
 .BLKW yêu cầu bộ dịch để dành một số ô nhớ (tức
BLocK Words) trong chương trình.
 Cú pháp: <LABEL> .BLKW <Số ô nhớ>
 .END
 .END nói cho bộ dịch biết chương trình kết thúc ở
đâu. Bất kỳ ký tự nào đứng sau .END sẽ bị bộ hợp
dịch bỏ qua. .END là một quy định giới hạn, nó đánh
dấu sự kết thúc của chương trình nguồn.

© TS. Nguyễn Phúc Khải 12


Bài tập:

 Bài tập 4.12


 Bài tập 5.5
 Bài tập 6.3
 Bài tập 5.7
 Bài tập 5.9
 Thực hiện phép chia nguyên số trong thanh ghi
R1 cho R2. Kết quả lưu vào x1FFF, phần dư
lưu vào x1FFE.

© TS. Nguyễn Phúc Khải 13


Bài tập

 Viết chương trình xuất chuỗi “Hello, World!”


ra màn hình
 Nhập 1 ký số từ 1 – 7, kết quả xuất ra ngày thứ
tương ứng trong tuần, với quy ước số 1 là Chủ
nhật.
 Nhập 1 ký tự từ bàn phím:
 Nếu là chữ HOA thì chuyển thành chữ thường và
xuất ra màn hình.
 Nếu là chữ thường thì chuyển thành chữ HOA và
xuất ra màn hình.
© TS. Nguyễn Phúc Khải 14
Bài tập
 Cho biết số thực có biểu diễn dấu chấm động:
0 10000100 1110000000000000000000
 Biểu diễn số -67.3125 ra dạng dấu chấm động
 Làm bài tập 5.1 (BT tương tự: 6.6, 6.8, 6.12)
 Cho biết mã máy của các lệnh sau trong bài 5.1:
BRz DONE
ADD R1,R1,#-1
ST R2,RESULT
 Nhập 1 ký tự từ bàn phím, kiểm tra mã ASCII ký tự đó
có chia hết cho 4 không? Nếu có xuất ký tự đó ra màn
hình © TS. Nguyễn Phúc Khải 15
© TS. Nguyễn Phúc Khải 16

You might also like