哈工大操作系统试验1 操作系统的引导

这篇博客介绍了哈工大操作系统实验的第一部分,涉及到操作系统的引导过程。实验主要修改了三个文件,尤其是setup文件,其中讲解了如何使用汇编语言输出字符串,包括使用中断INT 0x10进行视频显示,以及涉及到的寄存器如ES, BP, AL, BH和BL的用法。此外,文章还提到了位移指令ROL和条件转移指令如CMP和jl, jg等,并给出了setup代码的示例。" 134769082,7351249,深度学习中的卷积算法:模拟人眼识别,"['深度学习', '神经网络', '计算机视觉']
摘要由CSDN通过智能技术生成

这次实验涉及一些汇编知识,不过指导书上写的还是比较清楚的,抄一抄上面的代码,基本就ok了。

实验主要需要改3个文件

build.c           只要吧文件末尾稍微改成这样

if ((id=open(argv[3],O_RDONLY,0)) >= 0)                                        //就是打开文件的一个函数,失败的话会返回-1哦~
	{for (i=0 ; (c=read(id,buf,sizeof buf))>0 ; i+=c )
		if (write(1,buf,c)!=c)
			die("Write call failed");
	close(id);
	fprintf(stderr,"System is %d bytes.\n",i);
	if (i > SYS_SIZE*16)
		die("System is too big");}
	return(0);

build.c       原来是这样的

if ((id=open(argv[3],O_RDONLY,0))<0)
		die("Unable to open 'system'");
//	if (read(id,buf,GCC_HEADER) != GCC_HEADER)
//		die("Unable to read header of 'system'");
//	if (((long *) buf)[5] != 0)
//		die("Non-GCC header of 'system'");
	for (i=0 ; (c=read(id,buf,sizeof buf))>0 ; i+=c )
		if (write(1,buf,c)!=c)
			die("Write call failed");
	close(id);
	fprintf(stderr,"System is %d bytes.\n",i);
	if (i > SYS_SIZE*16)
		die("System is too big");
	return(0);
bootsect.s  基本不用过动,如果觉得无聊可以改一改输出的那个字符串。

msg1:
	.byte 13,10                    !这个好像是伪指令   byte和ascii是两种数据的表示方法
	.ascii "fuck..."
	.byte 13,10,13,10

主要需要改动的是setup这个文件。

首先解释一下,输出一条字符串的代码。

!print the message
 
              MOV       AX,#SETUPSEG
              MOV       ES,AX                          !赋值给ES不能直接赋值,需要用AX做中转
              MOV       AH,#0X03                       !下三行为读入光标位置
              XOR       BH,BH                           
              INT       0X10

              MOV       CX,#25                         !字符串长度,设大一点没关系~
              MOV       BX,#0X0007
              MOV       BP,#MSG2
              MOV       AX,#0X1301
              INT       0X10
ES 和 BP 分别是段寄存器和,偏移地址,把ES设#SETUPSEG是内存中存放setup.s开始的地方,BP表示存放#MSG2的偏移地

<

  • 13
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值