1.如何在80x86汇编语言里输出-1?,源码源码源码求解
2.emu8086使用方法
3.电脑如何编写系统电脑系统是如何制作的
如何在80x86汇编语言里输出-1?,源码求解
; -1 在计算机内部用补码表示,若是源码源码字节数 则为 FFh,若是源码源码字 则为 FFFFh
CODE SEGMENT
ASSUME CS:CODE
X DW 0FFFFH
START: PUSH CS
POP DS
PUSH CS
POP ES
MOV AX,X
CALL DSPAXS
MOV AH,4CH
INT H
;==================================
; 输出有符号数,输出的源码源码数应放 ax中
DSPAXS PROC NEAR
PUSH AX
OR AX,AX
JNS @DSPAXS
NEG AX
PUSH AX
PUSH DX
MOV AH,2
MOV DL,'-'
INT H
POP DX
POP AX
@DSPAXS:
CALL DSPAX
POP AX
RET
DSPAXS ENDP
;===============================
DSPAX PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSHF
XOR CX,CX
MOV BX,
@DSPAX1:
XOR DX,DX
DIV BX
INC CX
OR DX,H
PUSH DX
CMP AX,0
JNE @DSPAX1
MOV AH,2
@DISPAX2:
POP DX
INT H
LOOP @DISPAX2
MOV DL,
INT H
POPF
POP DX
POP CX
POP BX
POP AX
RET
DSPAX ENDP
;================================
CODE ENDS
END START
emu使用方法
运行Emu模拟器的方法是,在开始菜单中选中它的源码源码图标,或直接运行Emu.exe文件。源码源码武林风云mud源码接着,源码源码在"FILE"菜单中选择"SAMPLE",源码源码点击"Compile and Emulate"按钮或使用快捷键F5,源码源码最后点击"Single Step"按钮或按F8,源码源码以观察代码执行过程。源码源码 十进制系统是源码源码目前使用最广泛的计数系统,它由0至9这十个数字组成。源码源码任何数值都可以通过将每位数字乘以其对应的源码源码基数的幂次累加得出,基数为,源码源码因为十进制中有十个数字。数值的位置非常重要,例如,将“7”放置在末尾变为“”,数值变为: 特别提示:任何数字的0次幂都是1,而0的0次幂也定义为1。 二进制系统则简单得多,仅由两个数字0和1构成。每一位二进制数称为一个位(BIT),4个位组成一个半字节(NIBBLE),8个位构成一个字节(BYTE),两个字节构成一个字(WORD),两个字构成一个双字(DOUBLE WORD)(很少使用)。我们习惯在二进制数后加“b”,如“b”表示十进制的5。 二进制数“b”代表十进制的,计算方法如下:1×2^7 + 0×2^6 + 1×2^5 + 0×2^4 + 0×2^3 + 1×2^2 + 0×2^1 + 1×2^0。 十六进制系统使用个数字(0-9和A-F),基底为。该系统非常紧凑且易于阅读。将二进制转换为十六进制非常容易,4位二进制对应一位十六进制,如下表所示: Decimal (base ) | Binary (base 2) | Hexadecimal (base )-------------------|-----------------|---------------------
0 | | 0
1 | | 1
2 | | 2
... | ... | ...
| | F
习惯上在十六进制数后加“H”,例如“5Fh”表示十进制的。在以字母开头(A到F)的十六进制数前加“0”,如“0Eh”。十六进制h等于十进制的。 在进行十进制到其他进制的换算时,需要将十进制数不断除以目标进制的基底,记录每次的商和余数,直到商为0。余数即为结果的一部分。例如,将十进制(基底是)转换为十六进制(基底是),结果为“H”。复杂例子如十进制转换为十六进制,结果为“0AB5Ch”,通过对照表将大于9的数字替换为字母。 有符号数的表示方法需要考虑十六进制数的上下文。例如,全采种福彩源码“0FFh”可能表示十进制的“”或“-1”,取决于上下文。对于8位数,有个状态,前个表示正数(从0到),接下来的个表示负数(从到)。表示“-5”的方法是从中减去5,即 - 5 = 。这种表示负数的方法在数学上是有效的,因为“-5”加上“5”等于0。当两个8位数(5和)相加时,结果超过,溢出处理为0!高位始终为1,作为数字符号的标记。 Emu模拟器包含数制转换工具,可用于计算各种数值表达式。在菜单中选择“Math”选项,点击“Number Convertor”实现任意数制之间的转换,或使用“Expression Evaluator”进行不同数制的计算以及从一个进制转换为另一个进制。最长可以进行位的计算。在“Signed”选项开启时(除了八进制和双字),最前面的一位被视为符号位。例如,计算“0FFFFh * h + 0FFFFh”( CPU所能访问的最大内存地址)时,结果为“-”。如果想按照无符号数进行计算,则不需要选择“Signed”。同样,可以使用“Number Convertor”将非十进制转换为有符号的十进制,然后进行十进制计算。支持以下运算:~ not (位取反)
* multiply (乘法)
/ divide (除法)
% modulus (取模)
+
- subtract (减法)和单目负号
<< shift left (左移)
> shift right (右移)
& bitwise AND (按位与)
^ bitwise XOR (按位异或)
| bitwise OR (按位或)
二进制数必须以“b”结尾,例如“b”;十六进制数必须以“h”结尾,若第一位为字母,则最前面需加“0”,例如“0ABCDh”;八进制数必须以“o”结尾,例如“o”。扩展资料
EMU是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu集源代码编辑器,汇编/反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。电脑如何编写系统电脑系统是如何制作的
‘壹’ 怎么编写电脑系统
1. 建立开发环境
这一步非常的简单。
将masm和vc的压缩包分别解压到e:masm和e:msvc目录下。你也可以放到其他目录下,根据自己的情况而定,但是下面用到的编译命令需要作相应的修改。也不需要添加或修改任何的精益模块 源码环境变量。
2. IBM PC的启动及当时的内存使用情况
这一部分内容已经是老生常谈了,但又不能不说。我们只说从硬盘引导的情况。
当BIOS经过POST(Power On Test Self)后,将硬盘MBR读到内存0x:0x7C的位置,然后从这里开始执行。一般的情况,MBR将选择活动分区进行操作系统的启动。在MBR开始执行时,内存使用的情况如下图所示,地址数据用进制表示:
这已经是老掉牙的内容了,但是,在年前却十分流行。如果想更详细的了解这方面的内容,找本讲解DOS的书看看吧。
我们自己的操作系统将被加载到0x:0x。这不是必需或者必然的,是人为选择的,你也可以将其放在0x:等其他地方。但是,上图中注明有其他用途的内存区域,应该保留,否则,你会后悔的。
3. 开发操作系统
我们自己的操作系统运行在实模式环境下(如果您不知道什么是实模式,也请看看年前出版的当时非常流行的书,或者直接请教当时的前辈高手)。即使你的电脑是P4的CPU,刚启动时,也只相当于主频较高的而已。但是,没有关系。
首先,使用汇编语言写一个框架,文件名是entry.asm:
; entry.asm
; Copyright (C) , Tian XiangYuan
.MODEL TINY,C
.p
option expr
option casemap:none
cmain PROTO NEAR C
.CODE
ORG h ;偏移地址
_start:
jmp begin
nop
DB 'TianXiangYuan',0 ;the magic of my os
begin:
cli
mov ax,cs
mov ds,ax
mov es,ax
mov ss,ax
mov sp,0FFFFh
sti
call cmain ;调用C语言写的主函数
mov ax,4ch ;调用DOS的功能(为了调试),与我们自己的操作系统无关
int h
这段代码非常简单,应该没有什么问题。
已经说了,操作系统将从0x:0x加载,说是无心,实则有意。我们知道,TINY模式的程序,在DOS下运行时,其起始地址就是0x,前面的Byte是参数部分。如果直接将操作系统在系统启动时加载到0x:0x,调试时非常麻烦。我们将其起始地址设为0x,使其可以在DOS下运行(这也是在程序的最后包含int h指令的原因),确认正确无误后,再进行下一步的开发。
下面再看C语言的代码,文件名是内核源码升级内核main.c:
……
static void InitShell()
{
}
void cmain()
{
InitShell();
TermShell();
}
顾名思义,其中实现了一个简单的shell。因为该程序本身是操作系统的一部分,所以,平时经常使用的一些C库函数,在这里就不能使用了。总之,一切都要自己动手实现。幸好,在实模式下,几乎所有的设备的驱动都包含在BIOS中了,我们可以直接使用。否则,连从键盘读一个键值这样的事都需要自己写键盘的驱动程序,实在太难了。也是这个原因,我们自己的操作系统没有将CPU转到保护模式下,有心之人可以试试。
下面的事情几乎都可以使用C语言实现了。
第一,初始化显示模式。系统启动时,显卡已经被初始化成3模式了,就是X的彩色模式(除非你的显示器是单色显示器),我们不需要再做什么了。当然,你也可以将显卡设成VGA甚至SVGA模式,只要你的BIOS和显卡支持。
第二,实现一个具有简单交互功能的shell。代码不全,请自己补齐,或参看附件。
/
**从键盘读一个字符,如果没有输入,则等待;返回值的低字节为asii码,高字节为键盘扫描码
*/
static int getch()
{
int chr=0;
__asm
{
mov ah,h
int h
mov chr,ax
}
return chr;
}
/
**使用TTY模式向屏幕输出一个字符
*/
static void putch(unsigned char key)
{
__asm
{
mov bh,0
mov al,key
mov ah,0Eh
int h
}
}
#define KEY_BACKSPACE 0x
#define KEY_ENTER 0x0D
#define KEY_NEWLINE 0x0A
#define KEY_ESCAPE 0x1B
static int printk(const char* str,...)
{
…… //给大家一点空间,自己实现吧
}
static void endline()
{
putch(KEY_NEWLINE); //Line Feed (LF)
putch(KEY_ENTER); //Enter (CR)
}
static char msg_prompt[]="CMD:";
static void deal_cmd(char* cmd_line,int cmd_len)
{
…… //也请大家自己实现吧,例如,可以实现help,dir,cls,halt等命令
…… //其实,就是字符串比较的过程
}
static void TermShell()
{
char cmd_line[]={ 0,};
int cmd_len=0;
endline();
printk(msg_prompt,sizeof(msg_prompt));
for (;;)
{
cmd_line[cmd_len]=getch();
switch(cmd_line[cmd_len])
{
case KEY_ENTER:
if (cmd_len>1)
deal_cmd(cmd_line,cmd_len);
//break;
case KEY_ESCAPE:
cmd_len=0;
endline();
printk(msg_prompt,sizeof(msg_prompt));
break;
case KEY_BACKSPACE:
if (cmd_len>0)
{
putch(0x);
putch(' ');
putch(0x);
cmd_len--;
}
break;
default:
putch(cmd_line[cmd_len]);
cmd_len++;
}
}
}
更复杂、功能更强大的方法请参考BIOS的相关文档。也请大家发挥想象力,不断的扩展功能。说心里话,这个“操作系统”比dos还原始!但毕竟是自己的操作系统。
‘贰’ 电脑系统是如何制作的
开机放入光盘,按Del进BIOS,找到Advanced Bios Features(高级BIOS参数设置)按回车进Advanced Bios Features(高级BIOS参数设置)界面。找到First Boot Device ,用PgUp或PgDn键,自动钱咖源码将HDD-O(硬盘启动)改为CDROM(光驱启动),按ESC,按F,按Y,回车,保存退出。 这时要注意观察,启动时计算机会先检测光驱,屏幕下面出现一行字符,意思就是让你按任意键进入光盘启动。按一下,听到光驱开始疯转,装系统的过程就正式开始了! 装系统中: 看屏幕中的提示,因为都是中文的所以几乎不需要介绍什么。首先需要用户选择是安装新的操作系统还是修复,选择安装新的操作系统,然后按F8同意那些协议,出现盘符选择界面。 用键盘上下键移动光标至你要安装的盘符上,按“D”键,系统会提示说删除该盘将会删除所有资料,不管它,接着按“L”键再确定删除。完成后屏幕返回到刚才的界面。然后选择“在当前盘安装WindowsXP”(大概意思,原文不记的了)后按回车,系统提示要格式化该盘。选择“快速NTFS方式”格式化,此时出现格式化界面,稍候等进度条到%时计算机开始自动装入光驱中的安装文件,大概时间8分钟左右(视光驱速度而定),完成后系统自动重启。 注意,此时要将光驱里的安装盘取出,为的是避免重启后又自动读取。 重启后再次进入安装界面,此时将安装盘再放入后安装继续,几乎不需要你做任何设置,点“下一步”就可以。不过中间有一个输入序列号的过程得动动手。 这个过程大概分钟左右,其间屏幕会显示一些关于windowsXP的相关功能信息,可以留意一下。完成后系统提示将安装盘取出。你拿出来后,重启,顺便进BIOS将开机启动顺序改回至硬盘启动,基本上就完成安装过程了! 装系统后: 一般在进入系统后常用硬件的驱动都已经安装好,但不是全部。这时就需要用户自己来安装。首先查看机器哪些驱动未安装!右键点击“我的电脑”,选“属性”,在“硬件”标签里点击“设备管理器”,凡是在设备前面有一个问号图标的均表示该设备有问题。双击,按上面的提示将驱动安装好。直到前面的“问号”全部消失为止。 需要装的驱动一般有显卡、声卡、网卡、猫,一些比较高级的机器还有红外、蓝牙等适配器的驱动。 下面就是对系统的一些优化设置,如果你的机器配置不高,建议按我说的做。 重启, 1> 右键单击屏幕,选择“属性”。点击“外观”标签,在“外观与按钮”的下拉菜单中选择“Windows经典样式”,然后在“设置”标签里,按个人喜好调整屏幕分辨率大写,一般为*。如果你用的是普通CRT显示器,需要再点“监视器”标签,将“屏幕刷新频率”调整至“赫兹”,点确定!屏幕看起来是不是舒服多了? 2> 右键单击任务栏,选择“属性”,在“任务栏”标签项中将“显示快速启动”前的复选框选中。然后再点击““开始”菜单”标签,将菜单类改成“经典“开始”菜单”,点“确定”,看看现在的样子是不是要舒服点呢?( 3> 右键单击我的电脑,选择“高级”标签。单击性能项里的“设置”按钮。在视觉效果项里先点击“调整为最佳性能”,然后在下面的复选项里选中“在文件夹中使用常见任务”。
赞同|评论(2)
‘叁’ 电脑如何自己做系统
我自己有写的教程ifloveu.com
‘肆’ 电脑系统怎么做
在开始回答你的问题之前,先看看程序的发展历史,请留意有关储存器和数据的描述:
年:Babbage 设想制造一台通用分析机,在只读存储器(穿孔卡片)中存储程序和数据 。Babbage在以后的时间里继续他的研究工作,并于 年将操作位数提高到了 位,并基本实现了控制中心(CPU)和存储程序的设想,而且程序可以根据条件进行跳转,能在几秒内做出一般的加法,几分钟内做出乘、除法。
年:美国人口普查部门希望能得到一台机器帮助提高普查效率。Herman Hollerith (后来他的公司发展成了IBM 公司)借鉴Babbage 的发明,用穿孔卡片存储数据,并设计了机器。结果仅用6 周就得出了准确的人口统计数据(如果用人工方法,大概要花 年时间)。
年:IBM 推出IBM 机。这是一台能在一秒钟内算出乘法的穿孔卡片计算机 。这台机器无论在自然科学还是在商业应用上都具有重要的地位,大约制造了 台。
年夏季:Atanasoff 和学生Berry 完成了能解线性代数方程的计算机,取名叫"ABC "(Atanasoff-Berry Computer),用电容作存储器 ,用穿孔卡片作辅助存储器,那些孔实际上是"烧"上去的,时钟频率是Hz,完成一次加法运算用时一秒。
年1 月:Mark I 自动顺序控制计算机在美国研制成功。整个机器有 英尺长 、5 吨重 、万个零部件。该机使用了 个继电器, 个开关作为机械只读存储器。程序存储在纸带上 ,数据可以来自纸带或卡片阅读器。Mark I 被用来为美国海军计算弹道火力表。
年9 月:Williams 和Stibitz 完成了"Relay Interpolator ",后来命名为"Model Ⅱ Re-
lay Calculator "的计算机。这是一台可编程计算机,同样使用纸带输入程序和数据。它运行更可靠,每个数用7 个继电器表示,可进行浮点运算。
真空管时代的计算机尽管已经步入了现代计算机的范畴,但因其体积大、能耗高、故障多、价格贵,从而制约了它的普及和应用。直到晶体管被发明出来,电子计算机才找到了腾飞的起点。
年:Bell 实验室的William B.Shockley 、 John Bardeen 和Walter H.Brattain 发明了晶体
管,开辟了电子时代新纪元。
年:剑桥大学的Wilkes 和他的小组制成了一台可以存储程序的计算机,输入输出设备仍是纸带。
年:EDVAC(Electronic Discrete Variable Automatic Computer--电子离散变量自动计算机)--第一台使用磁带的计算机。这是一个突破,可以多次在磁带上存储程序。这台机器是John von Neumann 提议建造的。
年:日本东京帝国大学的Yoshiro Nakamats 发明了软磁盘 ,其销售权由IBM公司获得 。由此开创了存储时代的新纪元。
年:Grace Murray Hopper 完成了高级语言编译器。
年:UNIVAC-1 --第一台商用计算机系统诞生,设计者是J.Presper Eckert 和John Mauchly 。
被美国人口普查部门用于人口普查,标志着计算机进入了商业应用时代。
年:磁芯存储器被开发出来。
年:IBM 的John Backus 和他的研究小组开始开发FORTRAN(FORmula TRANslation) , 年完成。这是一种适合科学研究使用的计算机高级语言。
年:IBM 开发成功第一台点阵式打印机。
好了现在开始吧:
操作系统是什么呢?说白了就是一套计算机的指令集合,而计算机的指令就是''之类的机器码,说到底,‘’也是数据,就是可以储存在介质之中的东东,比如纸质卡片,磁盘,芯片上。对于问题“第一个操作系统如何编写的呢”,可以归结为:第一个计算机软件如何编写(在这里,请改变对操作系统的神秘感,操作系统也是一个软件,一个特殊的程序),即是计算机的指令如何记录下来,并且被计算机执行。那么答案已经出来了~~,请再次看一下上面的例子,你会有所启发
还有什么问题请问吧~~~
还有一个问题回答:“自带boot”虽然不知道你这是什么意思(boot程序),但是可以肯定告诉你,在硬件生产时,“可以”直接把’boot”生产在芯片上,为什么?如上说,程序就是数据,生产商只要在芯片上设置电路的通断,就可以表示 (注意了,这里只是一个例子)
好吧,现在假设我们有电脑,要开发操作系统,但是知道计算机指令
那么下面的一段程序(示例)我不得不把他写在纸质笔记本上:
mov ax,0
..
...
这段程序人工翻译成机器码,到现在还没有操作系统:
........
好了操作系统在我的纸上写好了,我就请求硬件开发商把我的程序刻录到软盘上,于是开发商就对照.....把数据刻录到软盘上
于是,操作系统开发完毕,只要想办法被CPU执行就可以了
‘伍’ 电脑系统如何做
如何重新安装XP系统(SP1同SP2安装方法相同)
第一步,设置光盘启动:
所谓光盘启动,意思就是计算机在启动的时候首先读光驱,这样的话如果光驱中有具有光启功能的光盘就可以赶在硬盘启动之前读取出来(比如从光盘安装系统的时候)。
设置方法:
1.启动计算机,并按住DEL键不放,直到出现BIOS设置窗口(通常为蓝色背景,**英文字)。
2.选择并进入第二项,“BIOSSETUP”(BIOS设置)。在里面找到包含BOOT文字的项或组,并找到依次排列的“FIRST”“SECEND”“THIRD”三项,分别代表“第一项启动”“第二项启动”和“第三项启动”。这里我们按顺序依次设置为“光驱”“软驱”“硬盘”即可。(如在这一页没有见到这三项E文,通常BOOT右边的选项菜单为“SETUP”,这时按回车进入即可看到了)应该选择“FIRST”敲回车键,在出来的子菜单选择CD-ROM。再按回车键
3.选择好启动方式后,按F键,出现E文对话框,按“Y”键(可省略),并回车,计算机自动重启,证明更改的设置生效了。
第二步,从光盘安装XP系统
在重启之前放入XP安装光盘,在看到屏幕底部出现CD字样的时候,按回车键。才能实现光启,否则计算机开始读取硬盘,也就是跳过光启从硬盘启动了。
XP系统盘光启之后便是蓝色背景的安装界面,这时系统会自动分析计算机信息,不需要任何操作,直到显示器屏幕变黑一下,随后出现蓝色背景的中文界面。
这时首先出现的是XP系统的协议,按F8键(代表同意此协议),之后可以见到硬盘所有分区的信息列表,并且有中文的操作说明。选择C盘,按D键删除分区(之前记得先将C盘的有用文件做好备份),C盘的位置变成“未分区”,再在原C盘位置(即“未分区”位置)按C键创建分区,分区大小不需要调整。之后原C盘位置变成了“新的未使用”字样,按回车键继续。接下来有可能出现格式化分区选项页面,推荐选择“用FAT格式化分区(快)”。按回车键继续。
系统开始格式化C盘,速度很快。格式化之后是分析硬盘和以前的WINDOWS操作系统,速度同样很快,随后是复制文件,大约需要8到分钟不等(根据机器的配置决定)。
复制文件完成(%)后,系统会自动重新启动,这时当再次见到CD-ROM.....的时候,不需要按任何键,让系统从硬盘启动,因为安装文件的一部分已经复制到硬盘里了(注:此时光盘不可以取出)。
出现蓝色背景的彩色XP安装界面,左侧有安装进度条和剩余时间显示,起始值为分钟,也是根据机器的配置决定,通常P4,2.4的机器的安装时间大约是到分钟。
此时直到安装结束,计算机自动重启之前,除了输入序列号和计算机信息(随意填写),以及敲2到3次回车之外,不需要做任何其它操作。系统会自动完成安装。
第三步,驱动的安装
1.重启之后,将光盘取出,让计算机从硬盘启动,进入XP的设置窗口。
2.依次按“下一步”,“跳过”,选择“不注册”,“完成”。
3.进入XP系统桌面。
4.在桌面上单击鼠标右键,选择“属性”,选择“显示”选项卡,点击“自定义桌面”项,勾
选“我的电脑”,选择“确定”退出。
5.返回桌面,右键单击“我的电脑”,选择“属性”,选择“硬件”选项卡,选择“设备管理器”,里面是计算机所有硬件的管理窗口,此中所有前面出现**问号+叹号的选项代表未安装驱动程序的硬件,双击打开其属性,选择“重新安装驱动程序”,放入相应当驱动光盘,选择“自动安装”,系统会自动识别对应当驱动程序并安装完成。(AUDIO为声卡,VGA为显卡,SM为主板,需要首先安装主板驱动,如没有SM项则代表不用安装)。安装好所有驱动之后重新启动计算机。至此驱动程序安装完成。
‘陆’ 如何制作电脑系统
首先要了解一些计算机组成原理,需要学一些编程语言譬如C,和汇编语言
可以自己去看看操作系统的原理。可以去学学有关Linux
另外Linux是开源的,你可以去看看系统源代码。
(这是一个相当庞大的任务,一个人很难完成,很多人一起开发都有难度)