Chủ đề: ASM ứng dụng nhỏ hiểu thêm VC++
-
16-08-2009, 08:03 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
ASM ứng dụng nhỏ hiểu thêm VC++
Mã:.386 .model flat,stdcall include windows.inc include kernel32.inc include user32.inc includelib kernel32.lib includelib user32.lib .data? Messageboxcaption dd "chao cac ban",0 MessageBoxText dd "Abc",0 .code start: invoke MessageBox,NULL,addr Messageboxcaption,addr MessageBoxText ,MB_OK invoke ExitProcess,NULL end start
C:\Documents and Settings\MR\Desktop\ASM co ban\df.asm(12) : warning A4014: instructions and initialized data not supported in BSS segments
C:\Documents and Settings\MR\Desktop\ASM co ban\df.asm(13) : warning A4014: instructions and initialized data not supported in BSS segments
View more random threads:
- Dùng hàm api nào để tìm kiếm file trên window
- Viết COM Bằng VC++ ATL có Tối ưu nhất ?
- MIME không dùng STARTTLS Gửi File Unicode ?
- Cách dùng đối tượng semaphore và chia sẽ thông tin giữa các thread?
- Nhận dữ liệu hàm WSAWaitForMultipleEvents bi time out !
- Antivirus lấy các hàm API trong PE File bằng cách nào
- mọi người cho em hỏi với ạ hook messagebox
- Change Display Setting của 1 Application ?
- Kiểm tra một file đã được mở bởi chương trình khác hay ko?
- Socket - Internet Explorer Ecrypt, Rút gọn Link đăng nhập ?
-
16-08-2009, 03:40 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Hai dòng Messageboxcaption và MessageBoxText bạn không thể khai báo trong data? được, data? chỉ dành cho dữ liệu chưa khởi tạo
2 dòng này bạn phải khai báo trong data, tức là bỏ dấu ? đi
-
16-08-2009, 03:43 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình nghe nói nếu DATA ? thì sẽ đỡ tốn dung lượng của file exe hơn [IMG]images/smilies/smile.png[/IMG],mình thử làm như thế này
Mã:.386 .model flat,stdcall include windows.inc include kernel32.inc include user32.inc includelib kernel32.lib includelib user32.lib .data? Messageboxcaption dd ? MessageBoxText dd ? .code start: invoke MessageBox,NULL,addr Messageboxcaption,addr MessageBoxText ,MB_OK invoke ExitProcess,NULL end start
Messageboxcaption dd "chao cac ban",0
MessageBoxText dd "Abc",0
-
16-08-2009, 03:54 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Data sections được chia ra làm 3 lọai :
.DATA – chỉ rõ đây là section dành cho dữ liệu và dữ liệu (cụ thể là các biến) được gán giá trị khởi tạo ngay từ đầu chương trình của bạn.
.DATA? – chỉ rõ đây là section chứa dữ liệu không được gán giá trị khởi tạo. Đôi khi bạn muốn chỉ định vài vùng nhớ nhưng không muốn cho nó chứa giá trị nào lúc khởi tạo. Section này dành cho mục đích đó. Lợi thế của chỉ thị này là : không chiếm khoảng trống trong file thực thi (hay nói cách khác kích thước của file trên đĩa không tăng khi sử dụng chỉ thị này để chứa dữ liệu).
Ví dụ : Nếu bạn chỉ định 10.000 Bytes (10 KB) trong khai báo .DATA? section, file exe của bạn sẽ không tăng thêm 10.000 Bytes. Kích thước của nó sẽ không nhiều như vậy. Ở đây bạn chỉ nói cho asm biết khoảng trống bao nhiêu bạn cần khi chương trình được load vào bộ nhớ.
.CONST – chỉ rõ đây là section chứa hằng số được dùng trong chương trình của bạn. Những hằng số trong section này sẽ không thay đổi.
Chú ý : không cần phải sử dụng cả 3 section trên trong chương trình của bạn. Chỉ khai báo những section nào bạn muốn dùng.
Ứng với trường hợp chương trình của bạn, thì bạn khai báo như sau:
Mã:.386 .model flat,stdcall include windows.inc include kernel32.inc include user32.inc includelib kernel32.lib includelib user32.lib .data Messageboxcaption db "chao cac ban",0 MessageBoxText db "Abc",0 .code start: invoke MessageBox,NULL,addr Messageboxcaption,addr MessageBoxText ,MB_OK invoke ExitProcess,NULL end start
-
16-08-2009, 03:55 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bạn phải có data thì mới hiện được ra chứ, nếu không thì không thể được.
Nếu bạn muốn dùng thế thì có 1 cách khác, nhưng suy cho cùng thì đâu vẫn vào đấy , dung lượng file obj thì giảm sau khi dịch nhưng file exe theo tớ thì vẫn thế sau khi link: cho các xâu của bạn vào stringTable trong resource.
Bạn dùng hàm LoadString để lấy các xâu , hàm này yêu cầu 1 bộ đệm để chứa xâu.
Cón nếu để chương trình tự sinh cả dữ liệu thì tớ chịu
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...