标题:编写操作系统?有趣:第一天
只看楼主
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:0 
MOV AH,2
     INT 13H中断是做什么的

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-04-29 02:46
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:0 
你那个显示字符串都调用一个子程序:
 LEA SI,[CODERMSG]
 CALL WRITESTRING

汇编里面不是有中断可以直接显示字符串的吗
mov dx,offset CODERMSG
 mov ah,09h
 int 21h
 


其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-04-29 02:52
AXRZ
Rank: 2
等 级:论坛游民
威 望:5
帖 子:48
专家分:84
注 册:2016-3-23
得分:0 
回复 12楼 zhulei1978
MOV AH,2
INT 13H
为INT13驱动器操作中的读盘操作。因为不知道硬盘的内存映射地址或I/O口,所以用INT13是最兼容的方法

INT 21里的中断为DOS中断,是DOS系统内核管理的,在编写内核是不能使用

[此贴子已经被作者于2016-4-29 04:14编辑过]

2016-04-29 04:13
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:0 
哦,谢谢,又学到新的知识了。

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-04-29 04:52
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:0 
你这一句是做什么用的:
  MOV BP,0FFFFH
  MOV SP,BP
为什么要将sp置0FFFFH

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-05-02 13:13
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:0 
  PUSHAW指令是做什么的啊,是NASM里的指令吗,MASM李没有这个指令

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-05-02 13:31
AXRZ
Rank: 2
等 级:论坛游民
威 望:5
帖 子:48
专家分:84
注 册:2016-3-23
得分:0 
回复 15楼 zhulei1978
这是设置堆栈的指令,意义是将栈底设置为0FFFFH,并初始化栈顶。此时堆栈底的位置是0000H:FFFFH,将SP置BP(0FFFFH)其实就是初始化堆栈,此时堆栈顶的位置和堆栈底一致,没有数据被保存在堆栈中。(INTEL架构中堆栈向低地址扩展)。

堆栈其实和普通内存没有大区别(区别是数据的读取和写入方式),你可以将一块普通的内存区域变成堆栈,或反过来。

设置堆栈的原因是我们可以用比MOV访问普通内存更优化的PUSH和POP指令,这两条指令比MOV更小,并且比MOV快,在读写暂时数据(例如函数的参数)时更有优势。缺点是要按照堆栈顺序进行读写(这也是为何它们比MOV快的原因)。

[此贴子已经被作者于2016-5-3 03:21编辑过]

2016-05-03 03:14
AXRZ
Rank: 2
等 级:论坛游民
威 望:5
帖 子:48
专家分:84
注 册:2016-3-23
得分:0 
回复 16楼 zhulei1978
PUSHAW的意义是Push All Word:
其将所有16位的通用寄存器入栈,是16位PUSHA指令的明确写法,明确入栈的寄存器为16位。

注:如果你编写的是32位的程序,那PUSHA就是入栈所有32位的通用寄存器;如果你编写的是十六位的程序,那PUSHA就是入站是所有16位的通用寄存器。但是如果是PUSHAW的就明确了入栈的为16位,PUSHAD明确入栈的为32位。
2016-05-03 03:26
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:0 
恩,谢谢
还在研究你的程序

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-05-03 04:37
dadongwushen
Rank: 2
等 级:论坛游民
帖 子:8
专家分:10
注 册:2016-5-13
得分:0 
那如果用c语言编写操作系统,我们用什么程序编译啊?
2016-05-13 21:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-462812-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070216 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved