현재 저수준 프로그래밍 기술을 향상시키기 위해 x86 Assember를 사용 중입니다. 현재 32 비트 보호 모드에서 주소 지정 체계에 약간의 문제가 있습니다. 상황은 다음 나는 보호 모드로 CPU를 전환하고 코드에 따라 라벨로 점프 0x7e0로드 프로그램이 있습니다이 [...]
code to switch CPU in Protected Mode
[...
나는 86의 LEA 명령에 좋은 그립을 얻기 위해 노력하고 있어요 :이 두 줄을 감안할 때 leal (%edx, %edx, 4), %eax
leal (%edx, %edx, 2), %eax
, 내가 알고 : 다음 eax = edx + edx*4 과 eax = edx + edx*2 두 가지 질문이 있습니다. 첫째,이 명령어가이 예제에서와 같이 순서대로 나
다음과 같은 코드가 있습니다. mov ax, cs
mov ds, ax
mov es, ax
왜 이렇게 압축 할 수 없습니까? mov ds, cs
mov es, cs
누산기 레지스터를 사용한 이후로 첫 번째 방법이 빠릅니까? 하지만 cs와 ds는 레지스터 세그먼트이므로 직관적으로 보일 수 없습니다. 아니면 내가 모르는 몇 가지 제한 사항이 있습니까
내가이 add 명령이 무엇을하고 있는지 정확히 모르겠어요하고있는 명령 추가 정확히 모르겠어요 : add 0x0(%rbp,%rbx,4),%eax
가 있다면 : add %rbx,%eax
나는 그것을 알고를 rbx의 내용과 내용을 eax에 추가하고 eax에 다시 저장하십시오. 그러나 0x0(%rbp,%rbx,4)이 나를 퇴장시키고 있습니다.
ollydbg를 사용하여 프로그램을 디버깅하려고하는데 SS 접두사를 사용하여 인덱스 주소를 지정하는 데 의의가 있습니다. - 0012FDCB 이때 하나의 감산 EBP(0012FDCC) 뾰족 해결 EBX에서 8 비트 이동 명령 MOV BYTE PTR SS:[EBP-1],BL
: 여기서 스크린 샷이다. 위의 내용이 올바르지 않으면 알려주세요. ollydbg
DA 주소 지정 모드에 대해 두 가지 질문이 있습니다. 예를 들면 :는 STMDA R0!, {R1-R7}
시작 주소가 그 R0 될 것이다 ARM 아키텍처 참조 문서 및 END_ADDRESS에있어서, R0-24이다 R0 - (7 * 4) + 4 것이다. 그래서 : 는 R1의 값은 R0-24 또는 R0에 저장 될 것인가? R0-24에 R1이 저장되어있는 경
내가 배우는 어셈블리에 대해 몇 가지 질문이 있는데 혼란 스럽습니다. bx 및 bp 및 ss와 sp의 차이점은 무엇입니까? 책에서는 bx이 기본 레지스터이고 bp은 기본 포인터라고합니다. 이것은 그들이 똑같은 것을 의미합니까? mov ax, bx, mov ax, [bx], mov ax, bp 및 mov ax, [bp]의 차이점은 무엇입니까? disp은 인덱