- [123lalala] 在哪里看虚拟软盘的知识呢 04/22 21:42
- [1160321430] 迈过了这道坎感觉心里敞亮多了,但是还没有完,还是要想一想是不是有其他的方法可以优化程序使其变得更加简 04/11 20:14
[2014-04-24 20:25] 一个操作系统的实现_十分钟完成的操作系统
步骤: 1.编辑器(例如记事本)写入操作系统启动代码,保存为后缀名为.asm的文件格式
2.安装一款虚拟机软件以wm为例,新建一个虚拟机,注意操作系统与版本都选择其他,创建的最后一步选择[自定义硬件],
进入后选择[添加],选择[软盘驱动器],接着[创建空软盘映像],在虚拟机根目录下任意创建一个后缀名为.img或者.flg的映像文件
(可以新建文本文档,更改后缀名),选中保存即可。创建成功后到根目录下可以看到这个文件的大小为1074560字节即1.44M
3.利用汇编编译器NASM编译:>nasm *.asm -o *.bin(其中*号分别代表汇编文件名和希望生成的bin文件名) ...
2.安装一款虚拟机软件以wm为例,新建一个虚拟机,注意操作系统与版本都选择其他,创建的最后一步选择[自定义硬件],
进入后选择[添加],选择[软盘驱动器],接着[创建空软盘映像],在虚拟机根目录下任意创建一个后缀名为.img或者.flg的映像文件
(可以新建文本文档,更改后缀名),选中保存即可。创建成功后到根目录下可以看到这个文件的大小为1074560字节即1.44M
3.利用汇编编译器NASM编译:>nasm *.asm -o *.bin(其中*号分别代表汇编文件名和希望生成的bin文件名) ...
阅读全文 |
评论次数(0) |
浏览次数(630) |
所属类型(构建OS)
[2014-04-20 21:14] 研究实验1_搭建一个精简的C语言开发环境(包含部分经典的前言)
综合研究:
在这部分内容中,将启示我们如何进行独立研究和深度思考(一定要注意这一点,相应的调整自己的学习思想)。同时使我们:
(1)认识到汇编语言对于深入理解其他领域知识的重要性。
(2)对前面所学习的汇编语言知识进行融会。
(3)对用研究的方法进行学习进行体验。
研究实验1_搭建一个精简的C语言开发环境:
在运行过程中如果需要使用TC 2.0中的相关文件,就会出现文件找不到的错误,我们根据提示信息,就可以知道
找不到的是哪个文件,也就可能分析出这个文件是干什么用的。
1.缺少目标文件cos.obj...
在这部分内容中,将启示我们如何进行独立研究和深度思考(一定要注意这一点,相应的调整自己的学习思想)。同时使我们:
(1)认识到汇编语言对于深入理解其他领域知识的重要性。
(2)对前面所学习的汇编语言知识进行融会。
(3)对用研究的方法进行学习进行体验。
研究实验1_搭建一个精简的C语言开发环境:
在运行过程中如果需要使用TC 2.0中的相关文件,就会出现文件找不到的错误,我们根据提示信息,就可以知道
找不到的是哪个文件,也就可能分析出这个文件是干什么用的。
1.缺少目标文件cos.obj...
阅读全文 |
评论次数(0) |
浏览次数(605) |
所属类型(汇编作业)
[2014-04-20 21:12] 课程设计二--占位
先做完研究实验,再看看《自己动手写操作系统》和《30天自制操作系统》——需要用到虚拟机和软盘,了解完关于虚拟机和虚拟软盘的相关知识后再来挑战课设二。...
阅读全文 |
评论次数(1) |
浏览次数(867) |
所属类型(汇编作业)
[2014-04-18 21:29] 实验十六_编写包含多个功能子程序的中断例程
安装一个新的int 7ch中断例程,为显示输出
提供如下功能子程序:
(1)清屏。
(2)设置前景色。
(3)设置背景色。
(4)向上滚动一行。
入口参数说明:
(1)用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,
3表示向上滚动一行:
(2)对于2、3号功能,用al传送颜色值,(al)属于集合{0,1,2,3,4,5,6,7}
分析:
首先:搭建框架:
int 7ch例程安装
设置中断向量表
程序返回
int7:
寄存器入栈
入口地址直接定值,sub 1、2、3、4
寄存器出栈
int7e...
提供如下功能子程序:
(1)清屏。
(2)设置前景色。
(3)设置背景色。
(4)向上滚动一行。
入口参数说明:
(1)用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,
3表示向上滚动一行:
(2)对于2、3号功能,用al传送颜色值,(al)属于集合{0,1,2,3,4,5,6,7}
分析:
首先:搭建框架:
int 7ch例程安装
设置中断向量表
程序返回
int7:
寄存器入栈
入口地址直接定值,sub 1、2、3、4
寄存器出栈
int7e...
阅读全文 |
评论次数(0) |
浏览次数(621) |
所属类型(汇编作业)
[2014-04-18 21:00] 一个想了好几天的问题——关于8086cpu自己编写9号中断不能单步的问题
在《汇编语言》第十五章中我们可能遇到这样的问题:程序运行正确,但是debug单步调试,却无法运行
修改int 9h中断例程入口地址的指令,虚拟模式下,debug提示指令无效,而在实模式下,则程序卡死。
这里我的看法如下:因为我们单步的时候,当设置9号中断偏移地址的指令执行后,这时段地址还没有进行相应
的设置,而单步键入命令(如:t命令)的时候程序要调用键盘中断程序,这就导致程序转去一个错误的地址
执行程序,这就造成了一种假象—程序卡死,其实这时只是键盘中断的入口地址不正确,导致键入的字符失去
响应,这样的话,如果我们要用debug调试程序,就需要用g命令跳过设置int 9中断入口地址...
修改int 9h中断例程入口地址的指令,虚拟模式下,debug提示指令无效,而在实模式下,则程序卡死。
这里我的看法如下:因为我们单步的时候,当设置9号中断偏移地址的指令执行后,这时段地址还没有进行相应
的设置,而单步键入命令(如:t命令)的时候程序要调用键盘中断程序,这就导致程序转去一个错误的地址
执行程序,这就造成了一种假象—程序卡死,其实这时只是键盘中断的入口地址不正确,导致键入的字符失去
响应,这样的话,如果我们要用debug调试程序,就需要用g命令跳过设置int 9中断入口地址...
阅读全文 |
评论次数(0) |
浏览次数(602) |
所属类型(疑惑:思考)
[2014-04-17 18:38] 实验十五_安装新的int 9中断例程
;安装一个新的int 9中断例程,功能:在DOS下,按下“A”键后,除非不在松开,
; 如果松开,就显示满屏幕的“A”;其他的键照常处理。
;提示:按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。
; 断码 = 通码 + 80h。
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset int9;ds:si指向源地址
mov ax,0
mov es,ax
mov di,204h;es:di指向目的地址
mov cx,offset int9end ...
; 如果松开,就显示满屏幕的“A”;其他的键照常处理。
;提示:按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。
; 断码 = 通码 + 80h。
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset int9;ds:si指向源地址
mov ax,0
mov es,ax
mov di,204h;es:di指向目的地址
mov cx,offset int9end ...
阅读全文 |
评论次数(0) |
浏览次数(586) |
所属类型(汇编作业)
[2014-04-13 15:50] 实验十四_访问CMOS RAM
;编程:以“年/月/日 时:分:秒”的格式,显示当前的日期,时间。
;注意:CMOS RAM中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元写入内容,否则将引起一些系统错误。
assume cs:code,ds:data
data segment
db '00/00/00/ 00:00:00','$'
data ends
code segment
index_cmostime:db 9,8,7,4,2,0;存储cmos ram中存放时间信息的单元编号。
index_datatime:db 0,3,6,10,13,16;data数据段中每个时间信息的...
;注意:CMOS RAM中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元写入内容,否则将引起一些系统错误。
assume cs:code,ds:data
data segment
db '00/00/00/ 00:00:00','$'
data ends
code segment
index_cmostime:db 9,8,7,4,2,0;存储cmos ram中存放时间信息的单元编号。
index_datatime:db 0,3,6,10,13,16;data数据段中每个时间信息的...
阅读全文 |
评论次数(0) |
浏览次数(578) |
所属类型(汇编作业)
[2014-04-13 13:13] 实验十三_编写、应用中断例程_ 3
;下面的程序,分别在屏幕的第2、4、6、8行显示四句英文诗,补全程序。
;完成后编译运行,体会其中的编程思想。
assume cs:code
code segment
s1:db 'Good,better,beat,','$'
s2:db 'Never let it rest,','$'
s3:db 'Till good is better,','$'
s4:db 'And better,best.','$'
s:dw offset s1,offset s2,offset s3,offset s4
row:db 2,4,6,8
start...
;完成后编译运行,体会其中的编程思想。
assume cs:code
code segment
s1:db 'Good,better,beat,','$'
s2:db 'Never let it rest,','$'
s3:db 'Till good is better,','$'
s4:db 'And better,best.','$'
s:dw offset s1,offset s2,offset s3,offset s4
row:db 2,4,6,8
start...
阅读全文 |
评论次数(0) |
浏览次数(596) |
所属类型(汇编作业)
[2014-04-12 21:58] 实验十三_编写、应用中断例程_2 总结
总结:
遇到的问题:无法显示字符串"!!!!!!(80个)"
解决方法:用测试程序调试,发现调用int 7ch中断例程后程序的指向不正确
找到以下逻辑错误(非语法错误),都是中断例程安装时的问题:
1.mov si,sub_loop 忘了offset操作符,反汇编了一下发现有无操作符offset对生成的机器码没有影响,
程序照样能正确的跑起来.
2.mov si,200h 应该改为mov di,200h,因为后边用了串传送指令,默认的目的地址在es:[di]中.
收获: 1.编写程序到底是一口气先写完了再添加注释,还是边写边添加注释,我自己的看法是前者节省...
遇到的问题:无法显示字符串"!!!!!!(80个)"
解决方法:用测试程序调试,发现调用int 7ch中断例程后程序的指向不正确
找到以下逻辑错误(非语法错误),都是中断例程安装时的问题:
1.mov si,sub_loop 忘了offset操作符,反汇编了一下发现有无操作符offset对生成的机器码没有影响,
程序照样能正确的跑起来.
2.mov si,200h 应该改为mov di,200h,因为后边用了串传送指令,默认的目的地址在es:[di]中.
收获: 1.编写程序到底是一口气先写完了再添加注释,还是边写边添加注释,我自己的看法是前者节省...
阅读全文 |
评论次数(0) |
浏览次数(575) |
所属类型(实验总结和感悟)
[2014-04-12 21:55] 实验十三_编写、应用中断例程_2
;编写并安装int 7ch中断例程,功能为完成loop指令的功能
;参数:(cx)= 循环次数,(bx)= 位移
;以上中断例程安装成功后,对下面的程序进行单步跟踪,尤其注意观察int、iret指令执行前后cs、ip和栈中的状态。
;在屏幕中间显示80个‘!’
assume cs:code
code segment
start: mov ax,0b800h
mov es,ax
mov di,160*12
mov bx,offset s - offset se;设置从标号se到s的转移位移
mov cx,80
s: mov byte ptr es:[di],...
;参数:(cx)= 循环次数,(bx)= 位移
;以上中断例程安装成功后,对下面的程序进行单步跟踪,尤其注意观察int、iret指令执行前后cs、ip和栈中的状态。
;在屏幕中间显示80个‘!’
assume cs:code
code segment
start: mov ax,0b800h
mov es,ax
mov di,160*12
mov bx,offset s - offset se;设置从标号se到s的转移位移
mov cx,80
s: mov byte ptr es:[di],...
阅读全文 |
评论次数(0) |
浏览次数(573) |
所属类型(汇编作业)
『 查看更多文章 』