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:
- Hỏi về Lỗi MSIL .netmodule or module compiled with /GL found
- Sử dụng Windows API nào để đọc cấu trúc file và folder trên đĩa cứng
- Cách truyền tham số cho hàm SHGetFileInfo
- Create Process from Process service svchost.exe
- Directx 2009 Chạy Thiếu Thư viện DLL với windowsXP
- CreateFileMapping Trả về Lỗi = 5
- Gọi hàm trong process và tìm địa chỉ của hàm đó từ 1 process khác như thế nào ?
- Hook hàm CreateProcessInternalW như thế nào?
- Tạo Project từ file Makefile.in, MAke.am trong VC++ 9 command prompt
- Tính số Icon Trong 1 File exe ?
-
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
Không chỉ dừng lại ở việc sử dụng nguyên liệu cao cấp, mỗi công trình còn được "chăm sóc" bằng 4 dịch vụ xuất sắc của Tre Nghệ. Từ việc tư vấn, thiết kế đến thi công và hoàn thiện, mọi quy trình đều...
Chất Lượng và Sáng Tạo: Kiến Trúc...