Compare commits

...

1 Commits

Author SHA1 Message Date
Yourtion
984b2886d0 不结束应用程序 2016-05-03 11:42:02 +08:00
4 changed files with 18 additions and 7 deletions

View File

@@ -30,6 +30,7 @@ void asm_inthandler27(void);
void asm_inthandler2c(void);
unsigned int memtest_sub(unsigned int start, unsigned int end);
void farjmp(int eip, int cs);
void farcall(int eip, int cs);
void asm_cons_putchar(void);
/* fifo.c */

View File

@@ -256,7 +256,7 @@ void cmd_hlt(struct CONSOLE *cons, int *fat)
p = (char *) memman_alloc_4k(memman, finfo->size);
file_loadfile(finfo->clustno, finfo->size, p, fat, (char *) (ADR_DISKIMG + 0x003e00));
set_segmdesc(gdt + 1003, finfo->size - 1, (int) p, AR_CODE32_ER);
farjmp(0, 1003 * 8);
farcall(0, 1003 * 8);
memman_free_4k(memman, (int) p, finfo->size);
} else {
/*没有找到文件的情况*/

View File

@@ -1,6 +1,12 @@
[BITS 32]
MOV AL,'A'
CALL 2*8:0xbe3
fin:
HLT
JMP fin
MOV AL,'h'
CALL 2*8:0xbe8
MOV AL,'e'
CALL 2*8:0xbe8
MOV AL,'l'
CALL 2*8:0xbe8
MOV AL,'l'
CALL 2*8:0xbe8
MOV AL,'o'
CALL 2*8:0xbe8
RETF

View File

@@ -16,7 +16,7 @@
GLOBAL _asm_inthandler20, _asm_inthandler21
GLOBAL _asm_inthandler27, _asm_inthandler2c
GLOBAL _memtest_sub
GLOBAL _farjmp
GLOBAL _farjmp, _farcall
GLOBAL _asm_cons_putchar
EXTERN _inthandler20, _inthandler21
EXTERN _inthandler27, _inthandler2c
@@ -213,6 +213,10 @@ _farjmp: ; void farjmp(int eip, int cs);
JMP FAR [ESP+4] ; eip, cs
RET
_farcall: ; void farcall(int eip, int cs);
CALL FAR [ESP+4] ; eip, cs
RET
_asm_cons_putchar:
PUSH 1
AND EAX,0xff ; 将AH和EAX的高位置0将EAX置为已存入字符编码的状态