Bài tập thực hành môn hệ dieu hanh năm 2024

BÀI THỰC HÀNH 1 1. Chuẩn đầu ra. Sử dụng DEBUG. Sử dụng Assembly trong Debug. Xem thông tin về cấu hình hệ thống, thiết bị máy tính. Tạo ra File thực thi dạng *.COM

2. Chuẩn bị.    

Đọc Chương 1 . Lập trình hệ thống. Cấu trúc chương trình nguồn ASM dịch thành File *.COM Chương trình sử dụng 1 phân đoạn và mã lệnh bắt đầu tại địa chỉ 100h của phân đoạn (Ôn lại kiến thức này từ môn CTMT&HN) Tập lệnh ASM16. (Ôn lại kiến thức này từ môn CTMT&HN) Cấu trúc thanh ghi của CPU 8086/88.

4 Kiến thức bổ trợ 

Hướng dẫn sử dụng DEBUG. assemble compare dump enter fill go hex input

A [address] C range address D [range] E address [list] F range list G [=address] [addresses] H value1 value2 I port

Trang 1

BÀI THỰC HÀNH HỆ ĐIỀU HÀNH 1 load L [address] [drive] [firstsector] [number] move M range address name N [pathname] [arglist] output O port byte proceed P [=address] [number] quit Q register R [register] search S range list trace T [=address] [value] unassemble U [range] write W [address] [drive] [firstsector] [number] allocate expanded memory XA [

pages] deallocate expanded memory XD [handle] map expanded memory pages XM [Lpage] [Ppage] [handle] display expanded memory status XS Tổ chức bộ nhớ của MS DOS.

Trang 2

BÀI THỰC HÀNH HỆ ĐIỀU HÀNH 1

Int 21h.  Nhập 1 ký tự : Inp.: AH = 01h Return: AL = character read 

In 1 ký tự : Inp.: AH = 02h DL = character to write Return: AL = last character output.

Nhập 1 chuỗi ký tự : Inp.: Trang 3

BÀI THỰC HÀNH HỆ ĐIỀU HÀNH 1 AH = 0Ah DS:DX -> buffer. Cấu trúc Buffer : Offset Size Description 00h BYTE maximum characters buffer can hold 01h BYTE (call) number of chars from last input which may be recalled (ret) number of characters actually read, excluding CR 02h N BYTEs actual characters read, including the final carriage return Return: buffer filled with user input 

In 1 chuỗi ký tự : Inp.: AH = 09h DS:DX -> '$'-terminated string Return: AL = 24h (the '$' terminating the string, despite official docs which state that nothing is returned) (at least DOS 2.1-7.0 and NWDOS) Lệnh ASM16. MOV Dec,Res Kết thúc chương trình *.COM Int 21h; AX=4c00h Int 20h Bảng dữ liệu tại địa chỉ 0:0410. MEM 0040h:0010h - INSTALLED HARDWARE Size: WORD Bitfields for BIOS-detected installed hardware: Bit(s) Description (Table M0006) 15-14 number of parallel devices 00 or 11 sometimes used to indicate four LPT ports 13 (Convertible, PS/2-55LS) internal modem 12 game port installed 11-9 number of serial devices 000 or 111 sometimes used to indicate eight COM ports 8 reserved 7-6 number of floppy disk drives (minus 1) 5-4 initial video mode 00 EGA,VGA,PGA, or other with on-board video BIOS 01 40x25 CGA color 10 80x25 CGA color 11 80x25 mono text 3-2 (PC only) RAM on motherboard 00 = 16K, 01 = 32K, 10 = 48K, 11 = 64K (some XTs) RAM on motherboard 00 = 64K, 01 = 128K, 10 = 192K, 11 = 256K 2 (pre-PS/2 except PC) reserved (PS/2, some XT clones, newer BIOSes) pointing device installed 1 math coprocessor installed 0 floppy disk drives are installed booted from floppy

3 Phương tiện Trang 4

BÀI THỰC HÀNH HỆ ĐIỀU HÀNH 1 Máy tính cài đặt Windows XP 32bit Máy tính cài đặt Windows 7 32bit. Microsost PC Virtual 2007 cài đặt MS DOS 6.22

5 Thời lượng: 5 tiết 6 Nội dung thực hành Bài thực hành có hướng dẫn : 6.1 Thiết lập môi trường DEBUG. 6.2 Xem nội dung Interrupt Vector. 6.3 Xem code dạng Assembly của Int 13h. 6.4 Xem danh sách thiết bị hiện có của máy tính. 6.5 Xem nội dung bộ nhớ màn hình. 6.6 Xem nội dung ROM BIOS. 6.7 Nhập dữ liệu tại địa chỉ 200h và xem lại dữ liệu nhập. 6.8 Nạp file bắt đầu tại địa chỉ 100h và xem nội dung file. 6.9 Tạo chương trình nhập 1 ký tự. 6.10 Tạo chương trình in 1 chuỗi. Bài thực hành tự thực hiện. 6.11 Xem code dạng Assembly của Int 10h. 6.12 Thay nội dung và thuộc tính tại ô (5,5). 6.13 Nhập dữ liệu tại địa chỉ 150h và xem lại dữ liệu nhập. 6.14 Tạo chương trình in ký tự A ra màn hình. 6.15 Tạo chương trình nhập 1 chuỗi.

6.1 Thiết lập môi trường DEBUG. 6.1.1 Mô tả. Thiết lập mode 80x25 cho cửa sổ MS DOS. Thực hiện lệnh DEBUG. 6.1.2 Thực hiện. Run → cmd System Menu → Properties →Layout Screen Buffer Size : 80x25 Window Size : 80x25 Khởi động lại cmd. Thực hiện lệnh DEBUG trong cửa sổ MS DOS. Xem hướng dẫn sử dụng lệnh : ? Thoát môi trường DEBUG : q

6.2 Xem nội dung Interrupt Vector. 6.2.1 Mô tả. Xem dữ liệu trong phạm vi địa chỉ 0:0 → 0:03ff 6.2.2 Thực hiện. DEBUG. D 0:0 Thực hiện lệnh D không tham số để xem các trang tiếp theo.

6.3 Xem code dạng Assembly Int 13h. 6.3.1 Mô tả. Hiện ra code Int 13h dạng Assembly. Trang 5

BÀI THỰC HÀNH HỆ ĐIỀU HÀNH 1 6.3.2 Thực hiện. Tính vị trí bắt đầu chứa địa chỉ Int 13h trong Interrupt Vector : 13hx4 = 4ch DEBUG. D 0:0 Tìm địa chỉ Int 13h off_Int13h = [4dh][4ch] seg_Int13h = [4fh][4eh] U seg_Int13h:off_Int13h

6.4 Xem danh sách thiết bị hiện có của máy tính. 6.4.1 Mô tả. Xác định các thiết bị chuẩn hiện có trong máy tính. 6.4.2 Thực hiện. DEBUG. D 0:0410 So sánh nội dung tại địa chỉ [411][410] với bảng dữ liệu tại địa chỉ 0:0410.

6.5 Xem nội dung bộ nhớ màn hình. 6.5.1 Mô tả. Xem ký tự và thuộc tính của từng ô trên màn hình 80x25. Thay đổi nội dung và màu tại ô bất kỳ (0,6). 6.5.2 Thực hiện. DEBUG. D B800:0 Quan sát mã ASCII và byte thuộc tính (dạng HEX, DEC) của từng ô trên màn hình. (0,6) : Byte ký tự có địa chỉ là 12(0ch), thuộc tính là 13(0dh). e b800:000c nhập mã ASCII ký tự mới. e b800:000d nhập thuộc tính mới.

6.6 Xem nội dung ROM BIOS. 6.6.1 Mô tả. Xem nội dung ROM BIOS. Ngày tháng năm sản xuất ROM BIOS. 6.6.2 Thực hiện. DEBUG. D FFFF:0 Quan sát mã ASCII (dạng HEX, DEC) bắt đầu tại địa chỉ FFFF:0005.

6.7 Nhập dữ liệu tại địa chỉ 200h và xem lại dữ liệu nhập. 6.7.1 Mô tả. Nhâp dữ liệu (tùy chọn). Xem lại dữ liệu đã nhập. 6.7.2 Thực hiện. DEBUG. E 200 “Dữ liệu nhập tùy chọn” D 200

6.8 Nạp file bắt đầu tại địa chỉ 100h và xem nội dung file. 6.8.1 Mô tả. Load file văn bản (soạn bằng NotePad) và xem nội dung. Trang 6

BÀI THỰC HÀNH HỆ ĐIỀU HÀNH 1 Load file thực thi và xem code dạng Assembly. 6.8.2 Thực hiện. Tạo file văn bản bằng NotePad : D:\vanban.txt Chuẩn bị sẳn file thực thi D:\vd1.com DEBUG. N D:\vanban.txt L 100 D 100 N D:\vd1.com L 100 U 100

