Windows에서 플랫 어셈블러를 사용하고 jmp로 호출 명령어를 이미 시뮬레이션했지만 더 적은 코드로 더 좋은 방법이 있는지 궁금해하고 있습니까? 전화 사용) 여기 코드가 있습니다. org 100h
mov al, 'x'
push come_back ; - simulated "call" -
jmp test_label ; - continued -
c
저는 fasm/x86 프로그래밍으로 시작했고 64 비트 샘플을 프로젝트의 타겟으로 시작했는데 일부 어셈블리는 64 비트입니다. 제온. PE64DEMO에서 시작하여 루프를 추가하기 위해 수정했지만 Windows API 함수가 레지스터를 변경하고 복원하지 못하도록 첫 번째 반복 이후에 실패합니다. 나는 또한 내가 pushing하고 스택에서 poping 할 필요
섹션에 적용 할 때 "픽스 업"은 정확히 무엇입니까? Fasm 샘플에서 나는 다음 섹션 delcaration을 발견했으며 fixups 속성이 무엇인지 잘 모르겠습니다. FASM 문서에서 많은 정보를 찾을 수 없었습니다. section '.reloc' fixups data readable discardable
if $=$$
dd 0,8 ; if
나는 FASM에 다음 코드를 컴파일 시도 : mov DWORD PTR [ebp - 4], 1234567
그것은 나에게 "잘못된 표현"오류를 주었다. 그러나 다음 코드 일 : mov DWORD [ebp - 4], 1234567
그래서 FASM 인텔 구문 (I 코드의 첫 번째 줄은 인텔 구문을 준수이라고 가정하고)를 사용 하는가?
1 바이트 인수를받는 함수를 만들고 싶습니다. 하지만 x86에서 스택에 2 또는 4 바이트 만 넣을 수 있다는 것을 읽었습니다. 그래서 내 함수에 전달 된 2 바이트 인수를 예상하고 다음 내 1 바이트를 추출해야합니까? 이것은 내 함수에 1 바이트 인수를 전달하는 방법입니다. push WORD 123
다른 접미사 (h-hex, b-bin 등)를 사용하는 어셈블리에서 scanf를 시뮬레이션하려고합니다. 이것은 부호없는 값에 대해서는 문제가 없지만 서명 된 값을 사용하려면 아래 5 줄을 추가 한 후 서명되지 않은 값을 입력하면 앞자리 숫자가 누락되는 문제에 부딪혔지만 서명 된 값에는 예상대로 작동합니다. ;Linux Mint 17 (64-bit)
;./f
32 비트 창 xp의 플랫 어셈블러에서 어셈블리에 몇 개의 프로그램을 작성했습니다. 하지만 이제는 64 비트 Windows 8이 있습니다. 64 비트 버전 (프로그램은 32 비트)과 호환되지 않으므로 .com 파일을 실행할 수 없습니다. win8에서도 실행할 수 있도록 변환하려면 어떻게해야합니까? 어쩌면 다른 어셈블러를 사용할 것인가? 저는 에뮬레이터 및
클래스 프로젝트를위한 플랫 어셈블러 내에서 링크 된 목록을 만드는 프로젝트를 맡았습니다. 거기에 단어를 동적으로 저장할 수 있어야합니다. 저는 막연하게 메모리 할당과 할당을 이해합니다. 필자가 이해할 수없는 것은이 할당을 링크 된 목록으로 바꾸거나 플랫 어셈블러 내부에서 링크 된 목록을 만드는 방법입니다. 나는 인터넷에서 노드와 메모리 세그먼트에 대해 이야
내 코드 : .MODEL SMALL
.CODE
ORG 100H
Label1 : JMP Label2
+---------------------+
| TEMPAT DATA PROGRAM |
+---------------------+
Label2 :
+---------------------+
| TEMPAT PROGRAM |
+--------