아주 간단한 어셈블리 프로그램을 실행하려고합니다.하지만 내가하는 일이 무엇이든간에 segfaults를 얻는 것처럼 보입니다. 여기 내 코드입니다 section .data
buffer times 50 db 97
pointer db 0
section .text
global _start
_start:
mov ECX
워드 배열에서 가장 큰 값을 반환하는 프로 시저를 작성하려고했습니다. 로컬 변수를 here으로 표시된 규칙에 따라 할당했습니다. 하지만 지역 변수에 값을 이동하려고 할 때 그것이 나에게이 오류 제공 : 어떤 도움을 크게 감상 할 수 greatest:
push ebp
mov ebp, esp
;allocate local v
Metasploit의 linux/x64/shell/reverse_tcp 페이로드를 분석하면서 mmap() 시스템 콜의 prot 인수로 0x1007 값을 사용하고 있다는 것을 깨달았습니다. mmap() 매뉴얼 페이지는 prot 인수가 PROT_NONE이거나 PROT_EXEC, PROT_READ, PROT_WRITE PROT_NONE 플래그 중 하나 이상의 비
예를 들어, 문자열을 1234를 정수 1234로 입력하면 정수 1234로 변환됩니다. 그러나 1234를 입력하면 결과로 12가 나옵니다. 무슨 문제인지 모르겠다. %include "asm_io.inc"
segment .bss
string resb 32
segment .text
global main
main:
enter 0,0 ;
부트 로더를 작성하고 NASM 어셈블러 (AS86이 아님)를 사용하여 컴파일하면 모든 것이 완벽하게 작동합니다. 이제 응용 프로그램에 16 비트 C 코드를 삽입하는 방법을 배우고 싶습니다. 나는 8034 프로세서를 지원한다는 사실 때문에 bcc이 그러한 상황에 권장되는 몇 가지 SO에서 읽었다. ld86: testasm.o has bad magic numb
저는 x86_64 Linux Assembly을 사용하고 있습니다. 사용자 입력에서 문자의 하위 세 비트를 1로 설정하고 결과 문자를 인쇄하도록 요청 받았습니다. 설명해 드리겠습니다. Input: b ; ASCII in binary: 01100010
Set the last 3 bits to 1:
01100010 -> 01100111
Output:
표시 할 수 없습니다. 내 문제는 EBX (색인)이며, 1,2,3, .. 9 오케이 증가하지만 10 점이되면 ':'또는 11이 표시됩니다 '; 이유를 모르겠습니까? 많은 감사 내 나쁜 영어 ; DINH VAN KIET
; TUAN 3
; Find String 32bit
; Build
; nasm -f elf find_string_32bit.asm
저는 튜토리얼 스 포인트 가이드를 사용하여 NASM 어셈블리를 학습하는 어셈블리를 가르쳐 왔지만 두 개의 사용자 입력 숫자를 함께 곱하는 코드를 작성할 때 몇 가지 문제가있었습니다. 나는 오류가 발생하고 있는데 이는 레지스터, 스택 및 데이터 세그먼트와 관련하여 어셈블리 아키텍처가 어떻게 작동하는지 완전히 이해하지 못하는 문제라고 생각합니다. 도움을받을 수