Hướ ng ng dẫn sử dụng Emu8086 và RadASM
1
Hướ ng ng Dẫn Sử Dụng Emu8086 Emu8086 là công c ụ mạnh của ngườ i lậ p trình Hợ p ngữ. Bao gồm nhiều chức năng như: thực thi chươ ng ng trình dạng EXE (EXE Template), thực thi chươ ng ng trình dạng COM (COM Template, Thực thi đoạn lệnh hợ p ngữ (BIN Template), tạo đoạn Boot máy (BOOT Template). Trong phần hướ ng ng dẫn này chỉ hướ ng ng dẫn cho sinh viên cách s ử dụng công cụ Emu8086 để khảo sát lệnh Intel-8086, BIN Template (các chứ c năng khác, sinh viên t ự ự tìm hiể u thêm thông qua ph ần Help của công c ụ ). Công cụ này giúp sinh viên th ấy đượ c s ự thay đổi giá tr ị các thanh ghi, c ờ , ngăn xế p, vùng nh ớ … sau khi thực hi ện lệnh. Qua đó sinh viên hiểu rõ hơ n ho ạt động c ủa l ệnh hay sự tác động lên giá tr ị thanh ghi/cờ /ng /ngăn x ế p/bộ nhớ khi thực hiện lệnh. 1. Khở i động Emu8086:
Nhấ p đúp biểu tượ ng ng
trên desktop, màn hình khở i động như hình 1 xuất hiện.
•
Code Samples : Chọn file chươ ng ng trình mẫu để thực hiện.
•
Quick Start Tutor: Truy cậ p trang web hướ ng ng dẫn (phải có k ết nối Internet).
•
Recent Files:
•
Chọn file trong danh sách file th ườ ng ng dùng. Continue …: Tiế p tục vào màn hình làm vi ệc.
Hình 1: Màn hình khở i động Emu8086
Khi bấm Continue, màn hình làm vi ệc xuất hiện như hình 2 vớ i file chươ ng ng trình mẫu “Hello World” mặc nhiên xuất hiện trong vùng soạn thảo. nút Convertor trên thanh công c ụ ) Hình 3 là công c ụ Number Convertor (Bấ m vào nút Convertor r ất hữu dụng khi muốn chuyển đổi giá tr ị giữa các hệ thống số vớ i nhau.
ữ để khảo sát: 2. Soạn thảo lệnh hợ p ngữ để Để mở vùng làm việc mớ i chọn NEW, xuất hiện hình 4 để chọn Template Để khảo sát l ệnh Intel-8086 thì chọn chức năng thực thi lệnh (BIN Template). Vùng làm việc BIN Template xu ất hiện như hình 5.
Trong BIN Template, quan tr ọng nhất là dòng đầu tiên #make_bin# dùng để xác định chế độ dịch lệnh của Emu8086. Tuyệt đố i không đượ c thay đổ i dòng l ệnh gi ả này. Các dòng còn l ại dùng để khở i động các giá tr ị ban đầu cho các thanh ghi và thông s ố ng trình. Các dòng này không quan tr ọng, có thể xóa bỏ đượ c địa chỉ segment/offset cho ch ươ ng hoặc thay đổi giá tr ị khở i động khác. Khi các dòng này b ị xóa bỏ thì các thông số và thanh ghi sẽ đượ c khở i động theo giá tr ị mặc nhiên. Để đơ n giản, nên xóa bỏ từ dòng 2 đến hết.
Ths. Nguy ễ n H ứ ứa Duy Khang
Hướ ng ng dẫn sử dụng Emu8086 và RadASM
2
Vùng soạn thảo lệnh
Hình 2: Màn hình Emu8086 Emu8086
Hình 4: Chọn template
Hình 3: Ch ứ c năng Convertor
Hình 5: BIN Template
Ví d ụ: Soạn đoạn lệnh như trong hình 6 sau để khảo sát:
Hình 6: Ví d ụ
3. Khảo sát lệnh (Giả lập - Emulate)
Để khảo sát lệnh bằng cách gi ả lậ p, chọn Emulate, khi đó màn hình giả lậ p xu ất hi ện như hình 7. Màn hình giả lậ p gồm 3 vùng: Thanh ghi (Registers), Bộ nhớ 1KB (Memory) chứa mã máy nh ị phân và vùng hiển thị lệnh hợ p ngữ tươ nngg ứng vớ i mã máy nhị phân (Disassemble)
Giá tr ị các thanh ghi đượ c trình bày ở dạng số Hex. Vùng bộ nhớ trình bày Hex – Dec – ASCII đối vớ i từng ô nhớ (địa chỉ offset) Ths. Nguy ễ n H ứ ứa Duy Khang
Hướ ng ng dẫn sử dụng Emu8086 và RadASM
3
Hình 7: Màn hình gi gi ả l ậ p •
Reload: Nạ p lại đoạn lệnh
•
Run: Chạy cả đoạn lệnh từ đầu cho đến khi gặ p lệnh HLT (dừng)
•
Single Step: Mỗi khi Single Step đượ c bấm thì CPU chỉ chạy 1 lệnh hiện hành
duy nhất (xác định bằng vệt sáng màu xanh) và d ừng lại chờ cho đến khi Single Step đượ c bấm tiế p. Như vậy, việc khảo sát lệnh có thể thực hiện thông qua Single Step. Các thành phần khác còn có th ể xem đượ c tr ạng thái khi CPU thực hiện lệnh trong chế ng ứng độ giả lậ p như ALU, Stack và FLAGS (thanh ghi C ờ ) bằng cách bấm vào các nút t ươ ng •
Hình 8 cho biết tr ạng thái ALU khi thực hiện các phép toán (giá tr ị ở dạng nhị phân 16 bit). Dòng đầu tiên là thứ tự bit, dòng thứ 2 là giá tr ị toán hạng nguồn 1, dòng thứ 3 là giá tr ị toán hạng nguồn 2 và dòng cu ối là giá tr ị k ết quả sau khi thực hiện phép toán
•
Hình 9 trình bày n ội dung ngăn xế p ở dạng Hex 2 byte
•
Hình 10 thể hiện tr ạng thái các c ờ sau khi thực hiện phép toán
Hình 8: Tr ạng thái ALU Ths. Nguy ễ n H ứ ứa Duy Khang
Hướ ng ng dẫn sử dụng Emu8086 và RadASM
Hình 9: Stack
4
Hình 10: Thanh ghi ghi C ờ ờ
4. Thự c thi chươ ng ng trình dạng EXE hay COM
Emu8086 có thể thực thi chươ ng ng trình Hợ p ngữ viết theo cấu trúc dạng EXE hay COM. Khi đó trong vùng soạn thảo, không có dòng lệnh giả #make_bin# và soạn thảo chươ ng ng trình theo đúng cấu trúc dạng chươ ng ng trình tươ nngg ứng. Ví d ụ: Chươ ng ng trình dạng EXE như hình 11
Hình 11: Ví d ụ chươ ng ng trình d ạng EXE
Ths. Nguy ễ n H ứ ứa Duy Khang
Hướ ng ng dẫn sử dụng Emu8086 và RadASM
5
Hướ ng ng Dẫn Sử Dụng RadASM RadASM là môi tr ườ ng phát triển Hợ p ngữ, đượ c xây dựng để k ết hợ p những hợ p ngữ ườ ng khác nhau nhau MASM, TASM, HASM …. và ch ạy trên môi tr ườ ng Windows. Mỗi hợ p ngữ ườ ng khác nhau khi k ế p hợ p vào RadASM ph ải đượ c cấu hình khác nhau. Vì m ục đích cung cấ p công cụ cho sinh viên sử dụng đơ n gian, nên RadASM đã đượ c cấu hình phù h ợ p vớ i hợ p ngữ MASM for DOS. Vì thế trong quá trình s ử dụng, sinh viên không c ần phải cấu hình gì thêm. 1. Khở i động RadASM
Nhấ p đúp biểu tượ ng ng trên desktop thì màn hình làm việc của RadASM xuất hiện như hình 1. Màn hình làm vi ệc của RadASM chia thành 2 vùng: •
•
Vùng soạn thảo dùng để soạn thảo chươ ng ng trình nguồn ASM Vùng thông báo k ết quả: Khi dịch chươ ng ng trình, những k ết quả hay lỗi sẽ xuất hiện tại vùng này
Vùng soạn thảo Số thứ tự dòng lệnh
Vùng thông báo k ết uả D ch chươn trình
Hình 1: Màn hình làm vi ệc của RadASM
Hình 2: Menu FILE Ths. Nguy ễ n H ứ ứa Duy Khang
Hình 2: Menu MAKE
Hướ ng ng dẫn sử dụng Emu8086 và RadASM
6
Các menu thườ ng ng dùng là FILE (hình 2) và MAKE (hình 3), các l ệnh thườ ng ng dùng: •
New File (Ctrl+N): Mở file mớ i để soạn thảo chươ ng ng trình mớ i
•
Open File (Ctrl+O) : Mở file đã lưu sẳn trên đĩ a
•
Save File (Ctrl+S): Lưu file thành tên (nhớ đặ n ớ đặt tên file không có khoảng tr ắ ắng, g, phần mở r ộng ASM đượ c thêm vào t ự độ ự động)
•
Assemble (F5): Hợ p dịch file nguồn (ASM) thành file đối tượ ng ng (OBJ)
•
Link (Alt+Ctrl+F5): Liên k ết file đối tượ ng ng (OBJ) thành file th ực thi (EXE)
•
Run! (Ctrl+Shift+F5): Thực thi chươ ng ng trình (EXE)
2. Soạn thảo file chươ ng ng trình nguồn ng ứ ng) ng) để mở vùng Chọn l ệnh New File trong menu FILE (hay bấ m phím nóng t ươ ươ ng soạn thảo mớ i,i, trong vùng so ạn thảo, sử dụng các chức năng soạn thảo giống như các trình soạn thảo khác. Sau khi so ạn thảo file nguồn xong phải lưu lại thành tên file có ph ần mở r ộng là ASM. Và trong tên file không có ch ứa khoảng tr ắng.
3. Hợ p dịch (Assemble)
Sau khi lưu file chươ ng ng trình nguồn xong, chọn Assemble trong menu MAKE (Hay bấ m phím nóng t ươ ng ứ ng) ng) để tiến hành hợ p dịch chươ ng ng trình nguồn. ươ ng •
Nếu chươ ng ng trình có lỗi cú pháp thì vùng thông báo có d ạng hình 4. Trong đó từng lỗi đượ c chỉ ra bở i số thứ tự dòng lệnh và mã l ối
Ví dụ: chuoi2.asm(18) : error A2008: syntax error : mod Lỗi ở dòng 18, mã lỗi A2008: sai cú pháp mod
Hình 4: Thông báo báo k ế ế t quả H ợ ợ p d ịch không thành công •
•
Khi chươ ng ng trình xuất hiện lỗi thì file đối tượ ng ng (OBJ) không đượ c tạo ra và ngườ i lậ p trình phải sửa lại cho đến khi không còn l ỗi. Khi không có l ỗi chươ ng ng trình (Hợ p dịch thành công) thì trong vùng thông báo xuất hiện nh ư hình 5 và file đối t ượ ng ng (OBJ) đượ c t ạo ra. Khi đó m ớ i chuyển sang bướ c LIÊN K ẾT
Hình 5: Thông báo báo k ế ết quả H ợ ợ p d ịch thành công Ths. Nguy ễ n H ứ ứa Duy Khang
Hướ ng ng dẫn sử dụng Emu8086 và RadASM
7
4. Liên k ết (Link) ng ứ ng) ng) ươ ng Chọn lệnh Link trong menu MAKE. (hay bấ m phím nóng t ươ Sau khi hoàn thành b ướ c hợ p dịch, thì bướ c liên k ết là bướ c cuối cùng để tạo ra file thực thi (EXE). Trong bướ c này, không còn ki ểm tra lỗi cú pháp n ữa và thông thườ ng ng sẽ liên k ết thành công và file th ực thi EXE sẽ đượ c tạo ra. Nội dung thông báo khi liên k ết thành công như hình 6.
Hình 6: Liên k ế ết thành công
5. Thự c thi chươ ng ng trình EXE
ng trình vừa liên k ết xong, chọn l ệnh RUN trong menu MAKE (hay Để thực thi chươ ng bấ m phím nóng t ươ ng ứ ng) ng) . ươ ng Nếu chươ ng ng trình có truy xuất đến bàn phím hay màn hình thì 1 c ửa sổ (dạng màn hình của hệ điều hành DOS) xuất hiện như hình 7. Cửa sổ này đượ c tạo ra để hiển thị k ết quả hay để ngườ i dùng tươ ng ng tác vớ i chươ ng ng trình đang chạy. Nếu chươ ng ng trình không có thao tác nào để truy xuất bàn phím hay màn hình thì chúng ta không thấy đượ c cửa sổ này. Như vậy, trong lậ p trình h ợ p ngữ, nếu muốn nhìn thấy k ết quả gì đó thì chúng ta ph ải có những đoạn lệnh tươ nngg ứng để xuất giá tr ị ra màn hình.
Hình 7: C ử ng trình ửa sổ k ế ết quả chươ ng
Ths. Nguy ễ n H ứ ứa Duy Khang