From 4d0e2f1af168fc2f995ebcb259a2a9525c01c770 Mon Sep 17 00:00:00 2001 From: Yourtion Date: Tue, 3 May 2016 11:59:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93=E5=BF=83=E5=AF=84=E5=AD=98=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 20_day/hello.nas | 24 +++++++++++++----------- 20_day/naskfunc.nas | 2 ++ 2 files changed, 15 insertions(+), 11 deletions(-) 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