diff --git a/20_day/hello.nas b/20_day/hello.nas index 99d8d83..8f75991 100644 --- a/20_day/hello.nas +++ b/20_day/hello.nas @@ -1,12 +1,14 @@ +[INSTRSET "i486p"] [BITS 32] - MOV AL,'h' - INT 0x40 - MOV AL,'e' - INT 0x40 - MOV AL,'l' - INT 0x40 - MOV AL,'l' - INT 0x40 - MOV AL,'o' - INT 0x40 - RETF + MOV ECX,msg +putloop: + MOV AL,[CS:ECX] + CMP AL,0 + JE fin + INT 0x40 + ADD ECX,1 + JMP putloop +fin: + RETF +msg: + DB "hello",0 \ No newline at end of file diff --git a/20_day/naskfunc.nas b/20_day/naskfunc.nas index 5e4e000..38aa311 100644 --- a/20_day/naskfunc.nas +++ b/20_day/naskfunc.nas @@ -219,10 +219,12 @@ _farcall: ; void farcall(int eip, int cs); _asm_cons_putchar: STI + PUSHAD PUSH 1 AND EAX,0xff ; 将AH和EAX的高位置0,将EAX置为已存入字符编码的状态 PUSH EAX PUSH DWORD [0x0fec] ; 读取内存并PUSH该值 CALL _cons_putchar ADD ESP,12 ; 将栈中的数据丢弃 + POPAD IRETD