6.9 Tạo chương trình nhập 1 ký tự. 6.9.1 Mô tả. Viết chương trình bằng Assembly trong DEBUG cho phép nhập 1 ký tự. Lưu lại thành file .COM Thực thi trong MS DOS Nạp lại chương trình trong DEBUG. Xem lại code của chương trình. 6.9.2 Thực hiện. DEBUG Soạn chương trình : A 100 mov ah,1 int 21 int 20 Thực thi từng lệnh và quan sát dữ liệu trong các thanh ghi (có thể bỏ qua bước này). R IP (Nếu địa chỉ của IP khác 100 thì sửa lại là 100) P (mỗi lệnh P thực hiện 1 lệnh trong chương trình) Thực thi chương trình 1 lần. R IP (Nếu địa chỉ của IP khác 100 thì sửa lại là 100) G Lưu lại chương trình thành file .COM Tính độ dài chương trình : H đ/c kết thúc CT 100 Nạp độ dài vào thanh ghi CX : R CX (nhập độ dài CT) Đặt tên chương trình : N Ghi lại chương trình : W Thoát DEBUG. Thực thi chương trinh trong MS DOS : trong MS DOC nhập tên chương trình. Nạp và xem lại code : xem mục 6.8

6.10 Tạo chương trình in 1 chuỗi. 6.10.1 Mô tả. Viết chương trình bằng Assembly trong DEBUG cho phép in 1 chuỗi. Lưu lại thành file .COM Thực thi trong MS DOS Nạp lại chương trình trong DEBUG. Xem lại code của chương trình. 6.10.2 Thực hiện. DEBUG Trang 7

BÀI THỰC HÀNH HỆ ĐIỀU HÀNH 1 Soạn chương trình : A 100 mov ah,9 mov dx,200 int 21 int 20 Nhập chuỗi để in. E 200 “Truong SPKT $” Thực thi từng lệnh và quan sát dữ liệu trong các thanh ghi (có thể bỏ qua bước này). R IP (Nếu địa chỉ của IP khác 100 thì sửa lại là 100) P (mỗi lệnh P thực hiện 1 lệnh trong chương trình) Thực thi chương trình 1 lần. R IP (Nếu địa chỉ của IP khác 100 thì sửa lại là 100) G Lưu lại chương trình thành file .COM Tính độ dài chương trình : H đ/c kết thúc CT(kể cả dữ liệu nhập) 100 Nạp độ dài vào thanh ghi CX : R CX (nhập độ dài CT) Đặt tên chương trình : N Ghi lại chương trình : W Thoát DEBUG. Thực thi chương trinh trong MS DOS : trong MS DOC nhập tên chương trình. Nạp và xem lại code : xem mục 6.8

6.11 Xem code dạng Assembly của Int 10h. 6.11.1 Mô tả. Hiện ra code Int 10h dạng Assembly. 6.11.2 Thực hiện. Xem lại bài 6.3

6.12 Thay nội dung và thuộc tính tại ô (5,5). 6.12.1 Mô tả. Thay đổi nội dung và màu tại ô bất kỳ (5,5). 6.12.2 Thực hiện. Xem phần cuối bài 6.5

6.13 Nhập dữ liệu tại địa chỉ 150h và xem lại dữ liệu nhập. 6.13.1 Mô tả. Nhâp dữ liệu (tùy chọn) tại địa chỉ 150h. Xem lại dữ liệu đã nhập. 6.13.2 Thực hiện. Xem bài 6.7

6.14 Tạo chương trình in ký tự A ra màn hình. 6.14.1 Mô tả. Viết chương trình bằng Assembly trong DEBUG cho phép in1 ký tự. Lưu lại thành file .COM Thực thi trong MS DOS Nạp lại chương trình trong DEBUG. Xem lại code của chương trình. 6.14.2 Thực hiện. Trang 8

BÀI THỰC HÀNH HỆ ĐIỀU HÀNH 1 Tham khảo bài 6.9 In 1 ký tự bằng Int 21h AH=2 DL=mã ASCII ký tự cần in (dạng HEX)

6.15 Tạo chương trình nhập 1 chuỗi. 6.15.1 Mô tả. Viết chương trình bằng Assembly trong DEBUG cho phép nhập 1 chuỗi. Lưu lại thành file .COM Thực thi trong MS DOS Nạp lại chương trình trong DEBUG. Xem lại code của chương trình. 6.15.2 Thực hiện. Tham khảo bài 6.10 Nhập 1 chuỗi bằng Int 21h AH=0a Dx=địa chỉ chứa chuỗi.