1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn nhãn dùng chung là tên các chương trình con từ tệp asm

24 0 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

Nội dung

Chức năng đếm số lượng thành phần âm của dãy số nguyên...84.. Để vận dụng và nâng cao được kĩ năng lập trình hệ thống bằng hợp ngữ, sinh viên phải nỗ lực rất nhiều trong việc tự học, bổ

Trang 1

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP LỚNMÔN: Lập trình hệ thống

Đề tài số 12

Giảng viên hướng dẫn: Th.S Đặng Thành PhuSinh viên thực hiện : Phan Quốc Cường – 2010A04

Hà Nội – Năm 2023

Trang 2

2 Chức năng lấy thời gian của tệp 7

3 Chức năng đếm số lượng thành phần âm của dãy số nguyên 8

4 Chức năng kiểm tra địa chỉ cơ sở của VIDEORAM 9

IV LẬP TRÌNH – CÀI ĐẶT 9

1 Chương trình chính 9

2 Lấy thời gian của tệp 12

3 Số lượng thành phần âm của dãy số nguyên 15

4 Địa chỉ cơ sở của VIDEORAM 19

V DEMO TOÀN BỘ CHƯƠNG TRÌNH 21

1 MENU chương trình 21

2 Lấy thời gian của tệp 22

3 Số lượng thành phần âm của dãy số nguyên 23

4 Kiểm tra địa chỉ cơ sở của VIDEORAM 23

VI KẾT LUẬN 24

VII TÀI LIỆU THAM KHẢO 24

Trang 3

I MỞ ĐẦU

Lập trình hệ thống giúp cho sinh viên viết được chương trình bằng ngôn ngữ Assembly trên máy tính PC Sinh viên có các kĩ năng đơn giản như: Sử dụng trình biên dịch hợp ngữ trong môi trường Window, sửa lỗi, liên kết, khảo sát tập lệnh, các ngắt đơn giản của hệ điều hành DOS Để vận dụng và nâng cao được kĩ năng lập trình hệ thống bằng hợp ngữ, sinh viên phải nỗ lực rất nhiều trong việc tự học, bổ sung những kiến thức nhất định về phần cứng máy tính cũng như nguyên lý vận hành của các thiết bị ngoại vi có liên quan như: Máy in, hệ vi điều khiển, cổng vào ra nối tiếp/song song, …

Ngày nay, ứng dụng công nghệ thông tin và việc tin học hóa được xem là một trong những yếu tố mang tính quyết định trong hoạt động của các chính phủ, tổ chức, cũng như các công ty Nó đóng vai trò hết sức quan trọng, có thể tạo ra những bước đột phá mạnh mẽ Việc lập trình lên các hệ thống để phục vụ cho các nhu cầu riêng của tổ chức, công ty thậm chí các cá nhân, không lấy gì làm xa lạ Với một vài thao tác đơn giản, một người bất kì có thể sử dụng một hệ thống đơn giản.

Trang 4

II ĐỀ BÀI

Hãy viết chương trình thực hiện 4 chức năng: 1 Lấy thời gian (time) của tệp

2 Số lượng thành phần âm của dãy số nguyên 3 Địa chỉ cơ sở của VIDEORAM

4 Thoát khỏi chương trình Ví dụ khi CT chạy:

Trang 5

III MÔ TẢ BÀI TẬP LỚN

Đây là chương trình đa tệp, có sự liên kết giữa tệp C++ và tệp ASM Trong đó, màn hình giới thiệu và màn hình chức năng do chương trình C++ viết, các chức năng cụ thể do chương trình con viết bằng ASM đảm nhiệm Nhãn dùng chung là tên các chương trình con từ tệp ASM.

1 Chương trình C++

Cần khai báo Extern các nhãn dùng chung là tên các chương trình con bao gồm: GETTIME, SLTPAM và VIDEORAM.

Chương trình C++ sẽ hiện màn hình giới thiệu thông tin của sinh viên và lời nhắc ‘Có muốn tiếp tục chương trình không (c/k): ’ Nếu nhấn phím ‘c’ thì màn hình chức năng sẽ hiện ra, ngược lại thì thoát khỏi chương trình Màn hình giới thiệu sẽ có nội dung như sau:

