목록list (398)
y0u_bat
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
부트로더의 시작주소 : 0x7c00 부트로더의 글씨를 띄울려면 비디오 메모리에 써야됩니다. 0xB8000이 텍스트 출력용 메모리 입니다. 소스 [ORG 0x7c00][BITS 16] SECTION .text mov ax, 0xB800mov es, ax mov ah, 0x09mov al, 'O'mov [es:0x00], axmov al, 'S'mov [es:0x02], ax 0xB8000에서 한글자는 2바이트로 이루어져 있습니다. 2바이트에서 앞에 첫1바이트는 글자, 2번째 바이트는 글자속성(배경,글 색깔 등) 결과 화면이 더럽죠. 우리가 지정한 글씨만 나오도록 나머지 글씨를 0x00로 지워 줍시다. 부트로더에서 가로 80 세로 25 이다 그런데 속성까지해서 80 * 25 * 2 == 4000 byte 0..
기본 소스 [ORG 0x00] ; 코드의 시작 주소[BITS 16] ; 아래 코드를 16비트 코드로 설정 SECTION .text ; text 섹션 ( 세그먼트 ) 정의 jmp $ ; 현재 위치에서 무한루프 실행 $가 현재주소 times 510 - ( $ - $$ ) db 0x00 ; $$: 현재 섹션(.text)의 시작주소; 510 - ( $ - $$ ): 현재부터 주소 510까지; db 0x00 1바이트 선언하고 값은 0x00; time: 반복수행; 현재 위치에서 510까지 0으로 채움 dw 0xaa55 ; 주소 511,512에 0x55, 0xaa를 써서 부트 섹터로 표기 makefile all: BootLoader.bin BootLoader.bin: BootLoader.asmnasm -o BootL..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
여기서 중요하게 봐야 될부분은 xor ecx,edx이다. edx는 우리가 입력한 이름값이 오고, ecx는 10,20,30이 반복적으로 들어온다. 저기 cmp esi,3 즉 esi가 3이면 xor esi,esi해서 0으로 만들어줌, 그리고 1씩 증가 esi가 증가 암튼 이름이랑 10,20,30이랑 순차적으로 xor 해줌 그런데 키값은 저기 위에 있는거에서 순서대로 10,20,30,10,20,30 xor 하면 이름이 구해짐
보호되어 있는 글입니다.