2016-09-29 5 views
0

Assembly를 배우고 있는데, 텍스트 문자열 대신 화면에 숫자를 출력 할 수 있으면 좋을 것입니다. mov eax, 1을 사용하여 문자를 인쇄하는 방법을 알고 있지만 DWords에서는 작동하지 않습니다.어셈블리에서 DWord를 인쇄하는 방법은 무엇입니까?

64 비트 우분투를 사용하고 있습니다.

메이크 :

all: 
    nasm -f elf64 asm.s -o asm.o 
    ld asm.o -o asm 
    rm asm.o 
+2

makefile은 사람을 지원하지 않습니다 코드를 보지 않아도됩니다. 이미 작성한 내용을 표시하고 수신하는 오류 및 해결 방법을 구체적으로 설명하십시오. –

+0

안녕하세요, 코드가 없습니다. 단지 아스키 문자열 대신 dword를 어떻게 인쇄 할 수 있는지 알고 싶습니다. 메이크 파일을 게시하는 것에 대해 유감스럽게 생각합니다. 어셈블러와 구성을 알면 유용 할 거라고 생각했습니다. 내 잘못이야. –

+3

숫자 (예 : dword 값)를 문자열로 변환 한 다음 syscall을 사용하여 문자열을 인쇄하는 함수/코드를 작성해야합니다. 더 쉬운 방법은 _GCC_를 사용하여 링크하는 것인데,'_start' 대신에'main' 함수를 사용하고,'printf'와 같은 _C_ 라이브러리 함수를 사용하여 포맷 된 텍스트를 출력하십시오. 이 자습서/코드는 다음을 도울 수 있습니다. https://www.csee.umbc.edu/portal/help/nasm/sample_64.shtml#printf1_64.asm –

답변

1
물건 단지 printf을 사용하는 것을 인쇄하는 쉬운 방법 중 하나는, 당신이 DWORD를 인쇄하는 방법을 요구하고

, 즉 쉽게 :

extern _printf 

SECTION .data 
    msg:  db "Printing a dword: %d",10,0 
    number: dd 123456789 

SECTION .text 
    global start 

start: 
    push dword [number] 
    push dword msg 
    call _printf 
    add esp, 8 
    mov eax, 0 
    ret