Bài tập lớn môn Kiến trúc máy tính bao gồm phần làm việc cá nhân và làm việc nhóm | Học viện Công nghệ Bưu chính Viễn thông

Bài tập lớn môn Kiến trúc máy tính bao gồm phần làm việc cá nhân và làm việc nhóm của Học viện Công nghệ Bưu chính Viễn thông với những kiến thức và thông tin bổ ích giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học vào thực tiễn cuộc sống. Mời bạn đọc đón xem

lOMoARcPSD|37054152
Bài tập lớn KTMT
PHẦN 1: PHẦN LÀM CÁ NHÂN
1.1. TRẦN ĐÌNH LÂM ANH : B21DCCN013
1.1.1. Bài số 1: Lập trình hợp ngữ Assembly
Câu 1: Viết chương trình hợp ngữ Assembly in ra lời chào Tiếng Anh và Tiếng Việt
Mã nguồn Asm8086
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
Câu 6: Viết chương trình hợp ngữ Assembly chuyển một số từ hệ cơ số 10 sang hệ
nhị phân
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
Câu 11: Viết chương trình hợp ngữ Assembly tìm giá trị lớn nhất và nhỏ nhất của
một mảng số
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
Câu 16: Viết chương trình hợp ngữ Assembly tính tổng 2 số kiểu word
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
1.1.2. Bài số 2: Thực hành phân tích khảo sát bộ nhớ:
1. Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng (Bộ nhớ trong:
ROM, RAM, Cache System, Bộ nhớ ngoài: ổ đĩa cứng, CD, Thiết bị vào ra.)
Khảo sát cấu hình của máy và hệ thống bộ nhớ của y đang sử dụng Sử dụng phần
mềm CPU-Z 64-bit v1.85.0x64:
CPU: I5-13400F (10 Core/ 16 Thread)
Cache: 20 MB
lOMoARcPSD|37054152
Bài tập lớn KTMT
RAM: 64 GB (2x32GB)
ROM: 32 MB
lOMoARcPSD|37054152
Bài tập lớn KTMT
Bộ nhớ ngoài: HDD 2TB – SSD 1TB
2. Dùng công cụ Debug khảo sát nội dung các thanh ghi IP, DS, ES, SS, CS, BP,
SPCông cụ sử dụng: emu8086 microprocessor emulator Các bước thực hiện:
Mở file .asm bằng phần mềm trên
Chọn emulate trên thanh công cụ rồi chọn nút debug nằm cuối của cửa sổ vừa mở
ra
Chạy Single step để xem kết quả debug từng mã lệnh từ đầu đến cuối
lOMoARcPSD|37054152
Bài tập lớn KTMT
3. Giải thích nội dung các thanh ghi, trên cơ sở đó giải thích cơ chế quản lý bộ nhớ
củahệ thống trong trường hợp cụ thể này.
Khi chương trình bắt đầu chạy, hệ điều hành tự động khởi tạo các thanh ghi, vùng
nhớ và cấp phát không gian địa chỉ cho chương trình.
Tương ứng với các câu lệnh trong mã nguồn, nội dung các thanh ghi có thể thay
đổi hoặc không.
o IP: Lưu địa chỉ của lệnh đang được thực thi trong phân đoạn mã . Sau khi
một lệnh được thực thi xong, giá trị của thanh ghi IP sẽ được tăng lên để trỏ
tới lệnh tiếp theo trong phân đoạn mã.
o DS: Lưu địa chỉ bắt đầu của phân đoạn dữ liệu. Các lệnh truy xuất dữ liệu
được thực hiện bằng cách sử dụng giá trị của thanh ghi DS để tính toán địa
chỉ của dữ liệu trong bộ nhớ.
o ES: Lưu địa chỉ bắt đầu của phân đoạn khác . Thanh ghi này thường được
sử dụng trong các thao tác truy xuất dữ liệu giữa các phân đoạn khác nhau.
o SS: Lưu địa chỉ bắt đầu của phân đoạn ngăn xếp stack. Đây là nơi lưu
trữ các giá trị bộ đệm khi thực hiện các lệnh như PUSH ,POP.
o CS: Lưu địa chỉ bắt đầu của phân đoạn mã . Các lệnh được thực thi đều
nằm trong phân đoạn mã này.
1.2. NGUYỄN VIỆT KHIÊM : B21DCCN468
1.2.1. Bài số 1: Lập trình hợp ngữ Assembly
Câu 2: Viết chương trình hợp ngữ Assembly nhập 1 ký tự và in ra màn hình ký tự đó
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
Câu 7: Viết chương trình hợp ngữ Assembly chuyển một số từ hệ cơ số 10 sang hệ
nhị phân
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
Câu 12: Viết chương trình hợp ngữ Assembly cho phép nhập vào một số và in ra
màn hình giai thừa của số đó
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
Câu 17: Viết chương trình hợp ngữ Assembly cho phép nhập vào một mảng gồm 10
số có hai chữ số. Tính tổng các số chia hết cho 7. In tổng thu được ra màn hình dưới
dạng thập phân
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
1.2.2. Bài số 2: Thực hành phân tích khảo sát bộ nhớ:
1. Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng (Bộ
nhớtrong: ROM, RAM, Cache System, Bộ nhớ ngoài: ổ đĩa cứng, CD, Thiết bị vào
ra.)
Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng Sử dụng phần
mềm CPU-Z 64-bit v1.85.0x64:
CPU: I5-11400H (6 Core/ 12 Thread)
lOMoARcPSD|37054152
Bài tập lớn KTMT
Cache: 12 MB
RAM: 16 GB (8GB x 2 Dual Channel)
lOMoARcPSD|37054152
Bài tập lớn KTMT
ROM: 32 MB
Bộ nhớ ngoài: SSD 512GB
lOMoARcPSD|37054152
Bài tập lớn KTMT
2. Dùng công cụ Debug khảo sát nội dung các thanh ghi IP, DS, ES, SS, CS, BP,
SPCông cụ sử dụng: emu8086 microprocessor emulator Các bước thực hiện:
Mở file .asm bằng phần mềm trên
Chọn emulate trên thanh công cụ rồi chọn nút debug nằm cuối của cửa sổ vừa mở
ra
Chạy Single step để xem kết quả debug từng mã lệnh từ đầu đến cuối
lOMoARcPSD|37054152
Bài tập lớn KTMT
3. Giải thích nội dung các thanh ghi, trên cơ sở đó giải thích cơ chế quản lý bộ nhớ
của hệ thống trong trường hợp cụ thể này.
Khi chương trình bắt đầu chạy, hệ điều hành tự động khởi tạo các thanh ghi, vùng
nhớ và cấp phát không gian địa chỉ cho chương trình.
Tương ứng với các câu lệnh trong mã nguồn, nội dung các thanh ghi có thể thay
đổi hoặc không.
o IP: Lưu địa chỉ của lệnh đang được thực thi trong phân đoạn mã . Sau khi
một lệnh được thực thi xong, giá trị của thanh ghi IP sẽ được tăng lên để trỏ
tới lệnh tiếp theo trong phân đoạn mã.
lOMoARcPSD|37054152
Bài tập lớn KTMT
o DS: Lưu địa chỉ bắt đầu của phân đoạn dữ liệu. Các lệnh truy xuất dữ liệu
được thực hiện bằng cách sử dụng giá trị của thanh ghi DS để tính toán địa
chỉ của dữ liệu trong bộ nhớ.
o ES: Lưu địa chỉ bắt đầu của phân đoạn khác . Thanh ghi này thường được
sử dụng trong các thao tác truy xuất dữ liệu giữa các phân đoạn khác nhau.
o SS: Lưu địa chỉ bắt đầu của phân đoạn ngăn xếp stack. Đây là nơi lưu
trữ các giá trị bộ đệm khi thực hiện các lệnh như PUSH ,POP.
o CS: Lưu địa chỉ bắt đầu của phân đoạn mã . Các lệnh được thực thi đều
nằm trong phân đoạn mã này.
o BP: Được sử dụng để lưu trữ địa chỉ cơ sở của phân đoạn dữ liệu hoặc phân
đoạn ngăn xếp. Thường được sử dụng để truy xuất các biến cục bộ trong
một hàm.
o SP: Được sử dụng để lưu trữ địa chỉ của đỉnh ngăn xếp. Thường được sử
dụng để thêm hoặc xóa các giá trị khỏi ngăn xếp bằng các lệnh PUSH và
POP.
Cơ chế quản lý bộ nhớ của của hệ thống được thông qua các lệnh xử lý dữ liệu,
bao gồm các lệnh di chuyển dữ liệu từ bộ nhớ đến thanh ghi và ngược lại. Ngoài
ra, hệ thống cũng sử dụng các thanh ghi để lưu trữ các địa chỉ bắt đầu và kết thúc
của các vùng nhớ được sử dụng trong các chương trình.
Khi một chương trình được thực hiện, các lệnh được đọc từ bộ nhớ và được xử lý
bởi bộ vi xử lý. Khi cần truy cập đến một vùng nhớ cụ thể, các lệnh xử lý dữ liệu
sẽ sử dụng các thanh ghi để lưu trữ địa chỉ bắt đầu và kết thúc của vùng nhớ đó.
Sau khi hoàn thành xử lý, kết quả sẽ được lưu trữ lại trong bộ nhớ hoặc trong các
thanh ghi khác tùy thuộc vào yêu cầu của chương trình.
1.3. NGUYỄN THỊ LAN : B21DCCN818
1.3.1. Bài số 1: Lập trình hợp ngữ Assembly
Câu 5: Viết chương trình hợp ngữ Assembly cho phép nhập 1 chuỗi ký tự và in ra
màn hình chuỗi ký tự đó theo dạng viết hoa và viết thường
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
Câu 10: Viết chương trình hợp ngữ Assembly yêu cầu đếm chiều dài của một chuỗi
ký tự cho trước
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
Câu 15: Viết chương trình hợp ngữ Assembly cho phép in ra số lượng các số chia
hết cho 11 và tính tổng các số đó từ mảng cho trước
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
Câu 20: Viết chương trình hợp ngữ Assembly cho hai chuỗi ký tự A và B có độ dài
là n (n>m), chỉ ra xâu A chứa mấy xâu B
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
1.3.2. Bài số 2: Thực hành phân tích khảo sát bộ nhớ:
lOMoARcPSD|37054152
Bài tập lớn KTMT
1. Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng (Bộ
nhớtrong: ROM, RAM, Cache System, Bộ nhớ ngoài: ổ đĩa cứng, CD, Thiết bị vào
ra.) Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng Sử dụng
phần mềm CPU-Z 64-bit v1.85.0x64:
CPU: I5-11300H (4 Core/ 8 Thread)
Cache: 8 MB
RAM: 8 GB
lOMoARcPSD|37054152
Bài tập lớn KTMT
ROM: 32 MB
lOMoARcPSD|37054152
Bài tập lớn KTMT
Bộ nhớ ngoài: SSD 512GB
2. Dùng công cụ Debug khảo sát nội dung các thanh ghi IP, DS, ES, SS, CS, BP,
SPCông cụ sử dụng: emu8086 microprocessor emulator Các bước thực hiện:
Mở file .asm bằng phần mềm trên
Chọn emulate trên thanh công cụ rồi chọn nút debug nằm cuối của cửa sổ vừa mở
ra
Chạy Single step để xem kết quả debug từng mã lệnh từ đầu đến cuối
lOMoARcPSD|37054152
Bài tập lớn KTMT
3. Giải thích nội dung các thanh ghi, trên cơ sở đó giải thích cơ chế quản lý bộ nhớ
của hệ thống trong trường hợp cụ thể này.
Khi chương trình bắt đầu chạy, hệ điều hành tự động khởi tạo các thanh ghi, vùng
nhớ và cấp phát không gian địa chỉ cho chương trình.
Tương ứng với các câu lệnh trong mã nguồn, nội dung các thanh ghi có thể thay
đổi hoặc không.
lOMoARcPSD|37054152
Bài tập lớn KTMT
o IP: Lưu địa chỉ của lệnh đang được thực thi trong phân đoạn mã . Sau khi
một lệnh được thực thi xong, giá trị của thanh ghi IP sẽ được tăng lên để trỏ
tới lệnh tiếp theo trong phân đoạn mã.
o DS: Lưu địa chỉ bắt đầu của phân đoạn dữ liệu. Các lệnh truy xuất dữ liệu
được thực hiện bằng cách sử dụng giá trị của thanh ghi DS để tính toán địa
chỉ của dữ liệu trong bộ nhớ.
o ES: Lưu địa chỉ bắt đầu của phân đoạn khác . Thanh ghi này thường được
sử dụng trong các thao tác truy xuất dữ liệu giữa các phân đoạn khác nhau.
o SS: Lưu địa chỉ bắt đầu của phân đoạn ngăn xếp stack. Đây là nơi lưu
trữ các giá trị bộ đệm khi thực hiện các lệnh như PUSH ,POP.
o CS: Lưu địa chỉ bắt đầu của phân đoạn mã . Các lệnh được thực thi đều
nằm trong phân đoạn mã này.
o BP: Được sử dụng để lưu trữ địa chỉ cơ sở của phân đoạn dữ liệu hoặc phân
đoạn ngăn xếp. Thường được sử dụng để truy xuất các biến cục bộ trong
một hàm.
o SP: Được sử dụng để lưu trữ địa chỉ của đỉnh ngăn xếp. Thường được sử
dụng để thêm hoặc xóa các giá trị khỏi ngăn xếp bằng các lệnh PUSH và
POP.
Cơ chế quản lý bộ nhớ của của hệ thống được thông qua các lệnh xử lý dữ liệu,
bao gồm các lệnh di chuyển dữ liệu từ bộ nhớ đến thanh ghi và ngược lại. Ngoài
ra, hệ thống cũng sử dụng các thanh ghi để lưu trữ các địa chỉ bắt đầu và kết thúc
của các vùng nhớ được sử dụng trong các chương trình.
Khi một chương trình được thực hiện, các lệnh được đọc từ bộ nhớ và được xử lý
bởi bộ vi xử lý. Khi cần truy cập đến một vùng nhớ cụ thể, các lệnh xử lý dữ liệu
sẽ sử dụng các thanh ghi để lưu trữ địa chỉ bắt đầu và kết thúc của vùng nhớ đó.
Sau khi hoàn thành xử lý, kết quả sẽ được lưu trữ lại trong bộ nhớ hoặc trong các
thanh ghi khác tùy thuộc vào yêu cầu của chương trình.
1.4. TRƯƠNG CÔNG TUẤN THÀNH : B21DCCN681
1.4.1. Bài số 1: Lập trình hợp ngữ Assembly
Câu 3: Viết chương trình hợp ngữ Assembly cho phép nhập 1 chuỗi ký tự và in ra
màn hình chuỗi ký tự đó
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
Câu 8: Viết chương trình hợp ngữ Assembly chuyển một số từ hệ cơ số 10 sang hệ
cơ số 16 (Hexa)
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
Câu 13: Viết chương trình hợp ngữ Assembly cho phép nhập vào các cơ số và in ra
màn hình tổng của các số đó
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
Câu 18: Viết chương trình hợp ngữ Assembly đếm số lần xuất hiện của chuỗi con
“ktmt” trong một chuỗi. In ra kết quả dưới dạng số thập phân
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
1.4.2. Bài số 2: Thực hành phân tích khảo sát bộ nhớ:
1. Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng (Bộ nhớ trong:
ROM, RAM, Cache System, Bộ nhớ ngoài: ổ đĩa cứng, CD, Thiết bị vào ra.)
Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng Sử dụng phần
mềm CPU-Z 64-bit v1.85.0x64:
CPU: I5-6300U (2 Core/ 4 Thread)
lOMoARcPSD|37054152
Bài tập lớn KTMT
Cache: 3 Mb
RAM: 12 GB
lOMoARcPSD|37054152
Bài tập lớn KTMT
ROM: 16 Mb
Bộ nhớ ngoài:
- 256GB SSD
lOMoARcPSD|37054152
Bài tập lớn KTMT
2. Dùng công cụ Debug khảo sát nội dung các thanh ghi IP, DS, ES, SS, CS, BP,
SPCông cụ sử dụng: emu8086 microprocessor emulator Các bước thực hiện:
Mở file .asm bằng phần mềm trên
Chọn emulate trên thanh công cụ rồi chọn nút debug nằm cuối của cửa sổ vừa mở
ra
Chạy Single step để xem kết quả debug từng mã lệnh từ đầu đến cuối
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
3. Giải thích nội dung các thanh ghi, trên cơ sở đó giải thích cơ chế quản lý bộ nhớ
củahệ thống trong trường hợp cụ thể này.
Khi chương trình bắt đầu chạy, hệ điều hành tự động khởi tạo các thanh ghi, vùng
nhớ và cấp phát không gian địa chỉ cho chương trình.
Tương ứng với các câu lệnh trong mã nguồn, nội dung các thanh ghi có thể thay
đổi hoặc không.
o IP: Lưu địa chỉ của lệnh đang được thực thi trong phân đoạn mã . Sau khi
một lệnh được thực thi xong, giá trị của thanh ghi IP sẽ được tăng lên để trỏ
tới lệnh tiếp theo trong phân đoạn mã.
o DS: Lưu địa chỉ bắt đầu của phân đoạn dữ liệu. Các lệnh truy xuất dữ liệu
được thực hiện bằng cách sử dụng giá trị của thanh ghi DS để tính toán địa
chỉ của dữ liệu trong bộ nhớ.
o ES: Lưu địa chỉ bắt đầu của phân đoạn khác . Thanh ghi này thường được
sử dụng trong các thao tác truy xuất dữ liệu giữa các phân đoạn khác nhau.
o SS: Lưu địa chỉ bắt đầu của phân đoạn ngăn xếp stack. Đây là nơi lưu
trữ các giá trị bộ đệm khi thực hiện các lệnh như PUSH ,POP.
o CS: Lưu địa chỉ bắt đầu của phân đoạn mã . Các lệnh được thực thi đều
nằm trong phân đoạn mã này.
o BP: Được sử dụng để lưu trữ địa chỉ cơ sở của phân đoạn dữ liệu hoặc phân
đoạn ngăn xếp. Thường được sử dụng để truy xuất các biến cục bộ trong
một hàm.
lOMoARcPSD|37054152
Bài tập lớn KTMT
o SP: Được sử dụng để lưu trữ địa chỉ của đỉnh ngăn xếp. Thường được sử
dụng để thêm hoặc xóa các giá trị khỏi ngăn xếp bằng các lệnh PUSH và
POP.
Cơ chế quản lý bộ nhớ của của hệ thống được thông qua các lệnh xử lý dữ liệu,
bao gồm các lệnh di chuyển dữ liệu từ bộ nhớ đến thanh ghi và ngược lại. Ngoài
ra, hệ thống cũng sử dụng các thanh ghi để lưu trữ các địa chỉ bắt đầu và kết thúc
của các vùng nhớ được sử dụng trong các chương trình.
Khi một chương trình được thực hiện, các lệnh được đọc từ bộ nhớ và được xử lý
bởi bộ vi xử lý. Khi cần truy cập đến một vùng nhớ cụ thể, các lệnh xử lý dữ liệu
sẽ sử dụng các thanh ghi để lưu trữ địa chỉ bắt đầu và kết thúc của vùng nhớ đó.
Sau khi hoàn thành xử lý, kết quả sẽ được lưu trữ lại trong bộ nhớ hoặc trong các
thanh ghi khác tùy thuộc vào yêu cầu của chương trình.
lOMoARcPSD|37054152
Bài tập lớn KTMT
i.
lOMoARcPSD|37054152
Bài tập lớn KTMT
1.5. NGUYỄN ĐĂNG HUY : B21DCCN062
1.5.1. Bài số 1: Lập trình hợp ngữ Assembly
Câu 4: Viết chương trình hợp ngữ Assembly cho phép nhập 1 ký tự viết thường và in
ra màn hình chữ hoa của ký tự đó
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
Câu 9: Viết chương trình hợp Assembly cho phép nhập số nhị phân (8 bit) chứa vào
trong thanh ghi BL. Chương trình phải kiểm tra ký tự nhập có hợp lệ hay không (ký
tự “0” hoặc ký tự “1”). Việc nhập kết thúc khi nhấn # hoặc đủ 8 bit. Xuất ra số đã
nhập dưới dạng hệ lục thập phân (hệ 16)
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
Câu 14: Viết chương trình hợp ngữ Assembly cho phép nhập vào 2 số và in ra màn
hình ƯCLN BCNN của hai số đó
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
Câu 19: Viết chương trình hợp ngữ cho hai chuỗi ký tự A và B có độ dài là n và m (n
> m), chỉ ra xâu B có phải xâu con của xâu A không? Nếu xâu B là xâu con của xâu
A thì chỉ ra vị trí xâu B ở xâu A
Mã nguồn Asm8086
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
Giao diện hiển th
lOMoARcPSD|37054152
Bài tập lớn KTMT
1.5.2. Bài số 2: Thực hành phân tích khảo sát bộ nhớ:
1. Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng (Bộ
nhớtrong: ROM, RAM, Cache System, Bộ nhớ ngoài: ổ đĩa cứng, CD, Thiết bị vào
ra.)
Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng Sử dụng phần
mềm CPU-Z 64-bit v1.85.0x64:
CPU: I5-10210U (4 Core/ 8 Thread)
lOMoARcPSD|37054152
Bài tập lớn KTMT
Cache: 6 MB
RAM: 8 GB (Single Channel)
lOMoARcPSD|37054152
Bài tập lớn KTMT
ROM: 32 MB
Bộ nhớ ngoài: SSD 256 GB
2. Dùng công cụ Debug khảo sát nội dung các thanh ghi IP, DS, ES, SS, CS, BP,
SPCông cụ sử dụng: emu8086 microprocessor emulator Các bước thực hiện:
lOMoARcPSD|37054152
Bài tập lớn KTMT
Mở file .asm bằng phần mềm trên
Chọn emulate trên thanh công cụ rồi chọn nút debug nằm cuối của cửa sổ vừa mở
ra
Chạy Single step để xem kết quả debug từng mã lệnh từ đầu đến cuối
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
lOMoARcPSD|37054152
Bài tập lớn KTMT
3. Giải thích nội dung các thanh ghi, trên cơ sở đó giải thích cơ chế quản lý bộ nhớ của
hệ thống trong trường hợp cụ thể này.
Khi chương trình bắt đầu chạy, hệ điều hành tự động khởi tạo các thanh ghi, vùng
nhớ và cấp phát không gian địa chỉ cho chương trình.
Tương ứng với các câu lệnh trong mã nguồn, nội dung các thanh ghi có thể thay
đổi hoặc không.
o IP: Lưu địa chỉ của lệnh đang được thực thi trong phân đoạn mã . Sau khi
một lệnh được thực thi xong, giá trị của thanh ghi IP sẽ được tăng lên để trỏ
tới lệnh tiếp theo trong phân đoạn mã.
o DS: Lưu địa chỉ bắt đầu của phân đoạn dữ liệu. Các lệnh truy xuất dữ liệu
được thực hiện bằng cách sử dụng giá trị của thanh ghi DS để tính toán địa
chỉ của dữ liệu trong bộ nhớ.
o ES: Lưu địa chỉ bắt đầu của phân đoạn khác . Thanh ghi này thường được
sử dụng trong các thao tác truy xuất dữ liệu giữa các phân đoạn khác nhau.
o SS: Lưu địa chỉ bắt đầu của phân đoạn ngăn xếp stack. Đây là nơi lưu
trữ các giá trị bộ đệm khi thực hiện các lệnh như PUSH ,POP.
o CS: Lưu địa chỉ bắt đầu của phân đoạn mã . Các lệnh được thực thi đều
nằm trong phân đoạn mã này.
o BP: Được sử dụng để lưu trữ địa chỉ cơ sở của phân đoạn dữ liệu hoặc phân
đoạn ngăn xếp. Thường được sử dụng để truy xuất các biến cục bộ trong
một hàm.
lOMoARcPSD|37054152
Bài tập lớn KTMT
o SP: Được sử dụng để lưu trữ địa chỉ của đỉnh ngăn xếp. Thường được sử
dụng để thêm hoặc xóa các giá trị khỏi ngăn xếp bằng các lệnh PUSH và
POP.
Cơ chế quản lý bộ nhớ của của hệ thống được thông qua các lệnh xử lý dữ liệu,
bao gồm các lệnh di chuyển dữ liệu từ bộ nhớ đến thanh ghi và ngược lại. Ngoài
ra, hệ thống cũng sử dụng các thanh ghi để lưu trữ các địa chỉ bắt đầu và kết thúc
của các vùng nhớ được sử dụng trong các chương trình.
Khi một chương trình được thực hiện, các lệnh được đọc từ bộ nhớ và được xử lý
bởi bộ vi xử lý. Khi cần truy cập đến một vùng nhớ cụ thể, các lệnh xử lý dữ liệu
sẽ sử dụng các thanh ghi để lưu trữ địa chỉ bắt đầu và kết thúc của vùng nhớ đó.
Sau khi hoàn thành xử lý, kết quả sẽ được lưu trữ lại trong bộ nhớ hoặc trong các
thanh ghi khác tùy thuộc vào yêu cầu của chương trình.
| 1/93

