"Hello, world!"라는 간단한 프로그램을 만들고 있습니다. 16 진수 ASCII 문자. 다음은 내 코드입니다 :nasm x86-64 어셈블리 - 두 변수가 하나의 변수로 읽습니다.
SECTION .DATA
msg db 'Printing Hello world in ASCII values: ', 0
msglen EQU $-msg
char1 db 064h ; 'd' character
char2 db 06Ch ; 'l' character
char3 db 072h ; 'r'
char4 db 06Fh ; 'o'
char5 db 077h ; 'w'
char6 db 020h ; (space)
char7 db 06Fh ; 'o'
char8 db 06Ch ; 'l'
char9 db 06Ch ; 'l'
char10 db 065h ; 'e'
char11 db 048h ; 'H'
SECTION .bss
SECTION .text
GLOBAL _start:
_start:
nop
mov esi, 0
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, msglen
int 80h
; printing 'H'
mov eax, 4
mov ebx, 1
mov ecx, char11
mov edx, 1
int 80h
; printing 'e'
mov eax, 4
mov ebx, 1
mov ecx, char10
mov edx, 1
int 80h
; printing 'l'
mov eax, 4
mov ebx, 1
mov ecx, char9
mov edx, 1
int 80h
; printing 'l'
mov eax, 4
mov ebx, 1
mov ecx, char8
mov edx, 1
int 80h
; printing 'o'
mov eax, 4
mov ebx, 1
mov ecx, char7
mov edx, 1
int 80h
; printing space
mov eax, 4
mov ebx, 1
mov ecx, char6
mov edx, 1
int 80h
; printing 'w'
mov eax, 4
mov ebx, 1
mov ecx, char5
mov edx, 1
int 80h
; printing 'o'
mov eax, 4
mov ebx, 1
mov ecx, char4
mov edx, 1
int 80h
; printing 'r'
mov eax, 4
mov ebx, 1
mov ecx, char3
mov edx, 1
int 80h
; printing 'l'
mov eax, 4
mov ebx, 1
mov ecx, char2
mov edx, 1
int 80h
; printing 'd'
mov eax, 4
mov ebx, 1
mov ecx, char1
mov edx, 1
int 80h
; end
mov eax, 1
mov ebx, 0
int 80h
내 질문 :
어떻게 이런 식으로 뭔가 할 수있다 : 나는 변수와 증분 카운터가 될 수 있습니다 방법
loop:
mov eax, 4
mov ebx, 1
mov ecx, char[incremented variable]
mov edx, 1
int 80h
inc (incremented variable)
jmp loop
가 무엇을 의미하는 것은입니다 하나의 변수로 읽습니까?
미리 감사드립니다.
어떻게 수행 할 지에 대한 예제 코드를 제공해 주시겠습니까? – Progrmr
@AussieGamer : 방금 하나 추가했습니다. 불행히도 nasm을 사용하지 않으므로 masm 구문을 사용해야했습니다. 그러나 이들은 대략 동일합니다. – Necrolis
예, 저는 64 비트 Linux 시스템을 사용하고 있습니다. 나는 MASM 어셈블리를 사용했지만 리눅스로 바꿨다. 나는 또한 배열을 사용하여 주위에 적이 없으므로이 게시물을. – Progrmr