تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
masm64 مساعدة
#1
عملت تثبيت 32

ناقص 64

 مساعدة شرح او اكتب طريقة تثبيت
[صورة مرفقة: image.png]
#2
كيفية تثبيت حزمة تطوير برامج masm64

يأتي Microsoft Macro Assembler for 64-bit (MASM64) كجزء من مُثبِّت Visual Studio، وهو غير متوفر كتنزيل مُنفصل. أسهل طريقة للحصول على المُجمِّع، ml64.exe، وأدواته هي تثبيت أدوات بناء Visual Studio.

الخطوة 1: تنزيل أدوات بناء Visual Studio وتثبيتها

انتقل إلى صفحة تنزيلات Visual Studio على موقع Microsoft الإلكتروني.

ابحث عن قسم "أدوات Visual Studio" ونزِّل مُثبِّت أدوات بناء Visual Studio.

شغِّل المُثبِّت. عند وصولك إلى شاشة "أحمال العمل"، حدد "تطوير سطح المكتب باستخدام عبء عمل C++".

على الجانب الأيمن، ضمن "تفاصيل التثبيت"، تأكد من تحديد أدوات بناء MSVC v143 - VS 2022 C++ x64/x86 (أو أحدث إصدار).

انقر فوق "تثبيت".
الخطوة ٢: افتح موجه أوامر x64 Native Tools

بعد اكتمال التثبيت، افتح قائمة ابدأ.

ابحث عن "x64 Native Tools Command Prompt" وافتحه. هذا الموجه مُهيأ مسبقًا بجميع متغيرات البيئة والمسارات اللازمة لمُجمِّع 64 بت ومُربِطه.

الخطوة ٣: التحقق من التثبيت

في موجه أوامر x64 Native Tools، اكتب الأمر التالي للتحقق من إصدار المُجمِّع:

sh
ml64/?

استخدم الكود مع الإيداع.

إذا نجح التثبيت، سيعرض الأمر معلومات المساعدة لمُجمِّع ماكرو Microsoft لـ x64.

باستخدام MASM64 SDK

فيما يلي الأوامر الأساسية للتجميع والربط.

اكتب كود التجميع. على سبيل المثال، احفظ الملف التالي باسم hello.asm:
asm
EXTERN GetStdHandle:PROC
EXTERN WriteFile:PROC
EXTERN ExitProcess:PROC
.data
hello_msg DB "Hello, 64-bit World!", 0Dh, 0Ah
hello_len EQU $-hello_msg
.code
hand PROC
; الحصول على مُخرج قياسي
sub rsp, 40; تخصيص مساحة ظل
mov ecx, -11 ; STD_OUTPUT_HANDLE
call GetStdHandle
mov rcx, rax; hFile
lea rdx, hello_msg; lpBuffer
mov r8, hello_len; nNumberOfBytesToWrite
mov r9, 0; lpNumberOfBytesWritten
sub rsp, 40; اضبط محاذاة المكدس
استدعاء WriteFile
إضافة rsp، 40؛ استعادة المكدس
إضافة rsp، 40؛ استعادة مساحة الظل

؛ إنهاء العملية
mov ecx، 0
استدعاء ExitProcess
ENDP hand
END
استخدام الكود مع الإيداع.


جمّع الملف:
sh
ml64.exe /c /Cx hello.asm
استخدام الكود مع الإيداع.

يُجمّع هذا الأمر hello.asm في hello.obj.

ربط ملف الكائن:
sh
link.exe hello.obj
استخدام الكود مع الإيداع.

يربط هذا ملف الكائن ويُنشئ ملفًا قابلًا للتنفيذ باسم hello.exe.

شغّل برنامجك:
sh
hello.exe
[+] أعضاء أعجبوا بمشاركة otmanov
#3
ممكن حل مشكلة

[صورة مرفقة: image.png]

fatal error A1000:cannot open file : masm64rt.inc
#4
أذا كان هدفك بناء تطبيق 32 بت فأستخدم الأمر
 
C:\masm32\bin\ml /c /coff 9o.asm
C:\masm32\bin\link /SUBSYSTEM:WINDOWS /LIBPATH:C:\masm32\lib 9o.obj kernel32.lib user32.lib


و أستخدم الكود التالي:
include \masm32\include\masm32rt.inc

.const
  CmdToExecute db "calc.exe",0

.code
start PROC
    invoke WinExec, ADDR CmdToExecute, SW_SHOWNORMAL
    invoke ExitProcess, 0
start ENDP
END start


أما أذا كان هدفك هو بناء تطبيق 64 بت فأستخدم ml64.exe و أيضاً تجنب أستخدام masm32rt.inc

الشفرة المصدرية ادناه من الممكن أن تساعدك لبناء الكود لبيئة 64 بت:
option casemap:none
extrn WinExec:PROC
extrn ExitProcess:PROC

.data
  CmdToExecute db "calc.exe",0

.code
main PROC
    sub  rsp, 28h              ; shadow space & alignment
    lea  rcx, CmdToExecute     ; arg1
    mov  rdx, 1                ; SW_SHOWNORMAL
    call WinExec
    xor  ecx, ecx
    call ExitProcess
main ENDP
END main

[+] أعضاء أعجبوا بمشاركة H@wk0


التنقل السريع :


يقوم بقرائة الموضوع: