TUYỂN TẬP NHỮNG BÀI TẬP LC3 - ĐHBK TP.HCM

45 12 0
TUYỂN TẬP NHỮNG BÀI TẬP LC3 - ĐHBK TP.HCM

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1. Viết chương trình bằng hợp ngữ LC3, in ra màn hình “Hello, World”. Chương trình: .ORIG X3000 LEA R0,CHUOI1 PUTS HALT CHUOI1 .STRINGZ “Hello, World” .END 2. Viết chương trình bằng hợp ngữ LC3, in ra màn hình “Hello, nice to meet you How are you”. Chương trình: .ORIG X3000 LEA R0,CHUOI1 PUTS LEA R0,CHUOI2 PUTS HALT CHUOI1 .STRINGZ Hello, nice to meet you\n CHUOI2 .STRINGZ How are you? .END 3. Viết chương trình bằng hợp ngữ LC3, thực hiện nhập 2 số a và b (a, b là các số có một chữ số). Tính . Chương trình: .ORIG X3000 IN ADD R1,R0,0 ADD R1,R1,16 ADD R1,R1,16 ADD R1,R1,16 IN ADD R2,R0,0 ADD R2,R2,16 ADD R2,R2,16 ADD R2,R2,16 NOT R2,R2 ADD R2,R2,1 ADD R3,R1,R2 BRN N ADD R0,R3,0 ADD R0,R0,15 ADD R0,R0,15 ADD R0,R0,15 ADD R0,R0,3 OUT HALT N AND R4,R4,0 ADD R0,R4,0 ADD R0,R0,15 ADD R0,R0,15 ADD R0,R0,15 OUT NOT R0,R3 ADD R0,R0,1 ADD R0,R0,15 ADD R0,R0,15 ADD R0,R0,15 ADD R0,R0,3 OUT HALT .END

TUYỂN TẬP NHỮNG BÀI TẬP LC3 (Trường Đại học Bách khoa - Đại học Quốc gia TP.HCM) Biên soạn: Nguyễn Duy Nhất Viết chương trình hợp ngữ LC3, in hình “Hello, World” Chương trình: ORIG X3000 LEA R0,CHUOI1 PUTS HALT CHUOI1 STRINGZ “Hello, World” END Viết chương trình hợp ngữ LC3, in hình “Hello, nice to meet you! How are you!” Chương trình: ORIG X3000 LEA R0,CHUOI1 PUTS LEA R0,CHUOI2 PUTS HALT CHUOI1 STRINGZ "Hello, nice to meet you!\n" CHUOI2 STRINGZ "How are you?" END Viết chương trình hợp ngữ LC3, thực nhập số a b (a, b số có chữ số) Tính a  b Chương trình: ORIG X3000 IN ADD R1,R0,#0 Biên soạn: Nguyễn Duy Nhất ADD R1,R1,#-16 ADD R1,R1,#-16 ADD R1,R1,#-16 IN ADD R2,R0,#0 ADD R2,R2,#-16 ADD R2,R2,#-16 ADD R2,R2,#-16 NOT R2,R2 ADD R2,R2,#1 ADD R3,R1,R2 BRN N ADD R0,R3,#0 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#3 OUT HALT N AND R4,R4,#0 ADD R0,R4,#0 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#15 OUT NOT R0,R3 Biên soạn: Nguyễn Duy Nhất ADD R0,R0,#1 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#3 OUT HALT END Viết chương trình hợp ngữ LC3, thực nhập số a b (a, b số có chữ số) Tính a  b Chương trình: Cách 1: ORIG X3000 IN ADD R1,R0,#0 ADD R1,R1,#-16 ADD R1,R1,#-16 ADD R1,R1,#-16 IN ADD R2,R0,#0 ADD R2,R2,#-16 ADD R2,R2,#-16 ADD R2,R2,#-16 ADD R3,R1,R2 ADD R4,R3,#-10 BRZP P Biên soạn: Nguyễn Duy Nhất ADD R0,R3,#0 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#3 OUT HALT P AND R5,R5,#0 ADD R0,R5,#0 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#4 OUT ADD R0,R4,#0 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#3 OUT HALT END Cách 2: ORIG X3000 LD R1,ASCII_0M LD R2,ASCII_0 Biên soạn: Nguyễn Duy Nhất LEA R0,CHUOI1 PUTS GETC OUT ADD R3,R0,R1 AND R0,R0,#0 ADD R0,R0,X0A OUT LEA R0,CHUOI2 PUTS GETC OUT ADD R4,R0,R1 AND R0,R0,#0 ADD R0,R0,X0A OUT NOT R4,R4 ADD R4,R4,#1 ADD R3,R3,R4 BRN XUAT LEA R0,HIEU PUTS ADD R0,R3,#0 ADD R0,R0,R2 OUT HALT XUAT LEA R0,HIEU Biên soạn: Nguyễn Duy Nhất PUTS LD R5,ASCII_MINUS ADD R0,R5,#0 OUT NOT R3,R3 ADD R3,R3,#1 ADD R0,R3,#0 ADD R0,R0,R2 OUT HALT ASCII_0 FILL #48 ASCII_0M FILL #-48 ASCII_MINUS FILL #45 CHUOI1 STRINGZ "NHAP A: " CHUOI2 STRINGZ "NHAP B: " HIEU STRINGZ "HIEU : " END Viết chương trình hợp ngữ LC3, thực nhập số a b (a, b số có chữ số) Tính a * b Chương trình: Cách 1: ORIG X3000 IN LD R1,ASCII_0M ADD R2,R0,R1 IN ADD R3,R0,R1 Biên soạn: Nguyễn Duy Nhất AND R4,R4,#0 LAP ADD R2,R2,#-1 BRN TACH_SO ADD R4,R4,R3 BR LAP TACH_SO AND R2,R2,#0 LAP2 ADD R4,R4,#-10 BRN TIEP ADD R2,R2,#1 BR TIEP LAP2 ADD R3,R4,#10 LD R1,ASCII_0 ADD R2,R2,#0 BRZ XUAT_DON_VI ADD R0,R2,R1 OUT XUAT_DON_VI ADD R0,R3,R1 OUT HALT ASCII_0 FILL #48 ASCII_0M FILL #-48 END Cách 2: ORIG X3010 AND R6,R6,#0 AND R3,R3,#0 LD R5,ASCII_0M Biên soạn: Nguyễn Duy Nhất LEA R0,CHUOI1 PUTS GETC OUT ADD R1,R0,R5 LEA R0,CHUOI2 PUTS GETC OUT ADD R2,R0,R5 LAP ADD R3,R3,R1 ADD R2,R2,#-1 BRP LAP ADD R4,R3,#0 LAP2 ADD R4,R4,#-10 ADD R6,R6,#1 ADD R4,R4,#0 BRZP LAP2 LEA R0,TICH PUTS NOT R5,R5 ADD R5,R5,#1 ADD R6,R6,#-1 ADD R0,R6,R5 OUT ADD R4,R4,#10 Biên soạn: Nguyễn Duy Nhất ADD R0,R4,R5 OUT HALT CHUOI1 STRINGZ "MOI NHAP SO 1: " CHUOI2 STRINGZ "\nMOI NHAP SO 2: " TICH STRINGZ "\nTICH LA: " ASCII_0M FILL #-48 END Cách 3: ORIG X3000 IN ADD R1,R0,#0 ADD R1,R1,#-16 ADD R1,R1,#-16 ADD R1,R1,#-16 IN ADD R2,R0,#0 ADD R2,R2,#-16 ADD R2,R2,#-16 ADD R2,R2,#-16 AND R3,R3,#0 LAP ADD R1,R1,#-1 BRN TACH_SO ADD R3,R3,R2 BR LAP TACH_SO AND R1,R1,#0 LAP2 ADD R3,R3,#-10 Biên soạn: Nguyễn Duy Nhất ADD R5,R1,R4 STI R5,LUU_HIEU BRN XUAT2 LEA R0,HIEU PUTS ADD R0,R5,R6 OUT XUAT2 LEA R0,HIEU PUTS AND R0,R0,#0 ADD R0,R0,R6 ADD R0,R0,#-3 OUT NOT R5,R5 ADD R5,R5,#1 ADD R0,R5,R6 OUT CHUOI1 STRINGZ "Moi nhap so 1: " CHUOI2 STRINGZ "\nMoi nhap so 2: " TONG STRINGZ "\nTong hai so: " HIEU STRINGZ "\nHieu hai so: " LUU_TONG FILL X4000 LUU_HIEU FILL X4001 ASCII_0M FILL #-48 END Biên soạn: Nguyễn Duy Nhất 18 Viết chương trình hợp ngữ LC3 cho phép người dùng nhập vào ký tự từ bàn phím, đếm số bit mã ASCII ký tự vừa nhập xuất kết hình Chương trình: ORIG X3000 LD R4,SO_8000 LD R6,SO_FFFF AND R5,R5,#0 LEA R0,CHUOI1 PUTS GETC OUT ADD R1,R0,#0 DEM AND R3,R1,R4 BRZ STEP ADD R5,R5,#1 STEP ADD R1,R1,R1 AND R3,R1,R6 BRZ KT BR DEM KT LEA R0,CHUOI2 PUTS LD R3,ASCII_0 ADD R0,R5,R3 OUT Biên soạn: Nguyễn Duy Nhất HALT ASCII_0 FILL #48 SO_8000 FILL X8000 SO_FFFF FILL XFFFF CHUOI1 STRINGZ "MOI NHAP KY TU: " CHUOI2 STRINGZ "\nSO BIT LA:" END 19 Viết chương trình hợp ngữ LC3, thực nhập vào số x, y, z (0  x, y, z  9) Tính x *( y  z) Chương trình: ORIG X3000 LD R6,ASCII_0M LEA R0,CHUOI1 PUTS GETC OUT ADD R1,R0,R6 LEA R0,CHUOI2 PUTS GETC OUT ADD R2,R0,R6 LEA R0,CHUOI3 PUTS GETC Biên soạn: Nguyễn Duy Nhất OUT ADD R3,R0,R6 NOT R3,R3 ADD R3,R3,#1 ADD R2,R2,R3 AND R4,R4,#0 LAP ADD R4,R4,R2 ADD R1,R1,#-1 BRP LAP ADD R4,R4,#0 BRZP TT1 BRN TT2 TT1 AND R5,R5,#0 LAP2 ADD R4,R4,#-10 ADD R5,R5,#1 ADD R4,R4,#0 BRZP LAP2 LEA R0,CHUOI4 PUTS NOT R6,R6 ADD R6,R6,#1 ADD R5,R5,#-1 ADD R0,R5,R6 OUT ADD R4,R4,#10 ADD R0,R4,R6 Biên soạn: Nguyễn Duy Nhất OUT HALT TT2 NOT R4,R4 ADD R4,R4,#1 AND R5,R5,#0 LAP3 ADD R4,R4,#-10 ADD R5,R5,#1 ADD R4,R4,#0 BRZP LAP3 LEA R0,CHUOI4 PUTS NOT R6,R6 ADD R6,R6,#1 ADD R0,R6,#0 ADD R0,R0,#-3 OUT ADD R5,R5,#-1 ADD R0,R5,R6 OUT ADD R4,R4,#10 ADD R0,R4,R6 OUT HALT CHUOI1 STRINGZ "Moi nhap so x: " CHUOI2 STRINGZ "\nMoi nhap so y: " Biên soạn: Nguyễn Duy Nhất CHUOI3 STRINGZ "\nMoi nhap so z: " CHUOI4 STRINGZ "\nKet qua: " ASCII_0M FILL #-48 END 20 Viết chương trình LC3 cho phép nhập vào số (  so  ) Tính: S = (số thứ – số thứ 4)*Max(số thứ 1; số thứ 3; số thứ 4) Lưu Max vào R6, lưu S vào R5; sau xuất Max S hình với dạng: Max = S= Chương trình: ORIG X3000 LEA R0,CHUOI1 PUTS GETC OUT ADD R1,R0,#0 ADD R1,R1,#-16 ADD R1,R1,#-16 ADD R1,R1,#-16 LEA R0,CHUOI2 PUTS GETC OUT ADD R2,R0,#0 ADD R2,R2,#-16 ADD R2,R2,#-16 ADD R2,R2,#-16 Biên soạn: Nguyễn Duy Nhất LEA R0,CHUOI3 PUTS GETC OUT ADD R3,R0,#0 ADD R3,R3,#-16 ADD R3,R3,#-16 ADD R3,R3,#-16 LEA R0,CHUOI4 PUTS GETC OUT ADD R4,R0,#0 ADD R4,R4,#-16 ADD R4,R4,#-16 ADD R4,R4,#-16 NOT R5,R4 ADD R5,R5,#1 ADD R2,R2,R5 ADD R6,R1,#0 NOT R5,R3 ADD R5,R5,#1 ADD R0,R6,R5 BRZP TT1 Biên soạn: Nguyễn Duy Nhất ADD R6,R3,#0 TT1 NOT R5,R4 ADD R5,R5,#1 ADD R0,R6,R5 BRZP TT2 ADD R6,R4,#0 TT2 ADD R6,R6,#0 ADD R1,R6,#0 LEA R0,XUAT_MAX PUTS ADD R0,R1,#0 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#3 OUT AND R5,R5,#0 LAP ADD R5,R5,R2 ADD R1,R1,#-1 BRP LAP ADD R5,R5,#0 BRZP TH1 BRN TH2 Biên soạn: Nguyễn Duy Nhất TH1 AND R3,R3,#0 ADD R4,R5,#0 LAP2 ADD R4,R4,#-10 ADD R3,R3,#1 ADD R4,R4,#0 BRZP LAP2 ADD R3,R3,#-1 ADD R4,R4,#10 LEA R0,XUAT_S PUTS ADD R0,R3,#0 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#3 OUT ADD R0,R4,#0 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#3 OUT HALT TH2 NOT R5,R5 Biên soạn: Nguyễn Duy Nhất ADD R5,R5,#1 ADD R4,R5,#0 AND R3,R3,#0 LAP3 ADD R4,R4,#-10 ADD R3,R3,#1 ADD R4,R4,#0 BRZP LAP3 ADD R3,R3,#-1 ADD R4,R4,#10 LEA R0,XUAT_S PUTS AND R0,R0,#0 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#15 OUT ADD R0,R3,#0 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#3 OUT ADD R0,R4,#0 ADD R0,R0,#15 Biên soạn: Nguyễn Duy Nhất ADD R0,R0,#15 ADD R0,R0,#15 ADD R0,R0,#3 OUT HALT CHUOI1 STRINGZ "MOI NHAP SO 1: " CHUOI2 STRINGZ "\nMOI NHAP SO 2: " CHUOI3 STRINGZ "\nMOI NHAP SO 3: " CHUOI4 STRINGZ "\nMOI NHAP SO 4: " XUAT_MAX STRINGZ "\nMAX = " XUAT_S STRINGZ "\nS = " END 21 Trong số x3000 chứa số nguyên X số nguyên từ x3001 đến x3020 Viết chương trình LC3 thực đếm số nhớ từ x3001 đến x3020 thỏa mãn số số lẻ lớn X Chương trình: ORIG X3100 LDI R6,SO_X LD R1,BD AND R5,R5,#0 AND R2,R2,#0 ADD R2,R2,#15 ADD R2,R2,#15 ADD R2,R2,#2 LAP BRZ XUAT Biên soạn: Nguyễn Duy Nhất LDR R4,R1,#0 AND R3,R4,#1 BRNP TT1 ADD R1,R1,#1 ADD R2,R2,#-1 BR LAP TT1 NOT R3,R6 ADD R3,R3,#1 ADD R3,R4,R3 BRP TT2 ADD R1,R1,#1 ADD R2,R2,#-1 BR LAP TT2 ADD R5,R5,#1 ADD R1,R1,#1 ADD R2,R2,#-1 BR LAP XUAT AND R3,R3,#0 ADD R5,R5,#0 LAP2 ADD R5,R5,#-10 ADD R3,R3,#1 ADD R5,R5,#0 BRZP LAP2 Biên soạn: Nguyễn Duy Nhất ADD R3,R3,#-1 ADD R5,R5,#10 LEA R0,KQ PUTS LD R6,ASCII_0 ADD R0,R3,R6 OUT ADD R0,R5,R6 OUT HALT SO_X FILL X3000 BD FILL X3001 KQ STRINGZ "SO SO LE LON HON X: " ASCII_0 FILL #48 END 22 Trong số từ x3000 chứa số nguyên X số nguyên từ x3001 đến x3020 Viết chương trình LC3 thực đếm số nhớ từ x3001 đến x3020 thỏa mãn số số chẵn bé X Chương trình: ORIG X3100 LDI R6,SO_X LD R1,BD AND R5,R5,#0 AND R2,R2,#0 Biên soạn: Nguyễn Duy Nhất ADD R2,R2,#15 ADD R2,R2,#15 ADD R2,R2,#2 LAP BRZ XUAT LDR R4,R1,#0 AND R3,R4,#1 BRZ TT1 ADD R1,R1,#1 ADD R2,R2,#-1 BR LAP TT1 NOT R3,R6 ADD R3,R3,#1 ADD R3,R4,R3 BRN TT2 ADD R1,R1,#1 ADD R2,R2,#-1 BR LAP TT2 ADD R5,R5,#1 ADD R1,R1,#1 ADD R2,R2,#-1 BR LAP XUAT AND R3,R3,#0 Biên soạn: Nguyễn Duy Nhất ADD R5,R5,#0 LAP2 ADD R5,R5,#-10 ADD R3,R3,#1 ADD R5,R5,#0 BRZP LAP2 ADD R3,R3,#-1 ADD R5,R5,#10 LEA R0,KQ PUTS LD R6,ASCII_0 ADD R0,R3,R6 OUT ADD R0,R5,R6 OUT HALT SO_X FILL X3000 BD FILL X3001 KQ STRINGZ "SO SO CHAN BE HON X: " ASCII_0 FILL #48 END

Ngày đăng: 31/12/2023, 14:31

Tài liệu cùng người dùng

Tài liệu liên quan