Hợp ngữ là một ngôn ngữ cấp thấp và là một bước nâng cấp nhỏ cho 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. Thực tế, ta sẽ thấy là mỗi kiến trúc tập lệnh ISA chỉ có duy nhất một hợp ngữ. Bộ môn hệ thống máy tính và ngôn ngữ lập trình HCMUT
lOMoARcPSD|16681791 Mot-so-vi-du-lap-trinh-hop-ngu-lc3 compress Kỹ thuật hệ thống (Trường Đại học Cơng nghệ Thành phố Hồ Chí Minh) StuDocu is not sponsored or endorsed by any college or university Downloaded by D?ng Tr??ng Ti?n (dung.truong0862733917@hcmut.edu.vn) lOMoARcPSD|16681791 MỘT SỐ VÍ DĀ L¾P TRèNH HỵP NGỵ LC-3 Trn Quc Tin Dng B mụn Điều khiển tự động, Khoa Điện – Điện tử Trường Đại học Bách Khoa, ĐHQG TP.HCM Nhắc lại t¿p lệnh LC-3 Tập lệnh LC-3 (LC-3 ISA) bao gồm 15 lệnh Mỗi lệnh có chiều dài 16 bit bao gồm bit đầu mã lệnh (opcode) 12 bit sau toán hạng (operands) Tùy thuộc vào lệnh mà có nhiều tốn hạng Có cách định vị địa LC-3: - Tức thời (immediate) Thanh ghi (register) PC-relative Gián tiếp (indirect) Base + offset Có nhóm lệnh LC-3, nhóm lệnh thực thi (NOT, ADD, AND), nhóm lệnh di chuyển liệu (LD, ST, LDI, STI, LDR, STR, LEA) nhóm lệnh điều khiển (BR, JMP/RET, JSR/JSRR, RTI, TRAP) a Nhóm lệnh thực thi: Chỉ bao gồm lệnh NOT, ADD, AND Ví dụ 1: Trừ hai ghi R0 R1, lưu kết vào ghi R0 Ví dụ 3: Chuyển liệu từ ghi R0 sang ghi R4 NOT R1,R1 Cách 1: ADD R4,R0,#0 ADD R1,R1,#1 Cách 2: AND R4,R0,#-1 ADD R0,R0,R1 Ví dụ 2: Thực phép OR hai ghi R0 R1, lưu kết vào ghi R0 Ví dụ 4: Khởi tạo ghi R2 với giá trị ban đầu 10 NOT R0,R0 AND R2,R2,0 NOT R1,R1 ADD R2,R2,#10 AND R0,R0,R1 NOT R0,R0 Downloaded by D?ng Tr??ng Ti?n (dung.truong0862733917@hcmut.edu.vn) lOMoARcPSD|16681791 b Nhóm lệnh di chuyển liệu: Có loại di chuyển liệu: lấy liệu từ nhớ nạp vào ghi (LOAD) lấy liệu từ ghi lưu vào nhớ (STORE) Như lệnh di chuyển liệu theo cặp Tùy thuộc vào cách định vị địa có lệnh riêng Mã lệnh: Cấu trúc lệnh: Kiểu định vị địa PCrelative Indirect Base + offset Lưu ý: - Lệnh LOAD tương ứng Lệnh STORE tương ứng LD Rx,PCoffset9 Rx ← M[PC + PCoffset9] ST Rx, PCoffset9 M[PC + PCoffset9] ← Rx LDI Rx, PCoffset9 Rx ← M[M[PC + PCoffset9]] LDR Rx,Ry,offset6 Rx ← M[Ry + offset6] STI Rx, PCoffset9 M[M[PC + PCoffset9]] ← Rx STR Rx,Ry, offset6 M[Ry + offset6] ← Rx Ghi Tầm tham chiếu tối đa 512 byte xung quanh giá trị PC Tầm tham chiếu toàn bộ nhớ 64K Các phép cộng LC-3 số bù 2, trước cộng phải mở rộng dấu Đặc biệt lưu ý trường hợp giá trị PCoffset9 offset6 số âm Sau pha lấy lệnh, giá trị PC tăng thêm Lệnh LEA khơng có tác dụng di chuyển liệu, nhiên giúp sinh giá trị địa để tham chiếu đến Các bạn tham khảo ví dụ giáo trình Downloaded by D?ng Tr??ng Ti?n (dung.truong0862733917@hcmut.edu.vn) lOMoARcPSD|16681791 c Nhóm lệnh điều khiển: Trong chương trình mơn học, bạn cần ý đến lệnh điều khiển lệnh rẽ nhánh (BR) lệnh TRAP Các lệnh cịn lại bạn xem thêm giáo trình LC-3 cung cấp mã điều kiện (condition code) N, Z, P Sau lệnh có lưu liệu vào ghi DR, mã điều kiện thay đổi phụ thuộc vào kết ghi DR vừa lưu Nếu kết số dương cờ P bật (P – positive), cờ lại tắt Tương tự cho trường hợp cờ Z (zero) cờ N (negative) Ví dụ 5: Sau lệnh AND R1,R1,#0 liệu ghi vào ghi DR 0, cờ Z bật lên Ví dụ 6: Giả sử ghi R1 chứa liệu #8, sau lệnh ADD R1,R1,#-10 liệu ghi DR #-2 số âm, cờ N bật lên Ví dụ 7: Sau lệnh SR R2,#-10 cờ điều kiện không thay đổi Lý lệnh ST khơng lưu liệu vào ghi Trong LC-3, lệnh có thủ tục lưu liệu vào ghi NOT, AND, ADD, LD, LDR, LDI, LEA, lệnh cịn lại chắn khơng làm thay đổi mã điều kiện Dựa vào mã điều kiện này, thiết lập rẽ nhánh tùy vào yêu cầu đề Lệnh để rẽ nhánh lệnh BR (opcode 0000) Ba bit để xác định điều kiện (n, z, p), bit lại xác định độ dời PCoffset Nếu bit 11 (bit ứng với mã lệnh n) 1, PC nhảy cờ N bật lên Tương tự bit 10 bit Có thể có nhiều bit bit n, z, p 1, điều kiện