作者:孙东风2012-8-30 转载请注明出处
本文主要内容包括:
Ð 冯·诺依曼体系结构
Ð 汇编语言对冯·诺依曼结构的抽象
Ð 面向过程语言对冯·诺依曼结构的抽象
Ð 面向对象语言对冯·诺依曼结构的抽象
Ð 程序架构设计与冯·诺依曼结构
1.1 冯·诺依曼体系结构
1946年美籍匈牙利科学家冯·诺依曼提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式存储,并确定了存储程序计算机的五大组成部分和基本工作方法,如图1-1所示。
冯·诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照顺序执行程序。
如图1-1所示,冯·诺依曼定义了计算机的三大组成部件:
ü I/O设备:负责数据和程序的输入输出
ü 存储器:存储程序和数据
ü 处理器:分成运算器和控制器,运算器负责数据的加工处理,控制器控制程序的逻辑
注意
传统的教科书上又把冯·诺依曼理论分成五部分:输入设备、输出设备、存储器、运算器和控制器。
计算机科学的历史就是一直围绕着这三大部件,从硬件革命到软件革命的发展史。从软件革命的历史来看,计算机科学一直围绕着数据、逻辑和界面三大部分演变,数据对应着存储器、逻辑对应着处理器、界面对应着I/O设备。
1.2 汇编语言对冯·诺依曼结构的抽象
汇编语言是对冯·诺依曼结构最为直接的抽象,在汇编语言中只有三种操作对象:寄存器、存储器和I/O设备。
寄存器是处理器的主要组成部分,这些寄存器分别承担着运算器和控制器的角色,比如指令寄存器(IR,InstructionRegister)和段寄存器 (SR,Segment Register)负责程序的逻辑处理,而累加寄存器(AR,Accumulator Register)则负责程序的运算。
其中段寄存器是为了对存储器的分段管理而设置的,在16位的CPU中有四个16位段寄存器:
ü 代码段寄存器(CS,Code Segment)存放当前运行的程序代码所在段的段基址;
ü 数据段寄存处(DS,Data Segment)存放当前程序使用的数据所在段的段基址;
ü 堆栈寄存器(SS,StackSegment)存放堆栈段的段基址;
ü 附加段寄存器(ES,ExtraSegment)存放当前程序使用的附件数据段的段基址;
如果想使用汇编语言实现两个数的加法并输出十进制到屏幕,代码如下:
DATA SEGMENT
STR1 DB 'Please input the two numbers:',13,10,'$'
STR2 DB 13,10,'$'
STR3 DB 13,10,'Continue? [Y/N] ','$'
FIRST DB 40 DUP(0);为被加数分配空间
SECOND DB 40 DUP(0);为加数分配空间
SUM DB 40 DUP(0);为和分配空间
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA DX,STR1
MOV AH,09
INT 21H;显示字符串1
MOV SI,OFFSET FIRST+20;SI指向被加数地址中部
MOV BX,OFFSET SECOND+20;BX指向加数地址中部
MOV CX,00;CX初始为0
INPUT1:
MOV AH,01<