Trang 6

Nếu phím ‘c’ được nhấn, màn hình chức năng của chương trình sẽ có dạng:

Tại đây, sẽ thấy danh sách các chức năng chính của chương trình bao gồm: - 1 Chức năng lấy thời gian của tệp

- 2 Số lượng thành phần âm của dãy - 3 Địa chỉ cơ sở của VIDEORAM - 4 Thoát về DOS

Muốn sử dụng chức năng nào thì chỉ cần nhấn phím số tương ứng của chức năng đó Nếu bạn lỡ nhấn sai các giá trị của các phím từ 1 đến 4 sẽ có thông báo ‘Chức năng không hợp lệ, hãy chọn lại:’

Trang 7

Nhấn phím 4 để thoát khỏi chương trình Ngược lại nếu chọn các phím chức năng từ 1 đến 3, chương trình C++ sẽ gọi chương trình con tương ứng do tệp ASM viết Khi sử dụng xong sẽ thoát chương trình con và trở về MENU lựa chọn chính.

2 Chức năng lấy thời gian của tệp

Chức năng: Lấy thời gian (giờ, phút, giây) của tệp Cách làm:

- Đầu tiên ta hiện thông báo “Nhập tên tệp cần lấy thời gian”

- Mở tệp đã có để đọc, sử dụng chức năng 3dh của ngắt int 21h với

AL=0 để đọc mở tệp thành công thì cờ carry

- Để lấy time của tệp ta sử dụng chức năng 57h của ngắt int 21h với

AL=0 để lấy time

- Sau khi dùng chức năng 57h của ngắt int 21h thì time sẽ được chứa trong thanh ghi CX, trong đó 5 bit cao nhất (11 - 15) chứa giá trị giờ của tệp, 6 bit tiếp theo (5 - 10) chứa giá trị phút của tệp, 5 bit còn lại (0

Trang 8

– 4) chứa giá trị giây của tệp, giá trị giây của tệp chỉ nằm trong khoảng 0-30 vì giờ và phút đã chứa hết số bit còn lại do đó ta phải nhân 2 giá trị của giây Sau đó ta lần lượt gán các giá trị giờ phút giây chứa trong

CX vào AX để thực hiện dịch bit và các phép toán logic để lấy được từng giá trị giờ phút giây vào AX rồi lần lượt hiển thị các giá trị đó ra màn hình, dùng hàm HIEN_SO_N để hiển thị ra màn hình, dùng Macro HienString để hiển thị thông báo hoặc các kí tự ngăn cách thành phần

Các MACRO và chương trình con sử dụng:

o HienString: hiện một xâu ký tự kết thúc bằng ‘$’ ra màn hình o clrscr: Xóa màn hình

o HIEN_SO_N: hiện giá trị có trong AX ra màn hình

3 Chức năng đếm số lượng thành phần âm của dãy số nguyên

Chức năng: nhập vào một dãy số nguyên và đếm số lượng thành phần âm trong dãy

Cách làm:

- Hiện thông báo hãy nhập vào số lượng thành phần của dãy số nguyên - Sau khi nhập số lượng thành phần thì hiện thông báo nhập thành phần của

dãy số nguyên và nhập lần lượt các thành phần

- Sau khi nhập xong số lượng thành phần của dãy số nguyên thì hiện dãy số ra màn hình

- Truy cập đến giá trị đầu tiên của dãy để thực hiện so sánh với 0 nếu số đó nhỏ hơn 0 tăng DX lên 1, di chuyển đến giá trị tiếp theo và tiếp tục thực hiện so sánh đến hết dãy và tăng DX lên 1 nếu đó là số âm

- Sau khi kết thúc so sánh các phần tử trong dãy với 0 lúc này DX sẽ chứa số lượng thành phần âm của dãy

- Sử dụng hàm HIEN_SO_N để hiện giá trị số lượng thành phần âm ra màn hình

Trang 9

Các MACRO và chương trình con sử dụng:

o HienString: hiện một xâu ký tự kết thúc bằng ‘$’ ra màn hình o clrscr: Xóa màn hình

o HIEN_SO_N: hiện giá trị có trong AX ra màn hình

4 Chức năng kiểm tra địa chỉ cơ sở của VIDEORAM

