0
다음 코드가 어셈블러에 있습니다.No 콘솔에 번호를 표시합니다.
콘솔에서 아무 것도 표시되지 않으면 어떻게됩니까? 최종 번호를 알려주시겠습니까?
section .text
global _start
_start:
inicio:
mov ax,12345
mov cx,5
mov dx,0
imprime:
mov bx,10
div bx
add dl,30h
mov dh,0
push dx
mov dx,0
loop imprime
mov cx,5
imp:
mov ah,02h
pop dx
int 0x80
loop imp
mov rax, 60
mov rdi, 0
syscall
나는 그것을 인쇄 할 INT의 21H를 넣고 나를 떠나지 않았다, 나는이 대답은 당신이 필요로하는 어떤 디버거를 얻을 수 있습니다, 당신을 도울하고 사용하는 방법을 배우게하지 않습니다 INT 0x80으로
플랫폼 : 여기
은 나를 위해 작동하는, 당신의 다소 고정 된 리눅스 (64B) 어셈블리 코드? (OS + 비트). 'int 21h'는 MS-DOS이고,'int 0x80'은 32b 리눅스이고,'syscall'은 64b 리눅스입니다 (또는 다른 OS에서도 마찬가지입니다). 당신은 다른 OS의 API를 호출 할 수 없다. (그리고 각 API는 자신의 함수와 매개 변수를 가지고 있기 때문에'mov ah, 02h'와'int 0x80 '은 거의 확실하게 버그이며 리눅스 32b API는'eax'에서 값을 기대합니다). – Ped7g@ Ped7g 나는 우분투 64 비트 리눅스와 yasm을 사용하지만, 만약 내가 syscall을 사용한다면 –
@ Ped7g 내가 syscall을 넣으면, 나오는 것 : "Violation segment ('core'generated)" –