Ví dụ tốt nhất là những người bị co thắt, vì co thắt không sử dụng trình liên kết, điều này làm ẩn đi sự phức tạp của các cửa sổ lập trình bởi một lớp phức tạp mờ đục khác. Nếu bạn đang hài lòng với một chương trình viết vào cửa sổ gui, thì có một ví dụ cho chương trình đó trong thư mục ví dụ của fasm.
Nếu bạn muốn một chương trình bảng điều khiển, cho phép chuyển hướng tiêu chuẩn và tiêu chuẩn ra cũng có thể. Có một chương trình ví dụ (helas rất không tầm thường) có sẵn mà không sử dụng một gui, và làm việc chặt chẽ với bàn điều khiển, đó là chính nó. Điều này có thể được làm mỏng ra các yếu tố cần thiết. (Tôi đã viết một trình biên dịch ra đó là một ví dụ không gui, nhưng nó cũng không tầm thường).
Chương trình như vậy có lệnh sau để tạo tiêu đề thực thi phù hợp, thường được thực hiện bởi trình liên kết.
FORMAT PE CONSOLE
Một phần được gọi là '.idata' chứa bảng giúp các cửa sổ trong khi khởi động để ghép tên các hàm vào địa chỉ thời gian chạy.Nó cũng chứa một tham chiếu đến KERNEL.DLL là hệ điều hành Windows.
section '.idata' import data readable writeable
...
Chương trình của bạn nằm trong phần '.text'. Nếu bạn khai báo phần đó có thể đọc được và có thể thực thi được, đó là phần duy nhất bạn cần.
section '.text' code executable readable writable
Bạn có thể gọi cho tất cả các cơ sở bạn khai báo trong phần .idata. Đối với một chương trình giao diện điều khiển, bạn cần _GetStdHandle để tìm các trình biên dịch cho tiêu chuẩn và tiêu chuẩn (sử dụng các tên biểu tượng như STD_INPUT_HANDLE mà fasm tìm thấy trong tệp win32a.inc bao gồm). Một khi bạn có các bộ mô tả tập tin, bạn có thể thực hiện WriteFile và ReadFile. Tất cả các chức năng được mô tả trong tài liệu kernel32. Bạn có thể nhận thức được điều đó hoặc bạn sẽ không cố gắng lập trình lắp ráp.
Tóm lại: Có một bảng có tên asci mà cặp vợ chồng đến hệ điều hành windows. Trong khi khởi động, công cụ này được chuyển thành một bảng địa chỉ có thể gọi, mà bạn sử dụng trong chương trình của mình.
Nguồn
2017-01-18 14:47:51
Ngoài ra, hãy xem bộ công cụ lắp ráp bộ khởi động [Small Is Beautiful] của Steve Gibson (http://www.grc.com/smgassembly.htm). – Jeremy
Không sử dụng thư viện c là một hạn chế hơi kỳ lạ. Người ta phải gọi một số thư viện trong hệ thống hoạt động MS-Windows. có lẽ là kernel32.dll.Whether Microsoft đã viết điều này trong c hoặc Pascal có vẻ không liên quan. Nó có nghĩa là chỉ có các hàm do OS cung cấp mới có thể được gọi, cái gì trong hệ thống kiểu Unix sẽ được gọi là các cuộc gọi hệ thống? –
Với các thư viện C, tôi cho rằng nó có nghĩa là không sử dụng một thư viện thời gian chạy C như các thư viện đi kèm với GCC hoặc MSVC. Tất nhiên họ sẽ phải sử dụng một số DLL Windows chuẩn, như kernel32.dll. –