Chức năng: kiểm tra địa chỉ của VIDEORAM Cách làm:

- Để kiểm tra địa chỉ cơ sở của VIDEORAM ta sử dụng ngắt BIOS int 11h - Sau khi đưa được giá trị của byte có địa chỉ 0:410h vào AL thì ta tách 2 bit

có thông tin liên quan đến loại card điều khiển màn hình

- Kiểm tra liệu có phải loại card điều khiển màn hình là mono nếu bằng thì hiện địa chỉ của VIDEORAM là B000h, nếu không bằng thì hiện địa chỉ của VIDEORAM là B800h

Các MACRO và chương trình con sử dụng:

o HienString: hiện một xâu ký tự kết thúc bằng ‘$’ ra màn hình

Trang 10

cout << "\n Truong Dai hoc Mo Ha Noi"; cout << "\n KHOA CONG NGHE THONG TIN"; cout << "\n -o0o -";

cout << "\n\n\n BAI TAP LON MON LTHT"; cout << "\n\n\n Cac SV thuc hien:";

cout << "\n 1 Phan Quoc Cuong Lop: 20A4"; cout << "\n 2 Tran Van B Lop: 17A2"; cout << "\n 3 Nguyen Thi C Lop: 17A2"; cout << "\n\n\n Co tiep tuc CT (c/k)? "; cout << "\n\n 1 Lay thoi gian cua tep";

cout << "\n 2 So luong thanh phan am cua day so nguyen"; cout << "\n 3 Dia chi co so cua VIDEORAM";

cout << "\n 4 Thoat khoi chuong trinh"; cout << "\n\n Hay chon: ";

while(1){

Trang 11

if(( cin>>cn) && cn>0 && cn<5){

cout<<"\n Nhap khong hop le!"; cout<<"\n Vui long nhap lai: ";

Trang 12

db 13,10,13,10,' Nhap ten tep can lay time: $' dd2 db 13,10,' Thoi gian cua tep: $'

Err_0 db 13,10,' Khong mo duoc tep!$'

Err_LT db 13,10,' Khong lay duoc thoi gian cua tep!$' Err_C db 13,10,' Khong dong duoc tep!$'

Trang 15

db 13,10,13,10,' Vao so luong thanh phan: $' m2 db 13,10,' Nhap vao day so nguyen $' m3 db 13,10,' a[$'

m4 db ']= $'

m5 db 13,10,' Day so vua vao la: $' space db' $'

m6 db 13,10,' So luong thanh phan am cua day: $' tieptuc db 13,10,' Co tiep tuc CT (c/k)? $'

sltp dw ? index dw 0 a dw 100 dup

Trang 19

4 Địa chỉ cơ sở của VIDEORAM

db 13,10,13,10,' Dia chi co so cua VIDEORAM la: $' exit db 13,10,' An phim bat ky de tro ve Main menu $'

Trang 21

V DEMO TOÀN BỘ CHƯƠNG TRÌNH1 MENU chương trình

Trang 22

2 Lấy thời gian của tệp

Trang 23

3 Số lượng thành phần âm của dãy số nguyên

4 Kiểm tra địa chỉ cơ sở của VIDEORAM

Trang 24

VI KẾT LUẬN

Kết quả bài tập thực hiện đúng, đủ các yêu cầu được nêu Mã nguồn ngắn gọn, dễ hiểu, thực hành đúng theo những kiến thức đã được dạy và truyền đạt Chi tiết, tỉ mỉ, có kiểm tra dữ liệu đầu vào và cảnh báo người dùng Giao diện đơn giản, hiệu quả, không cầu kì, rườm rà gây rối mắt.

VII TÀI LIỆU THAM KHẢO

1 Giáo trình môn Lập trình hệ thống – thầy Đặng Thành Phu, khoa Công nghệ thông tin – Trường Đại học Mở Hà Nội

2 Các slide bài giảng trên lớp – môn Lập trình hệ thống, khoa Công nghệ thông tin – Trường Đại học Mở Hà Nội

3 Công cụ hỗ trợ THELP – thầy Đặng Thành Phu, khoa Công nghệ thông tin – Trường Đại học Mở Hà Nội

Ngày đăng: 08/04/2024, 12:53

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w