当心寄存器

This commit is contained in:
Yourtion
2016-05-03 11:59:06 +08:00
parent 2fb28adf44
commit 4d0e2f1af1
2 changed files with 15 additions and 11 deletions

View File

@@ -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

View File

@@ -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