Preview text:

lOMoARcPSD| 37054152 Bài tập lớn KTMT
PHẦN 1: PHẦN LÀM CÁ NHÂN
1.1. TRẦN ĐÌNH LÂM ANH : B21DCCN013
1.1.1. Bài số 1: Lập trình hợp ngữ Assembly
Câu 1: Viết chương trình hợp ngữ Assembly in ra lời chào Tiếng Anh và Tiếng Việt Mã nguồn Asm8086
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
Câu 6: Viết chương trình hợp ngữ Assembly chuyển một số từ hệ cơ số 10 sang hệ nhị phân Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị
Câu 11: Viết chương trình hợp ngữ Assembly tìm giá trị lớn nhất và nhỏ nhất của một mảng số Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
Câu 16: Viết chương trình hợp ngữ Assembly tính tổng 2 số kiểu word Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
1.1.2. Bài số 2: Thực hành phân tích khảo sát bộ nhớ:
1. Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng (Bộ nhớ trong:
ROM, RAM, Cache System, Bộ nhớ ngoài: ổ đĩa cứng, CD, Thiết bị vào ra.)
Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng Sử dụng phần
mềm CPU-Z 64-bit v1.85.0x64:
CPU: I5-13400F (10 Core/ 16 Thread) Cache: 20 MB lOMoARcPSD| 37054152 Bài tập lớn KTMT RAM: 64 GB (2x32GB) ROM: 32 MB lOMoARcPSD| 37054152 Bài tập lớn KTMT
Bộ nhớ ngoài: HDD 2TB – SSD 1TB
2. Dùng công cụ Debug khảo sát nội dung các thanh ghi IP, DS, ES, SS, CS, BP,
SPCông cụ sử dụng: emu8086 microprocessor emulator Các bước thực hiện:
● Mở file .asm bằng phần mềm trên
● Chọn emulate trên thanh công cụ rồi chọn nút debug nằm cuối của cửa sổ vừa mở ra
● Chạy Single step để xem kết quả debug từng mã lệnh từ đầu đến cuối lOMoARcPSD| 37054152 Bài tập lớn KTMT
3. Giải thích nội dung các thanh ghi, trên cơ sở đó giải thích cơ chế quản lý bộ nhớ
củahệ thống trong trường hợp cụ thể này.
● Khi chương trình bắt đầu chạy, hệ điều hành tự động khởi tạo các thanh ghi, vùng
nhớ và cấp phát không gian địa chỉ cho chương trình.
● Tương ứng với các câu lệnh trong mã nguồn, nội dung các thanh ghi có thể thay đổi hoặc không.
o IP: Lưu địa chỉ của lệnh đang được thực thi trong phân đoạn mã . Sau khi
một lệnh được thực thi xong, giá trị của thanh ghi IP sẽ được tăng lên để trỏ
tới lệnh tiếp theo trong phân đoạn mã.
o DS: Lưu địa chỉ bắt đầu của phân đoạn dữ liệu. Các lệnh truy xuất dữ liệu
được thực hiện bằng cách sử dụng giá trị của thanh ghi DS để tính toán địa
chỉ của dữ liệu trong bộ nhớ.
o ES: Lưu địa chỉ bắt đầu của phân đoạn khác . Thanh ghi này thường được
sử dụng trong các thao tác truy xuất dữ liệu giữa các phân đoạn khác nhau.
o SS: Lưu địa chỉ bắt đầu của phân đoạn ngăn xếp stack. Đây là nơi lưu
trữ các giá trị bộ đệm khi thực hiện các lệnh như PUSH ,POP.
o CS: Lưu địa chỉ bắt đầu của phân đoạn mã . Các lệnh được thực thi đều
nằm trong phân đoạn mã này.
1.2. NGUYỄN VIỆT KHIÊM : B21DCCN468
1.2.1. Bài số 1: Lập trình hợp ngữ Assembly
Câu 2: Viết chương trình hợp ngữ Assembly nhập 1 ký tự và in ra màn hình ký tự đó Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
Câu 7: Viết chương trình hợp ngữ Assembly chuyển một số từ hệ cơ số 10 sang hệ nhị phân Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
Câu 12: Viết chương trình hợp ngữ Assembly cho phép nhập vào một số và in ra
màn hình giai thừa của số đó Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
Câu 17: Viết chương trình hợp ngữ Assembly cho phép nhập vào một mảng gồm 10
số có hai chữ số. Tính tổng các số chia hết cho 7. In tổng thu được ra màn hình dưới dạng thập phân Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
1.2.2. Bài số 2: Thực hành phân tích khảo sát bộ nhớ:
1. Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng (Bộ
nhớtrong: ROM, RAM, Cache System, Bộ nhớ ngoài: ổ đĩa cứng, CD, Thiết bị vào ra.)
Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng Sử dụng phần
mềm CPU-Z 64-bit v1.85.0x64:
CPU: I5-11400H (6 Core/ 12 Thread) lOMoARcPSD| 37054152 Bài tập lớn KTMT Cache: 12 MB
RAM: 16 GB (8GB x 2 Dual Channel) lOMoARcPSD| 37054152 Bài tập lớn KTMT ROM: 32 MB Bộ nhớ ngoài: SSD 512GB lOMoARcPSD| 37054152 Bài tập lớn KTMT
2. Dùng công cụ Debug khảo sát nội dung các thanh ghi IP, DS, ES, SS, CS, BP,
SPCông cụ sử dụng: emu8086 microprocessor emulator Các bước thực hiện:
● Mở file .asm bằng phần mềm trên
● Chọn emulate trên thanh công cụ rồi chọn nút debug nằm cuối của cửa sổ vừa mở ra
● Chạy Single step để xem kết quả debug từng mã lệnh từ đầu đến cuối lOMoARcPSD| 37054152 Bài tập lớn KTMT
3. Giải thích nội dung các thanh ghi, trên cơ sở đó giải thích cơ chế quản lý bộ nhớ
của hệ thống trong trường hợp cụ thể này.
● Khi chương trình bắt đầu chạy, hệ điều hành tự động khởi tạo các thanh ghi, vùng
nhớ và cấp phát không gian địa chỉ cho chương trình.
● Tương ứng với các câu lệnh trong mã nguồn, nội dung các thanh ghi có thể thay đổi hoặc không.
o IP: Lưu địa chỉ của lệnh đang được thực thi trong phân đoạn mã . Sau khi
một lệnh được thực thi xong, giá trị của thanh ghi IP sẽ được tăng lên để trỏ
tới lệnh tiếp theo trong phân đoạn mã. lOMoARcPSD| 37054152 Bài tập lớn KTMT
o DS: Lưu địa chỉ bắt đầu của phân đoạn dữ liệu. Các lệnh truy xuất dữ liệu
được thực hiện bằng cách sử dụng giá trị của thanh ghi DS để tính toán địa
chỉ của dữ liệu trong bộ nhớ.
o ES: Lưu địa chỉ bắt đầu của phân đoạn khác . Thanh ghi này thường được
sử dụng trong các thao tác truy xuất dữ liệu giữa các phân đoạn khác nhau.
o SS: Lưu địa chỉ bắt đầu của phân đoạn ngăn xếp stack. Đây là nơi lưu
trữ các giá trị bộ đệm khi thực hiện các lệnh như PUSH ,POP.
o CS: Lưu địa chỉ bắt đầu của phân đoạn mã . Các lệnh được thực thi đều
nằm trong phân đoạn mã này.
o BP: Được sử dụng để lưu trữ địa chỉ cơ sở của phân đoạn dữ liệu hoặc phân
đoạn ngăn xếp. Thường được sử dụng để truy xuất các biến cục bộ trong một hàm.
o SP: Được sử dụng để lưu trữ địa chỉ của đỉnh ngăn xếp. Thường được sử
dụng để thêm hoặc xóa các giá trị khỏi ngăn xếp bằng các lệnh PUSH và POP.
● Cơ chế quản lý bộ nhớ của của hệ thống được thông qua các lệnh xử lý dữ liệu,
bao gồm các lệnh di chuyển dữ liệu từ bộ nhớ đến thanh ghi và ngược lại. Ngoài
ra, hệ thống cũng sử dụng các thanh ghi để lưu trữ các địa chỉ bắt đầu và kết thúc
của các vùng nhớ được sử dụng trong các chương trình.
● Khi một chương trình được thực hiện, các lệnh được đọc từ bộ nhớ và được xử lý
bởi bộ vi xử lý. Khi cần truy cập đến một vùng nhớ cụ thể, các lệnh xử lý dữ liệu
sẽ sử dụng các thanh ghi để lưu trữ địa chỉ bắt đầu và kết thúc của vùng nhớ đó.
Sau khi hoàn thành xử lý, kết quả sẽ được lưu trữ lại trong bộ nhớ hoặc trong các
thanh ghi khác tùy thuộc vào yêu cầu của chương trình.
1.3. NGUYỄN THỊ LAN : B21DCCN818
1.3.1. Bài số 1: Lập trình hợp ngữ Assembly
Câu 5: Viết chương trình hợp ngữ Assembly cho phép nhập 1 chuỗi ký tự và in ra
màn hình chuỗi ký tự đó theo dạng viết hoa và viết thường Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị
Câu 10: Viết chương trình hợp ngữ Assembly yêu cầu đếm chiều dài của một chuỗi ký tự cho trước Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
Câu 15: Viết chương trình hợp ngữ Assembly cho phép in ra số lượng các số chia
hết cho 11 và tính tổng các số đó từ mảng cho trước Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
Câu 20: Viết chương trình hợp ngữ Assembly cho hai chuỗi ký tự A và B có độ dài
là n (n>m), chỉ ra xâu A chứa mấy xâu B Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị
1.3.2. Bài số 2: Thực hành phân tích khảo sát bộ nhớ: lOMoARcPSD| 37054152 Bài tập lớn KTMT
1. Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng (Bộ
nhớtrong: ROM, RAM, Cache System, Bộ nhớ ngoài: ổ đĩa cứng, CD, Thiết bị vào
ra.)
Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng Sử dụng
phần mềm CPU-Z 64-bit v1.85.0x64:
CPU: I5-11300H (4 Core/ 8 Thread) Cache: 8 MB RAM: 8 GB lOMoARcPSD| 37054152 Bài tập lớn KTMT ROM: 32 MB lOMoARcPSD| 37054152 Bài tập lớn KTMT Bộ nhớ ngoài: SSD 512GB
2. Dùng công cụ Debug khảo sát nội dung các thanh ghi IP, DS, ES, SS, CS, BP,
SPCông cụ sử dụng: emu8086 microprocessor emulator Các bước thực hiện:
● Mở file .asm bằng phần mềm trên
● Chọn emulate trên thanh công cụ rồi chọn nút debug nằm cuối của cửa sổ vừa mở ra
● Chạy Single step để xem kết quả debug từng mã lệnh từ đầu đến cuối lOMoARcPSD| 37054152 Bài tập lớn KTMT
3. Giải thích nội dung các thanh ghi, trên cơ sở đó giải thích cơ chế quản lý bộ nhớ
của hệ thống trong trường hợp cụ thể này.
● Khi chương trình bắt đầu chạy, hệ điều hành tự động khởi tạo các thanh ghi, vùng
nhớ và cấp phát không gian địa chỉ cho chương trình.
● Tương ứng với các câu lệnh trong mã nguồn, nội dung các thanh ghi có thể thay đổi hoặc không. lOMoARcPSD| 37054152 Bài tập lớn KTMT
o IP: Lưu địa chỉ của lệnh đang được thực thi trong phân đoạn mã . Sau khi
một lệnh được thực thi xong, giá trị của thanh ghi IP sẽ được tăng lên để trỏ
tới lệnh tiếp theo trong phân đoạn mã.
o DS: Lưu địa chỉ bắt đầu của phân đoạn dữ liệu. Các lệnh truy xuất dữ liệu
được thực hiện bằng cách sử dụng giá trị của thanh ghi DS để tính toán địa
chỉ của dữ liệu trong bộ nhớ.
o ES: Lưu địa chỉ bắt đầu của phân đoạn khác . Thanh ghi này thường được
sử dụng trong các thao tác truy xuất dữ liệu giữa các phân đoạn khác nhau.
o SS: Lưu địa chỉ bắt đầu của phân đoạn ngăn xếp stack. Đây là nơi lưu
trữ các giá trị bộ đệm khi thực hiện các lệnh như PUSH ,POP.
o CS: Lưu địa chỉ bắt đầu của phân đoạn mã . Các lệnh được thực thi đều
nằm trong phân đoạn mã này.
o BP: Được sử dụng để lưu trữ địa chỉ cơ sở của phân đoạn dữ liệu hoặc phân
đoạn ngăn xếp. Thường được sử dụng để truy xuất các biến cục bộ trong một hàm.
o SP: Được sử dụng để lưu trữ địa chỉ của đỉnh ngăn xếp. Thường được sử
dụng để thêm hoặc xóa các giá trị khỏi ngăn xếp bằng các lệnh PUSH và POP.
● Cơ chế quản lý bộ nhớ của của hệ thống được thông qua các lệnh xử lý dữ liệu,
bao gồm các lệnh di chuyển dữ liệu từ bộ nhớ đến thanh ghi và ngược lại. Ngoài
ra, hệ thống cũng sử dụng các thanh ghi để lưu trữ các địa chỉ bắt đầu và kết thúc
của các vùng nhớ được sử dụng trong các chương trình.
● Khi một chương trình được thực hiện, các lệnh được đọc từ bộ nhớ và được xử lý
bởi bộ vi xử lý. Khi cần truy cập đến một vùng nhớ cụ thể, các lệnh xử lý dữ liệu
sẽ sử dụng các thanh ghi để lưu trữ địa chỉ bắt đầu và kết thúc của vùng nhớ đó.
Sau khi hoàn thành xử lý, kết quả sẽ được lưu trữ lại trong bộ nhớ hoặc trong các
thanh ghi khác tùy thuộc vào yêu cầu của chương trình.
1.4. TRƯƠNG CÔNG TUẤN THÀNH : B21DCCN681
1.4.1. Bài số 1: Lập trình hợp ngữ Assembly
Câu 3: Viết chương trình hợp ngữ Assembly cho phép nhập 1 chuỗi ký tự và in ra
màn hình chuỗi ký tự đó Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị
Câu 8: Viết chương trình hợp ngữ Assembly chuyển một số từ hệ cơ số 10 sang hệ cơ số 16 (Hexa) Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị
Câu 13: Viết chương trình hợp ngữ Assembly cho phép nhập vào các cơ số và in ra
màn hình tổng của các số đó Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
Câu 18: Viết chương trình hợp ngữ Assembly đếm số lần xuất hiện của chuỗi con
“ktmt” trong một chuỗi. In ra kết quả dưới dạng số thập phân Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
1.4.2. Bài số 2: Thực hành phân tích khảo sát bộ nhớ:
1. Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng (Bộ nhớ trong:
ROM, RAM, Cache System, Bộ nhớ ngoài: ổ đĩa cứng, CD, Thiết bị vào ra.)
Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng Sử dụng phần
mềm CPU-Z 64-bit v1.85.0x64:
CPU: I5-6300U (2 Core/ 4 Thread) lOMoARcPSD| 37054152 Bài tập lớn KTMT Cache: 3 Mb RAM: 12 GB lOMoARcPSD| 37054152 Bài tập lớn KTMT ROM: 16 Mb Bộ nhớ ngoài: - 256GB SSD lOMoARcPSD| 37054152 Bài tập lớn KTMT
2. Dùng công cụ Debug khảo sát nội dung các thanh ghi IP, DS, ES, SS, CS, BP,
SPCông cụ sử dụng: emu8086 microprocessor emulator Các bước thực hiện:
● Mở file .asm bằng phần mềm trên
● Chọn emulate trên thanh công cụ rồi chọn nút debug nằm cuối của cửa sổ vừa mở ra
● Chạy Single step để xem kết quả debug từng mã lệnh từ đầu đến cuối lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
3. Giải thích nội dung các thanh ghi, trên cơ sở đó giải thích cơ chế quản lý bộ nhớ
củahệ thống trong trường hợp cụ thể này.
● Khi chương trình bắt đầu chạy, hệ điều hành tự động khởi tạo các thanh ghi, vùng
nhớ và cấp phát không gian địa chỉ cho chương trình.
● Tương ứng với các câu lệnh trong mã nguồn, nội dung các thanh ghi có thể thay đổi hoặc không.
o IP: Lưu địa chỉ của lệnh đang được thực thi trong phân đoạn mã . Sau khi
một lệnh được thực thi xong, giá trị của thanh ghi IP sẽ được tăng lên để trỏ
tới lệnh tiếp theo trong phân đoạn mã.
o DS: Lưu địa chỉ bắt đầu của phân đoạn dữ liệu. Các lệnh truy xuất dữ liệu
được thực hiện bằng cách sử dụng giá trị của thanh ghi DS để tính toán địa
chỉ của dữ liệu trong bộ nhớ.
o ES: Lưu địa chỉ bắt đầu của phân đoạn khác . Thanh ghi này thường được
sử dụng trong các thao tác truy xuất dữ liệu giữa các phân đoạn khác nhau.
o SS: Lưu địa chỉ bắt đầu của phân đoạn ngăn xếp stack. Đây là nơi lưu
trữ các giá trị bộ đệm khi thực hiện các lệnh như PUSH ,POP.
o CS: Lưu địa chỉ bắt đầu của phân đoạn mã . Các lệnh được thực thi đều
nằm trong phân đoạn mã này.
o BP: Được sử dụng để lưu trữ địa chỉ cơ sở của phân đoạn dữ liệu hoặc phân
đoạn ngăn xếp. Thường được sử dụng để truy xuất các biến cục bộ trong một hàm. lOMoARcPSD| 37054152 Bài tập lớn KTMT
o SP: Được sử dụng để lưu trữ địa chỉ của đỉnh ngăn xếp. Thường được sử
dụng để thêm hoặc xóa các giá trị khỏi ngăn xếp bằng các lệnh PUSH và POP.
● Cơ chế quản lý bộ nhớ của của hệ thống được thông qua các lệnh xử lý dữ liệu,
bao gồm các lệnh di chuyển dữ liệu từ bộ nhớ đến thanh ghi và ngược lại. Ngoài
ra, hệ thống cũng sử dụng các thanh ghi để lưu trữ các địa chỉ bắt đầu và kết thúc
của các vùng nhớ được sử dụng trong các chương trình.
● Khi một chương trình được thực hiện, các lệnh được đọc từ bộ nhớ và được xử lý
bởi bộ vi xử lý. Khi cần truy cập đến một vùng nhớ cụ thể, các lệnh xử lý dữ liệu
sẽ sử dụng các thanh ghi để lưu trữ địa chỉ bắt đầu và kết thúc của vùng nhớ đó.
Sau khi hoàn thành xử lý, kết quả sẽ được lưu trữ lại trong bộ nhớ hoặc trong các
thanh ghi khác tùy thuộc vào yêu cầu của chương trình. lOMoARcPSD| 37054152 Bài tập lớn KTMT i. lOMoARcPSD| 37054152 Bài tập lớn KTMT
1.5. NGUYỄN ĐĂNG HUY : B21DCCN062
1.5.1. Bài số 1: Lập trình hợp ngữ Assembly
Câu 4: Viết chương trình hợp ngữ Assembly cho phép nhập 1 ký tự viết thường và in
ra màn hình chữ hoa của ký tự đó Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
Câu 9: Viết chương trình hợp Assembly cho phép nhập số nhị phân (8 bit) chứa vào
trong thanh ghi BL. Chương trình phải kiểm tra ký tự nhập có hợp lệ hay không (ký
tự “0” hoặc ký tự “1”). Việc nhập kết thúc khi nhấn # hoặc đủ 8 bit. Xuất ra số đã
nhập dưới dạng hệ lục thập phân (hệ 16)
Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
Câu 14: Viết chương trình hợp ngữ Assembly cho phép nhập vào 2 số và in ra màn
hình ƯCLN BCNN của hai số đó Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
Câu 19: Viết chương trình hợp ngữ cho hai chuỗi ký tự A và B có độ dài là n và m (n
> m), chỉ ra xâu B có phải xâu con của xâu A không? Nếu xâu B là xâu con của xâu
A thì chỉ ra vị trí xâu B ở xâu A Mã nguồn Asm8086 lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
Giao diện hiển thị lOMoARcPSD| 37054152 Bài tập lớn KTMT
1.5.2. Bài số 2: Thực hành phân tích khảo sát bộ nhớ:
1. Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng (Bộ
nhớtrong: ROM, RAM, Cache System, Bộ nhớ ngoài: ổ đĩa cứng, CD, Thiết bị vào ra.)
Khảo sát cấu hình của máy và hệ thống bộ nhớ của máy đang sử dụng Sử dụng phần
mềm CPU-Z 64-bit v1.85.0x64:
CPU: I5-10210U (4 Core/ 8 Thread) lOMoARcPSD| 37054152 Bài tập lớn KTMT Cache: 6 MB RAM: 8 GB (Single Channel) lOMoARcPSD| 37054152 Bài tập lớn KTMT ROM: 32 MB Bộ nhớ ngoài: SSD 256 GB
2. Dùng công cụ Debug khảo sát nội dung các thanh ghi IP, DS, ES, SS, CS, BP,
SPCông cụ sử dụng: emu8086 microprocessor emulator Các bước thực hiện: lOMoARcPSD| 37054152 Bài tập lớn KTMT
● Mở file .asm bằng phần mềm trên
● Chọn emulate trên thanh công cụ rồi chọn nút debug nằm cuối của cửa sổ vừa mở ra
● Chạy Single step để xem kết quả debug từng mã lệnh từ đầu đến cuối lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT lOMoARcPSD| 37054152 Bài tập lớn KTMT
3. Giải thích nội dung các thanh ghi, trên cơ sở đó giải thích cơ chế quản lý bộ nhớ của
hệ thống trong trường hợp cụ thể này.
● Khi chương trình bắt đầu chạy, hệ điều hành tự động khởi tạo các thanh ghi, vùng
nhớ và cấp phát không gian địa chỉ cho chương trình.
● Tương ứng với các câu lệnh trong mã nguồn, nội dung các thanh ghi có thể thay đổi hoặc không.
o IP: Lưu địa chỉ của lệnh đang được thực thi trong phân đoạn mã . Sau khi
một lệnh được thực thi xong, giá trị của thanh ghi IP sẽ được tăng lên để trỏ
tới lệnh tiếp theo trong phân đoạn mã.
o DS: Lưu địa chỉ bắt đầu của phân đoạn dữ liệu. Các lệnh truy xuất dữ liệu
được thực hiện bằng cách sử dụng giá trị của thanh ghi DS để tính toán địa
chỉ của dữ liệu trong bộ nhớ.
o ES: Lưu địa chỉ bắt đầu của phân đoạn khác . Thanh ghi này thường được
sử dụng trong các thao tác truy xuất dữ liệu giữa các phân đoạn khác nhau.
o SS: Lưu địa chỉ bắt đầu của phân đoạn ngăn xếp stack. Đây là nơi lưu
trữ các giá trị bộ đệm khi thực hiện các lệnh như PUSH ,POP.
o CS: Lưu địa chỉ bắt đầu của phân đoạn mã . Các lệnh được thực thi đều
nằm trong phân đoạn mã này.
o BP: Được sử dụng để lưu trữ địa chỉ cơ sở của phân đoạn dữ liệu hoặc phân
đoạn ngăn xếp. Thường được sử dụng để truy xuất các biến cục bộ trong một hàm. lOMoARcPSD| 37054152 Bài tập lớn KTMT
o SP: Được sử dụng để lưu trữ địa chỉ của đỉnh ngăn xếp. Thường được sử
dụng để thêm hoặc xóa các giá trị khỏi ngăn xếp bằng các lệnh PUSH và POP.
● Cơ chế quản lý bộ nhớ của của hệ thống được thông qua các lệnh xử lý dữ liệu,
bao gồm các lệnh di chuyển dữ liệu từ bộ nhớ đến thanh ghi và ngược lại. Ngoài
ra, hệ thống cũng sử dụng các thanh ghi để lưu trữ các địa chỉ bắt đầu và kết thúc
của các vùng nhớ được sử dụng trong các chương trình.
● Khi một chương trình được thực hiện, các lệnh được đọc từ bộ nhớ và được xử lý
bởi bộ vi xử lý. Khi cần truy cập đến một vùng nhớ cụ thể, các lệnh xử lý dữ liệu
sẽ sử dụng các thanh ghi để lưu trữ địa chỉ bắt đầu và kết thúc của vùng nhớ đó.
Sau khi hoàn thành xử lý, kết quả sẽ được lưu trữ lại trong bộ nhớ hoặc trong các
thanh ghi khác tùy thuộc vào yêu cầu của chương trình.