MinGW GCC로 컴파일 된 간단한 C 드라이버 클래스에서 NASM으로 어셈블 된 어셈블리 함수를 호출하려고합니다. 다음 명령을 사용하여 파일을 컴파일하고 어셈블합니다. nasm -f win32 asm_main.asm -o asm.o
gcc -c driver.c -o driver.o
그리고 이들을 서로 연결하는 명령. 여기 driver.o:driv
저는 비교적 새로운 어셈블리입니다. 두 번째 명령 줄 인수를 두 번째 명령 줄 인수로 사용하는 프로그램을 만들려고합니다 (두 번째 명령 줄 인수는 문자열 임). 길이가 1에서 30 사이인지 확인합니다. 문자열이 0, 1 및 2 문자로만 구성되어 있는지 확인하십시오. 다른 문자가 있으면 종료됩니다. 프로그램을 실행하면 "Segmentation fault"가
최근에 어셈블리에 들어가기 시작했고 튜토리얼을 쉽게 찾을 수 있기 때문에 NASM을 사용하고 있습니다. 그 어려움 때문에 나는 1과 3을 더하고 4를 더하는 프로그램을 만들어서 아주 작게 시작하겠다고 결심했다. 나는 오류나 경고 메시지를받지 못했지만 충분히 배제했다. sh-4.3 $. segment .text
global _start
_start
아래에이 어셈블리 코드가 있습니다. printf가 무엇을 인쇄해야 하는지를 어떻게 알 수 있습니까? 항상 방금 위에있는 주소에있는 것이 무엇이든 인쇄합니다. 이 경우 "push msg"? SECTION .data
msg: db "Hello World!",10,0
SECTION .text
extern printf
global main
main
나는 NASM과 관련된 학교 프로젝트에 참여하고 있으며, 언어가 나에게 어떤 의미를 가지지 만 항상 의미가없는 문제가 발생하게됩니다. 필자가 작성한 프로그램은 1 개의 명령 줄 인수를 포함하는데,이 인수는 0, 1 및/또는 2의 문자열이어야합니다. 그렇지 않은 경우 오류 메시지가 표시되고 프로그램이 종료됩니다. 오류가없는 경우 문자열의 "접미사"가 순서대로
문자열을 입력으로 사용하는 프로그램 (0,1,2로 구성)을 만들고 문자열 [i + 1] 요소가 string [i]보다 큽니다. 값이 더 크면 프로그램은 1을 반환하고, 값이 크지 않으면 -1을 반환합니다. 세분화 오류가 계속 발생하며 그 위치가 어디인지 모릅니다. 나머지 프로그램에는 코드가 더 있지만 나머지는 작동하며 "정렬"이 호출 될 때만 Seg 오류가
Duntemann의 책 (제 3 판)을 읽고 방금 x86 어셈블리를 배우기 시작했습니다. Fedora 23 (64 비트)의 변형을 사용하고 있습니다. 다음은 코드입니다 : sandbox: sandbox.o
ld -o sandbox sandbox.o -melf_i386
sandbox.o: sandbox.asm
nasm -f elf -g -
, 내가 노력하고있어 간단한 응용 프로그램을 컴파일 할 수 없습니다 : section .text
global _start
_start:
mov edx, len
mov ecx, msg
mov ebx, 1
mov eax, 4
int 0x80
mov eax, 1
int 0x80