1
nasm에 부트 로더를 작성하는 순간, 문자열을 출력하는 순간입니다.nasm bootloader, 왜 내가 문자열 문제를 정의합니까?
[BITS 16]
[org 0x7c00]
mov bp, 0x8000
mov sp, bp
myString:
\t db 'Hello World', 0x00
mov bx, myString
call printString
jmp $
printString:
\t pusha
\t mov ah , 0x0e
\t printStringA:
\t
\t mov al , [bx]
\t cmp al, 0x00
\t je printStringB
\t
\t int 0x10
\t add bx, 0x01
\t jmp printStringA
\t
\t printStringB:
\t popa
\t ret
times 510 -($ - $$) db 0
dw 0xaa55
이 메신저는 Bochs와이 실행, 쓰레기를 출력 : 잘 작동하지만 내가 여기에 문자열 정의를 이동하는 경우
[BITS 16]
[org 0x7c00]
myString:
\t db 'Hello World', 0x00
mov bp, 0x8000
mov sp, bp
mov bx, myString
call printString
jmp $
printString:
\t pusha
\t mov ah , 0x0e
\t printStringA:
\t
\t mov al , [bx]
\t cmp al, 0x00
\t je printStringB
\t
\t int 0x10
\t add bx, 0x01
\t jmp printStringA
\t
\t printStringB:
\t popa
\t ret
times 510 -($ - $$) db 0
dw 0xaa55
그게 도움이된다면 창문 밑에.
생각해 보면 ive가 생각한 것만 큼 프로세서는 아마도 문자열이 코드라고 생각하고 그것을 실행하고 엉망으로 만드는 코드 일 것입니다. 만약 내가 문자열 정의를 결코 끝나지 않는 루프로 이동 시킨다면, 그 모든 좋은 것 –