1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo CUỐI kì môn THỰC HÀNH KIẾN TRÚC máy TÍNH

29 18 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 1,48 MB

Nội dung

Phạm Minh Thống - 20205029 BÁO CÁO CUỐI KÌ MƠN THỰC HÀNH KIẾN TRÚC MÁY TÍNH BTCK 2: Mơ tả tốn: Vẽ bóng hình mơ Bitmap Quả bóng di chuyển phụ thuộc vào phím người dùng bấm vào giả lập MMIO Nhấn w, s, a, d di chuyển lên, xuống, trái, phải Nếu chạm vào biên bóng bật lại Tốc độ khơng đổi Phương pháp giải tốn: - Đầu tiên phải vẽ bóng, cách tơ màu đường trịn màu vàng Tức ta tơ màu loạt pixel hình mơ Bitmap tạo đường tròn màu vàng + Cách tạo đường trịn: + + + Ta cần tơ màu viền tròn bên điểm bên màu vàng, ta thu đường tròn vàng ● Vịng ngồi: từ dịng đến 51 ● Vịng trong: từ dịng đến 46 Trong hình ta thấy: ● D1 điểm bên trái đường trịn bên ngồi ● D2 điểm cuối bên phải đường trịn bên ngồi ● C1 điểm bên trái đường tròn bên ● C2 điểm cuối bên phải đường bên Cách tô: Tô từ xuống dưới, tơ dịng, tơ pixel từ trái sang phải ● Từ dịng -> : Tơ màu từ D1 đến C1 ● Từ dòng -> 46 : Tô màu từ D1 đến D2 từ C2 đến C1 ● Từ 47 -> 51: Tô màu từ D1 đến C1 Phạm Minh Thống - 20205029 - - Tiếp theo người dùng nhập ký tự (w, a, s, d) vào MMIO bóng di chuyển Để di chuyển bóng ta vẽ bóng vị trí xóa bóng vị trí cũ (chính tơ màu bóng cũ giống màu nền) Vị trí bóng tùy thuộc vào người dùng nhập ký tự + Vị trí xác định sau: ● Nếu w: Vị trí = Vị trí cũ - 512 Tức dịch lên dịng, dịng có 512 pixel Khi trừ 512 dịch lên dịng ● Nếu s: Vị trí = Vị trí cũ + 512 Tức dịch xuống dòng ● Nếu a: Vị trí = Vị trí cũ - Dịch trái cột ● Nếu d: Vị trí = Vị trí cũ + Dich phải cột Khi chạm vào viền đập ngược lại + Chẳng hạn di chuyển lên mà chạm viền chuyển sang chế độ di chuyển xuống ngược lại + Cịn di chuyển sang trái mà chạm viền chuyển sang phải ngược lại Code MIPS assembly giải thích code: Giải thích code bên trên: - Khai báo gán giá trị Dòng 1, 10, 11, 14, 15 : mang giá trị địa đầu vào công cụ bitmap, giả lập MMIO Dòng 3, 4, 6, 7: vị trí bắt đầu vẽ bóng Giải thích code bên trên: - Em thường comment lại ghi sử dụng chức xuyên suốt đoạn code lớn lên đầu để dễ đối chiếu xem xét Phạm Minh Thống - 20205029 Giải thích code bên trên: - Gán k0 = địa bắt đầu hình bitmap Cho biến số dịng s0 = Lưu địa điểm đầu stack vào t8 Giải thích code bên trên: - Gán D1 vào s1, D2 vào s2, C1 vào s3, C2 vào s4 Gán D1 vào s5, D2 vào S6 để tô màu từ trái (D1) sang phải (D2) Sau lần tô màu xong dịng tăng giá trị biến s0 (biến đếm số dòng) Phạm Minh Thống - 20205029 Giải thích code bên trên: - main_ele_circle_1: Ở ta dùng biến đếm dịng s0 để xác định dịng cần tơ màu chuyển đến hàm xác định điểm D1, C1 dịng cần tơ màu sau chuyển đến hàm main_ele_circle_2 Phạm Minh Thống - 20205029 Phạm Minh Thống - 20205029 Giải thích code bên trên: - main_ele_circle_2: Ở ta dùng biến đếm dòng s0 để xác định dịng cần tơ màu chuyển đến hàm xác định điểm D2, C2 dịng cần tơ màu Đến ta xác định D1, C1, D2, C2 => chuyển đến hàm tơ màu Giải thích code bên trên: - main_color: dùng s0 để xác định dòng cần tơ màu chuyển đến hàm tơ màu thích hợp + Từ 1-> 47 -> 51: Chỉ cần tô màu từ D1 đến C1 + Từ -> 46: Cần tô từ D1 đến D2 C2 đến C1 Vì khoảng trống bên đường trịn không cần tô, tức không cần tô D2 đến C2 Giải thích code bên trên: - main_color-1: Tơ màu từ D1 đến C1 => Gán D1, C1 vào biến s5, s6 (2 tham số hàm tô màu) sau chuyển đến hàm tơ màu Phạm Minh Thống - 20205029 Giải thích code bên trên: - main_color-2: Tơ màu từ D1 đến D2 từ C2 đến C1 => Gán D1, D2 vào biến s5, s6 (2 tham số hàm tơ màu) sau chuyển đến hàm tơ màu => Sau gán C2, C1 vào biến s5, s6 (2 tham số hàm tô màu) sau chuyển đến hàm tơ màu Giải thích code bên trên: - main_raise: Kiểm tra dòng vừa tơ dịng 51 khỏi hàm main khơng tăng số dịng tiếp tục tơ màu Giải thích code bên trên: - main_ele_1, main_ele_3, main_ele_4, main_ele_5: Chuyển đến cách tính D1, C1 tương ứng, sau nhảy đến main_ele_circle_2 Phạm Minh Thống - 20205029 Giải thích code bên trên: - main_element_0, main_element_1, main_element_2, main_element_3: Chuyển đến cách tính D2, C2 tương ứng, sau nhảy đến main_color Giải thích code bên trên: - Cal_0, Cal_1, Cal_2, Cal_4: Tính D1, C1 dịng cần tô màu Phạm Minh Thống - 20205029 Giải thích code bên trên: - Calcu_0, Calcu_1, Calcu_2, Calcu_3: Tính D2, C2 dịng cần tơ màu Giải thích code bên trên: - color_main: bắt đầu tơ màu Tô điểm từ s5 đến s6 + Kiểm tra s5 > s6 hốn đổi s5 s6 cho color_main_back: điểm quay lại sau hoán đổi color_ele: Bắt đầu tô màu pixel lưu pixel vào ngăn xếp color_out: Thốt khỏi hàm tơ màu Phạm Minh Thống - 20205029 Giải thích code bên trên: - convert_1: Hàm hoán đổi s1 s2 convert_2: Hàm hoán đổi s3 s4 convert_3: Hàm hoán đổi s5 s6 Giải thích code bên trên: - main_out: Sau vẽ xong dịng 51 lưu điểm cuối stack đến phần di chuyển bóng Giải thích code bên trên: - Giải phóng nhớ với mong muốn code chạy nhanh Phạm Minh Thống - 20205029 Giải thích code: - Với vị trí giới hạn biên s0 tính sẵn trường hợp: + Trên: 22 -> 483 + Dưới: 236054 -> 236515 + Trái: Khi cộng thêm 29 chia hết cho 512 + Phải: Khi cộng thêm 490 chia hết cho 512 Phạm Minh Thống - 20205029 BTCK 9: Mơ tả tốn: - Cho hình chữ DCE với viền ký tự * màu số Hãy hoàn thành yêu cầu sau: + Hiển thị hình ảnh giao diện console + Sửa ảnh chữ cịn lại viền, khơng có màu hiển thị + Hoán đổi chữ thành ECD hiển thị + Nhập màu từ bàn phím cho D, C, E hiển thị Phương pháp giải toán: - Chia ảnh làm phần phần D, C E - Tiến hành lưu phần vào biến: phần D lưu vào biến image_D, phần C lưu vào image_C, phần E lưu vào image_E + Cách lưu: ● Lưu dòng vào biến, dòng ngăn cách ký tự ‘\n’, dùng ký tự ‘?’ để biểu thị việc kết thúc phần (tức hết ký tự) ● Các chỗ trống ảnh cần sử dụng chuỗi ký tự space (‘ ‘) để thể Yêu cầu thứ nhất: + Để in hình ảnh giao diện console, ta dựa vào cách lưu vào biến image_D, image_C, image_E + Ý tưởng: ● In dòng image_D, image_C, image_E in hết toàn ký tự biến ● Nói cách khác in dịng thứ biến image_D, image_C, image_E xuống dòng, sau in dịng thứ hai biến image_D, image_C, image_E xuống dịng, sau … Đến hết gặp ký tự ‘?’ thể việc hết ký tự Yêu cầu thứ hai: + Để sửa ảnh chữ cịn lại viền, khơng có màu ta việc thay ký tự màu ký tự space (‘ ‘) + Vẫn dùng cách duyệt yêu cầu thứ + Thêm bước kiểm tra ký tự màu thay - - Phạm Minh Thống - 20205029 - - Yêu cầu thứ ba: + Giống yêu cầu thứ ta thay thứ tự in biến thành image_E, image_C, image_D Yêu cầu thứ tư: + Yêu cầu người dùng nhập màu cho chữ + Sau kiểm tra tính hợp lệ màu vừa nhập + Giống yêu cầu thứ hai, kiểm tra ký tự màu thay ký tự thích hợp người dùng nhập nhập Code MIPS assembly giải thích code: Giải thích code: - Dòng -> - + Gán dòng biểu diễn chữ D vào biến image_D, dòng ngăn cách ký tự ‘\n’, cuối image_D thêm ký tự ‘?’ để xác định hết ký tự + Tương tự với C E lưu vào image_C image_E Dòng -> 8: Các title cần hiển thị người dùng biết nên nhập Dịng 10 -> 12: Khai báo biến row_D, row_C, row_E với không gian 100 byte Dòng 14 -> 21: Tạo cấu trúc menu để dễ dàng kiểm tra yêu cầu Phạm Minh Thống - 20205029 Giải thích code: - Comment lại ghi sử dụng với chức không thay đổi suốt đoạn code lớn hay toàn code Giải thích code: - Tạo menu cách hiển thị chuỗi ký tự khởi tạo sẵn - Sử dụng chức syscall với v0 =4 in chuỗi địa a0 Giải thích code: - Gán địa biến vào ghi xác định để chuẩn bị cho bước Phạm Minh Thống - 20205029 Giải thích code: - Người dùng nhập số nguyên để thể yêu cầu muốn kiểm tra - Với chức syscall, v0 = cho phép đọc số nguyên mà người dùng nhập - Dòng 95 -> 100: Để xác định lựa chọn người dùng tiến hành thực Nếu lựa chọn khơng xác định quay lại menu Giải thích code: - main_1: bắt đầu thực yêu cầu - - DD_loop_1: Thực lưu dòng image_D vào row_D + Lần lượt gán ký tự biến image_D vào t1 + Nếu t1 khơng phải ký tự ‘\n’ ‘?’ lưu vào biến row_D + Nếu ‘\n’ nhảy tới back_row_D_1 + Nếu ‘?’ hồn thành hiển thị, thoát khỏi yêu cầu back_row_D_1: Hiển thị row_D hình Phạm Minh Thống - 20205029 Giải thích code: - Tương tự D, ta row_C row_E Hiển thị row_C, row_E xuống dòng Nhảy lại DD_loop_1 để tiếp tục hiển thị row_D gặp ‘?’ Giải thích code: - main_2: bắt đầu thực yêu cầu - DD_loop_2: Giống DD_loop_1 trước lưu ký tự vào row_D thực nhảy đến check_int_2 để kiểm tra ký tự vừa load vào t1 xem có phải ký tự màu khơng Phạm Minh Thống - 20205029 Giải thích code: - Tương tự D, ta row_C row_E Hiển thị row_C, row_E xuống dòng Nhảy lại DD_loop_2 để tiếp tục hiển thị row_D gặp ‘?’ Giải thích code: - check_int_2: Kiểm tra xem t1 có phải ký tự số (‘0’ đến ‘9’) hay không Nếu thay ký tự space (‘ ’) Phạm Minh Thống - 20205029 Giải thích code: - main_3: bắt đầu thực yêu cầu - main_3 cấu trúc giống main_1, thay hiển thị theo ký tự theo thứ tự D, C, E main_1 main_3 lại hiển thị E, C, D Phạm Minh Thống - 20205029 Phạm Minh Thống - 20205029 Giải thích code: - main_4: Bắt đầu thực yêu cầu Dùng chức syscall với v0 = để in chuỗi thông báo người dùng nên nhập màu vào cho ký tự D, C, E Dùng chức syscall với v0 = 12 để đọc ký tự người dùng nhập từ bàn phím Đây màu ký tự Sau nhảy đến check_color_4 để kiểm tra xem ký tự màu có hợp lệ hay khơng Phạm Minh Thống - 20205029 Giải thích code: - - DD_loop_4: Giống DD_loop_2, có thêm lệnh nhảy đến hàm check_int_4 để kiểm tra xem có phải ký tự màu hay khơng Nếu phải tiến hành thay màu với màu người dùng nhập vào DC_loop_4, DE_loop_4 tương tự DD_loop_4 Giải thích code: - Check_int_4: Nếu ký tự màu (từ ‘0’ đến ‘9’) tiến hành đổi màu Phạm Minh Thống - 20205029 Giải thích code: - check_color_4: Dùng để kiểm tra màu người dùng nhập vào có hợp lệ hay khơng Nếu ký tự số (từ ‘0’ đến ‘9’) tiếp tục, khơng phải bắt người dùng nhập lại màu hàm error_color Giải thích code: - Convert_color_4: Dùng t1 để xác định màu cần thay cho ký tự Sau nhảy đến hàm thay màu bên tương ứng bên Giải thích code: - Convert_color_D_4: chuyển màu cho ký tự D Convert_color_C_4: chuyển màu cho ký tự C Convert_color_E_4: chuyển màu cho ký tự E Phạm Minh Thống - 20205029 Giải thích code: - Đây hàm dùng chung code yêu cầu + print_endl: Dùng để xuống dòng + print_row: Dùng để in dịng + complete: Khi hồn thành u cầu quay lại menu + exit_pro: Thốt khỏi chương trình Phạm Minh Thống - 20205029 Kết quả: - Yêu cầu thứ nhất: - Yêu cầu thứ hai Phạm Minh Thống - 20205029 - Yêu cầu thứ ba - Yêu cầu thứ tư (màu chữ số cuối mssv em) ... 100: Để xác định lựa chọn người dùng tiến hành thực Nếu lựa chọn khơng xác định quay lại menu Giải thích code: - main_1: bắt đầu thực yêu cầu - - DD_loop_1: Thực lưu dòng image_D vào row_D + Lần... trên: - Cal_0, Cal_1, Cal_2, Cal_4: Tính D1, C1 dịng cần tơ màu Phạm Minh Thống - 20205029 Giải thích code bên trên: - Calcu_0, Calcu_1, Calcu_2, Calcu_3: Tính D2, C2 dịng cần tơ màu Giải thích... vàng Đổi màu từ đầu ngăn xếp đến cuối ngăn xếp (từ xuống đường tròn) convert_color_ele: Lần lượt lấy vị trí từ ngăn xếp ra, đổi màu màu nền, cộng thêm s1 để tạo thành vị trí mới, lưu vào ngăn xếp

Ngày đăng: 05/08/2022, 14:21

w