30天自制操作系统 day2 32位处理器的几个寄存器 换种方式制作磁盘镜像 makefile

文章讲述了在32位处理器环境下,使用自制工具edimg创建磁盘镜像遇到的问题。用户发现自己的汇编代码在edimg中无法通过,经过分析发现需要在特定位置添加规定信息。修复后,代码能成功生成镜像。另外,使用作者提供的程序在QEMU中运行时,由于目标文件名错误导致运行失败,纠正文件名后问题解决。

32位处理器的几个寄存器

在这里插入图片描述
在这里插入图片描述

制作磁盘镜像工具

用的是它自己写的工具,叫edimg。使用方式如下

edimg imgin:../z_tools/fdimg0at.tek   wbinimg src:ipl.bin len:512 from:0 to:0   imgout:helloos.img

读取fdimg0at.tek,在读取ipl.bin,从ipl.bin的开头读512个字节到fdimg0at.tek中,并另存为helloos.img。

ipl.bin就是编译出来的二进制代码。可以用作者提供的启动程序,也可以用day1自己写的。作者提供的程序多了一些内容。是一些参数。

错误

错误1:自己写的程序在edimg不通过

问题描述

不知道为什么,我用自己在day1写的程序编译,编译没有问题,但是edimg报错:
在这里插入图片描述

解决

我想edimg对这个有严格规定。就是必须在某个规定的位置有一些信息。把那些信息加上,edimg就让过了。

ORG 0x7c00 ;伪指令,告诉编译器第一条指令的地址是0x7c00,cpu并不执行
    JMP		entry
	DB		0x90
	DB		"HELLOIPL"		; �u�[�g�Z�N�^�̖��O�����R�ɏ����Ă悢�i8�o�C�g�j
	DW		512				; 1�Z�N�^�̑傫���i512�ɂ��Ȃ���΂����Ȃ��j
	DB		1				; �N���X�^�̑傫���i1�Z�N�^�ɂ��Ȃ���΂����Ȃ��j
	DW		1				; FAT���ǂ�����n�܂邩�i���ʂ�1�Z�N�^�ڂ���ɂ���j
	DB		2				; FAT�̌��i2�ɂ��Ȃ���΂����Ȃ��j
	DW		224				; ���[�g�f�B���N�g���̈�̑傫���i���ʂ�224�G���g���ɂ���j
	DW		2880			; ���̃h���C�u�̑傫���i2880�Z�N�^�ɂ��Ȃ���΂����Ȃ��j
	DB		0xf0			; ���f�B�A�̃^�C�v�i0xf0�ɂ��Ȃ���΂����Ȃ��j
	DW		9				; FAT�̈�̒����i9�Z�N�^�ɂ��Ȃ���΂����Ȃ��j
	DW		18				; 1�g���b�N�ɂ����‚̃Z�N�^�����邩�i18�ɂ��Ȃ���΂����Ȃ��j
	DW		2				; �w�b�h�̐��i2�ɂ��Ȃ���΂����Ȃ��j
	DD		0				; �p�[�e�B�V�������g���ĂȂ��̂ł����͕K��0
	DD		2880			; ���̃h���C�u�傫����������x����
	DB		0,0,0x29		; �悭�킩��Ȃ����ǂ��̒l�ɂ��Ă����Ƃ����炵��
	DD		0xffffffff		; ���Ԃ�{�����[���V���A���ԍ�
	DB		"HELLO-OS   "	; �f�B�X�N�̖��O�i11�o�C�g�j
	DB		"FAT12   "		; �t�H�[}�b�g�̖��O�i8�o�C�g�j
	RESB	18				; �Ƃ肠����18�o�C�g�����Ă���
entry:
	MOV SI,data
putloop:
    ;为显卡中断做参数准备
    MOV AL,[SI] ;AL 要打印的字符
    CMP AL,0
	JE end
    MOV AH,0x0e ;操作码,0x0e是打印字符
    MOV BL,15   ;颜色码
    MOV BH,0    ;规定填0
    INT 0x10    ;显卡中断,填充好AL,AH,BL,BH,进行显卡中断将显示一个字符
    ADD SI,1
    JMP putloop
end:
    HLT
    JMP end
data:
    DB 0x0a ;换行
    DB "hello_world!"
    DB 0x0a ;换行
    DB 0 ;结束符
fill:
    RESB 0x7dfe-$
    DB 0x55,0xaa

错误2:用作者的程序,运行出问题

问题描述

如果用作者的那个程序,运行前一切顺利,但是运行结果是这样的。
在这里插入图片描述

解决

是因为把镜像复制到qemu目录时,目标文件名错了。
在这里插入图片描述
正确的应该是:fdimage0.bin
原本qemu中就有这个文件,如果没有发生替换,就是错的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值