Khoa Công Nghệ Thông Tin Bộ Môn Hệ Thống Nhúng ********************** ĐỀ TÀI LẬP TRÌNH HỆ THỐNG Đề 1: Viết một chương trình C thực hiện các công việc sau: a,Nhập ma trận int*a với (6<=n<=10 nhập n dùng ngắt). Tìm min=mini+minj, trrong đó mini là phần tử nhỏ nhất ở hàng giữa,và minj là phần tử nhỏ nhất ở cột cuối cùng ma trận a[n][n]. b,Đổi min ra xâu số thập lục phân TLP char*s(min có ở câu a). Tính k là tổng các ký tự TLP nào mà chữ số TLP của nó có 2bit tận cùng bên trái là bit 1, nếu ko k là tổng các ký tự TLP có bit tận cùng bên phải là 1.(dùng phép toán logic) c,Tìm t=min+k(min có ở câu a, k có ở câu b) có phải là số hạnh phúc? Vd:44, 1203 là số hạnh phúc,nếu số chữ số của t là số chẵn và tổng các chữ số nữa đầu bằng tổng các chữ số nữa cuối. d,Tạo mảng một chiều int*x, mà x[i] cũng chính là phần tử s[i] của xâu s, nhưng tính x[i] bằng cách đảo ½ byte cao với ½ byte thấp s[i], rồi tính x[i] trong hệ TLP. Viết chương trình ASM thường trú chặn ngắt 1CH để hiện dòng “KHOA CONG NGHE THONG TIN_DAI HOC BACH KHOA DA NANG thứ,ngày,tháng,năm,giờ,phút,giây” ở góc trái màn hình. Đề 2: Viết một chương trình C để xử lí các công việc sau đây: 1, Nhập một số n kiểu long(dùng ngắt 0X21),rồi đổi n ra xâu ký tự thập phân char*s. 2,Hãy sắp xếp giảm dần các phần tử trong xâu s[](phương pháp Quicksort).Tính nt là tổng các phần tử nào của xâu s[],mà chữ số TP có 2bit giữa là 1. 3,Xét xem nt(ở câu 2) có phải là số đối xứng? vd:44, 202 là các số đối xứng khi tích trong hệ thập phân:tổng các tích của chữ số và vị trí từ trái sang phải cũng bằng tổng các tích của chữ số và vị trí từ phải sang trái. 4,Tạo mảng 1 chiều int*x,mà x[i] cũng chính là phần tử s[i] của xâu char*s nhưng có giá trị được tính trong hệ thập lục phân TLP là ½ byte cao bằng giá trị đảo của ½ byte thấp, còn ½ byte thấp bằng ½ byte cao(dùng phép toán logic). Vd: s[i]=’5’=0x35=>s[i]=10100011=0xA3 Viết chương trình ASM để mô phỏng lệnh COPY Đề 3: Viết chương trình C thực hiện các công việc sau: a,Nhập mảng một chiều unsigned char*a,dùng hàm ramdom(256),(70<=n<=120, n nhập dùng ngắt). Hãy tạo mảng 1 chiều int*x,mà x[i] cũng chính là a[i], nhưng có giá trị được tính trong hệ nhị phân có các chữ số đảo lại. vd: a[i]=140=10001100=>x[i]=00110001=49. b,Viết tất cả các hàm sắp xếp mảng mà nhóm có thể tìm hiểu được. Hãy sắp xếp mảng x[n] theo thứ tự giảm dần. c,Hãy chèn mảng a[] vào mảng x[] sao co mảng x[] cũng có thứ tự giảm dần. d,Hãy lấy chữ số thập phân ở giữa cảu các phần tử a[i] để tạo ra xâu ký tự char*s. Viết chương trình ASM để mô phỏng lệnh DATE và TIME(ghép lại thành một lệnh). Đề 4: Viết một chương trình C thực hiện các công việc sau: 1,Viết lại các hàm chuẩn về xâu ký tự mà nhóm có thể tìm hiểu được. 2,Cho trước một xâu char s[]=” 21 47 4 8 36 4 0”, dùng các hàm ở câu 1 để nén xâu(xóa các dấu trống). 3,Đổi xâu s[] ra số nguyên long n=2147483640,(viết hàm dùng ngắt để in n). 4,Đổi long n ra mảng số TLP int*a={7,15,15,15,15,15,15,15,8}, rồi đổi mảng a[] ra lại long n. Viết chương trình ASM để mô phỏng lệnh DIR. Đề 5: Viết chương tình C thực hiện các công việc sau: 1,Cho trước một mảng int*a={6,6,3,3,1,1,3,6,1,9,9,9,0,0,7,4,8,9,5,5};hãy xóa các phần tử giống nhau chỉ để lại 1 phần tử, rồi đổi mảng a[] ra số nguyên long n=631361907485. 2,Tính t=n%50(n có ở câu 1). Xét t có phải là số MERSEN. Vd: 7 là số Mersen vì 7=2^3-1=111(khi đổi 7 ra số nhị phân được toàn bit 1). Cả 7 và 3 đều là số nguyên tố. 3,Chuyển các phần tử chẵn mảng a[] sang phải,các phần tử lẽ sang trái,rồi tạo xâu char*st, mà s[i] là chữ số thập phân thứ i mảng a[]. 4,Hãy xóa các chữ số thập phân nào của xâu st[]<=’4’.(Viết hàm dùng ngắt để in xâu st[]) Viết chương trình ASM mô phỏng lệnh TYPE. Đề 6: Viết chương trình C thực hiện các công việc sau: 1, Hãy đọc tệp văn bản”M1CINP.TXT” mà dòng đầu tiên ghi n phần tử mảng 1 chiều int x[n], tiếp theo là n dòng các phần tử của mảng x[n] có byte cao>byte thấp (dùng phép toán logic và phép dịch). 2,Tạo mảng 1 chiều y[n] mà y[i] cũng chính là phần tử x[i] của mảng x[n] ở câu 1, nhưng giá trị trong hệ đếm TLP được viết đảo các chữ số lại. Vd: x[i]=0x6D=>y[i]=0xD6 3,Hãy sắp xếp mảng y[n] (phương pháp shake). Rồi chèn s=s%55 và mảng x[n] vào y[n] sao cho mảng y[n] vẫn có thứ tự. 4,Viết một hàm in số TLP(dùng ngắt) để in mảng. Viết chương trình ASM để mô phỏng lệnh MOVE. Đề 7: Viết một chương trình C thực hiện các công việc sau: a,Đọc tệp văn bản “MATRAN.TXT” mà dòng đầu tiên ghi n là số hàng/cột của một ma trận vuông, tiếp theo là n*n phần tử ma trận int*a với (5<=n<=12). Hãy tạo mảng một chiều int*x mà x[i] là tổng các tích của cột i với hàng j, hàng j ứng với phần tử lớn nhất đầu tiên trên cột I ma trận a[n][n]. b,Hãy tạo mảng một chiều trên 1 ma trận mà nhóm thực hiện đồ án có thể tìm hiểu được. c,Viết hàm in số thập phân (dùng ngắt) để in mảng 1 chiều. d,Tính s là tổng các phần tử x[i] nào có byte thấp,mà ½ byte thấp, có giá trị bằng giá trị đảo bit của ½ byte cao. Tìm kiếm s%55 có trong mảng int*x?(Tìm kiếm nhị phân với mảng đã sắp xếp). Viết chương trình ASM để mô phỏng lệnh DEL. Đề 8: Viết chương trình C thực hiện các công việc sau: 1,Hãy đọc tệp nhị phân “M1CINP.BIN”mà mẫu tin đầu tiên ghi n phần tử mảng 1 chiều int x[n], tiếp theo là n mẫu tin các phần tử của mảng.(khi ghi tệp dùng hàm random(1000). Tính s là tổng các phần tử nào của mảng x[n] có byte cao là một chữ số thập lục phân. 2,Viết 1 hàm in số nhị phân(dùng ngắt) để in s ở câu 1. 3,Tạo một ma trận xoắn int*a, được hình thành từ các phần tử mảng x[n], được xoắn theo thứ tự giảm dần từ ngòa vào trong. Vd: 30 22 21 20 8 7 6 19 9 3 4 17 10 11 13 15 4,Tạo mảng 1 chiều a[n], mà a[i]=maxi+maxj, với maxi là phần tử lớn nhất hàng i, maxj là phần tử lớn nhất cột j(cột j ứng với phần tử nhỏ nhất cuối cùng của hàng j ma trận a). Viết chương trình ASM thực hiện phép cộng, phép trừ số BCD nén, hãy nhập m1 và m2 kiểu DB gồm 50 chữ số BCD nén rồi thực hiện m3=m1+m2 và m4=m1-m2. Đề 9: Viết một chương trình C thực hiện các công việc sau: a,Tạo 1 ma trận vuông int*a có dạng dích dắc như sau: Vd: 1 2 3 4 8 7 6 5 9 10 11 12 16 15 14 13 b,Tìm mảng 1 chiều x[n],mà x[i] là phần tử “YÊN_NGỰA” của hàng i đó là phần tử lớn nhất mà hàng i đồng thời là phần tử nhỏ nhất cột j, cột j là cột chứa nó. Nếu hàng i không có phần tử “YÊN _NGỰA”, thì x[i] là tổng các phần tử nào của cột j có byte cao có số bit 1 là số chẵn. c,Viết hàm in số bát phân(dùng ngắt để in mảng x[n]). d,Xóa đi các phần tử của mảng x[n]<=t (không được dùng mảng phụ và không được sắp xếp mảng). Viết chương trình ASM nhập mảng 1 chiều gồm 15 phần tử kiều DW, tìm tổng các số nào là số hoàn hảo, số keprker,… Đề 10: Viết một chương trình C để thực hiện các công việc như sau: a,Tạo 1 ma trận vuông xoắn int*a(n=8) như sau: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 b,Tạo xâu ký tự TLP char*s mà s[i] là ký tự chữ số thập lục phân tận cùng bên trái của cột giữa ma trận a[n][n]. c,Xóa tất cả các ký tự thập phân trong xâu s[], rồi đổi xâu s[] ra số thập phân t. d,Xét t và n có phải 2 số hữu nghị? Viết hàm dùng ngắt in số thập phân có dấu để in t. Viết chương trình ASM nhập mảng m1 kiểu DB gồm 50 chữ số BCD nén, rồi đổi từng byte ra số thập phân. Hãy tính tổng các phần tử nào là số nguyên tố, số đối xứng, số mersen… Đề 11: Viết một chương trình C thực hiện các công việc sau: A,Nhập ma trận a[n+1][n+1] kiểu int, với(6<=n<=10). Hãy xóa đi cột và hàng chứa phần tử nhỏ nhất cuối cùng của ma trận a[n+1][n+1] để có a[n][n]. B,Tạo mảng 1 chiều int*x, mà x[i] là tổng các phần tử cột i nào có byte cao là 2 chữ số BCD nén? C,Tạo ma trận xoắn int*c, bằng cách xoắn các phần tử của ma trận a theo thứ tự giảm dần từ ngoài vào trong. D,Viết hàm in số bát phân(dùng ngắt) để in ma trận. Viết chương trình ASM ghi dữ liệu vào tệp, đánh vào từ bàn phím và kết thúc bằng CTRL+Z. Tên tệp cũng vào từ bàn phím và kết thúc bằng ENTER. Đề 12: Viết chương trình C thực hiện các công việc sau: 1,Hãy đọc tệp nhị phân”MATRIX.BIN” mà mẫu tin đầu tiên ghi n là số hàng/cộtcủa một ma trận vuông, tiếp theo là n*n mẫu tin ghi n*n phần tử ma trận int*a với (5<=n<=12). Hãy tạo mảng 1 chiều int*x mà x[i] là tổng các phần tử đứng sau phần tử lẻ đầu tiên ở cột i ma trận a[n][n], nếu không, x[i] là tổng các phần tử nào trên cột i có ½ byte tận cùng bên trái là 1 chữ số BCD nén. 2,Tính t là tổng các phần tử nào của hàng giữa ma trận a[n][m] là số nguyên tố? Nếu không(hàng giữa ko có số nguyên tố) thì tính t là tổng tất cả các phần tử đối xứng ở hàng giữa ma trận a[n][m] 3,Đổi t ra mảng số nhị phân int*c, đổi mảng int*c ra mảng thập lục phân int*v. 4,Viết hàm in số thập lục phân(dùng ngắt) để in mảng int*v. Viết chương trình ASM để minh họa sử dụng chuột, hiển thị tọa độ chuột. Chương trình C và chương trình ASM : Yêu cầu: -Sinh viên làm việc theo nhóm, được chia theo lớp sinh hoạt. số đề tài mà nhóm thực hiện do giáo viên phân công. -Nhóm sinh viên có thể đề xuất đề tài khác ngoài 12 đề tài trên. -Mỗi nhóm sinh viên nộp một BẢN BÁO CÁO (ko cần đóng bìa), trong bản báo cáo có thuật toán của các công việc trong đề tài, file chương trình C .CPP và file chương trình .ASM. Cuối bản báo cáo là lịch và nội dung sinh hoạt của nhóm. -Nhóm sinh viên tìm các bài toán liên quan để viết chương trình C có ít nhất 15 hàm. . Khoa Công Nghệ Thông Tin Bộ Môn Hệ Thống Nhúng ********************** ĐỀ TÀI LẬP TRÌNH HỆ THỐNG Đề 1: Viết một chương trình C thực hiện các công việc sau: a,Nhập. có thể đề xuất đề tài khác ngoài 12 đề tài trên. -Mỗi nhóm sinh viên nộp một BẢN BÁO CÁO (ko cần đóng bìa), trong bản báo cáo có thuật toán của các công việc trong đề tài, file chương trình C. chương trình ASM để minh họa sử dụng chuột, hiển thị tọa độ chuột. Chương trình C và chương trình ASM : Yêu cầu: -Sinh viên làm việc theo nhóm, được chia theo lớp sinh hoạt. số đề tài mà nhóm