20CN网络安全小组第一代论坛
发表新主题  发表回复

个人资料 | 社区目录 用户登录 | | 论坛搜索 | 常见问题 | 论坛主页
  下一个最老的主题   下一个最新的主题
» 20CN网络安全小组第一代论坛   » 电 脑 技 术   » 编程破解   » 学习汇编的好帮手(第二篇)

   
作者 标题: 学习汇编的好帮手(第二篇)
第007元素
未注册


图标 1  发表于         编辑/删除帖子   引用原文回复  
※ 在远古时代,人类就懂得使用『符号』来表示物体的数量。
※ 起初,这些符号只是口述的。
※ 例如∶一头长毛象、二块石头、三个人 ...。
※ 後来逐渐演化出较进步的数字系统,如: 结绳、画线 ...。
※ 随著人类文明的演进,人们所要计算的数量愈来愈大,发现
 这些方法不太方便。
※ 罗马人尝试以单独的符号来表示 1 以外的数值,例如∶
 V代表 5,X 代表 10 等。
※ 虽然後来证明仍不切实际,但已为近代的数字系统,
 开启了新的方向。

※ 随著经验的累积,阿拉伯人归纳出了一些基本原则∶
1.某个数值以下的数以单独的符号表示。
2.超过该数值时,则在另一行重新开始。
3.使用一个特殊符号来表示『空』行。
※ 於是,阿拉伯人以人类的手指数,为分行的基准数值,创
 造出了大家所熟悉的阿拉伯数字 0,1,2,3,4,5,6,7,8,9。
※ 在组合语言中,我们常在数值後面加上『d』,表示其为
 十进位(Decimal)数。

※ 由於人类有十根手指,所以藉由扳手指的便利,我们逐渐
 习惯了十进位的数字系统。

※ 上帝以其形体创造人类,同样的,人类也以自己的形体付与
 电脑生命。
※ 电脑本身也具有实体躯壳与思考的灵魂。
※ 电脑的躯壳就是我们常见的『硬体』,包含五大单元∶

 算术逻辑单元
输入单元 控制单元 输出单元
 记忆单元

※ 电脑的灵魂就是 MS-DOS,用来控制这五大部门的运作。
※ 『 组合语言 』就是用来撰写 MS-DOS 的基本语言。

※ 『中央处理单元,CPU』主要是指微处理机,是可以执行
 电脑所有算术/逻辑运算与基本 I/O 控制功能的单一晶片。
※ 组合语言与特定的微处理机晶片之间的关系牢不可分,也就
 是说,不同的微处理机其组合语言的指令语法亦不相同。
※ 个人电脑由 1981 年推出至今,其主要微处理机之发展过程
 为∶ 8088 → 80286 → 80386 → 80486。
※ 愈後面出来的微处理机,其功能愈强,指令亦愈复杂,但其
 必能包含前面微处理机的功能。
※ 为了确保您的组合语言程式可以适用於各种机型,所以仍以
 使用 8088 的组合语言,其相容性最佳。
※ 『 组合语言入门 』亦以解说 8088 组合语言为主。

※ 像人类的脑细胞一样,电脑使用IC(内含无数个电晶体)
 当『 主记忆体』 。
※ 记忆体是电脑运作中的关键成分,也是电脑在工作当中储存
 资讯的地方。
※ 主记忆体的组织有如许多可存放数值的储存位置,各以一个
 『位址』来识别。
※ 个人电脑所使用的储存位置是由『8 个位元』所组成,称作
 『位元组』,是个大小恰好可以放进一个字元的资讯单位。
※ 以一个组合语言程式设计师的观念而言,『记忆体』就是电
 脑内部可以用来存放『位元组』的地方。

※ 每一记忆体位置都有一个用来定位的位址。
※ 位址是一个数字,从零开始,往最高位址增加。
※ 由於位址是数字,电脑便能用其算术能力来计算与处理记忆
 体位置,而且各种电脑的设计都有其位址大小的限制。
0100 10010000
0101 00000010
0102 11000011
0103 00000000
位址 有效的资料

※ 8088 系列的个人电脑采开放式的硬体架构,以『扩充槽』
 与其他周边装置互通讯息。
※ 每个扩充槽上有 62 条通道(I/O channel),其中分配 20 条
 给记忆体用。
※ 亦即,在 8088 中,位址有 20 个位元长,所以微处理机拥
 有达2的定址空间,相当於1M(1024K,1K=1024)Byte
 ,这也是 MS-DOS 的有效控制范围。
※ 大多数 8088 能做的算术都限於处理 16 位元的字元,其范
 围从2~2,即 0 到 64K。
※ 所以,必须用『分段式定址』的观念才能控制整个位址。

※ 完整的 20 位元位址可分成两部份,皆由 16 个位元组成∶
1.区段部分(Segment)∶原来 16 个位元後面加上四个二进位0
 (一个 16 进位的0),变成 20 个位元
 ,可设定至 1 M 中任何一个 64K 区段。
2.相对部份 (Offect)∶直接使用 16 个位元来接著区段部份,
 指向该区段中的任何一个位址。
※ 实际上,区段部份常成为相对部份能够定址 64K 工作区域
 的一个『基础位址』。
※ 在组合语言中,您常会看到分段式定址写成∶『2222:3333』
 ,其实际的 20 位元位址值为∶

※ 暂存器(Register)∶是电脑内部的一个实体元件,有点像
 记忆体的一个位址;不过,由於它是微处理机晶片的一部分
 ,而不是记忆晶片的一部分,所以在暂存器之间的资料传送
 非常快速。
※ 8088 指令还可以在暂存器上做许多在记忆位置上无法做到
 的事,例如∶
1.可将暂存器内的资料执行算术及逻辑运算。
2.存於暂存器内的位址可用来指向记忆体的某个位置。
3.暂存器可以用来读写资料到电脑的周边设备。

※ 8088 有 8 个 8 位元的『一般暂存器』,分别是∶
 AH 与 AL,BH 与 BL,CH 与 CL,DH 与 DL。
※ 这些 8 位元暂存器可配对组成 16 位元暂存器∶
AHAL=AX『累加暂存器』常用於运算。
BHBL=BX『基底暂存器』常用於位址索引。
CHCL=CX『计数暂存器』常用於计数。
DHDL=DX『资料暂存器』常用於资料传递。

※ 为了运用所有的位址,8088 也设定了四个『区段暂存器』,
 专门用来保存位址的区段部份∶
CS用於设定程式码区段(Code Segment)的位址。
DS用於设定资料区段(Data Segment)的位址。
SS用於设定堆叠区段(Stack Segment)的位址。
ES用於设定额外区段(Extra Segment)的位址。
※ 当一个程式要执行时,DOS 就要来决定程式码、资料和堆叠
 各要用到那些位置,而设定区段暂存器 CS,DS,SS 来指向
 这些起始位置。

※ 通常程式语言处理机都是将『资料区段暂存器-DS』固定,
而根据需要修改『程式码区段暂存器-CS』。
※ 所以,DOS 和『程式语言处理机』可以在可定址资料空间小
 於 64K 的情况下,让程式可写成任意大小。
※ 一般而言,BASIC 直译器(Interpreter)就是程式处理机,
 而您所认为的 BASIC 程式,其实只是其资料的一部分。
※ 所以,您的程式和其资料组合起来的大小,限制在 DS 所同
 时涵盖的 64K 内。
※ 这就是一般 BASIC 程式和 COM 档案不得大於 64K 的原因。
※ 8088 以记忆体做为工作场所,却使用暂存器做为草稿纸,以
 加速工作。

※ 除了前面所提的暂存器外,还有一些特殊功能的暂存器∶
IP指令指标(Intruction Pointer)暂存器
与 CS 配合使用,可追踪程式的执行过程。
SP堆叠指标(Stack Pointer)暂存器
与 SS 配合使用,可指向目前的堆叠位置。
BP基础指标(Base Pointer)暂存器
可用作 SS 区段的一个相对基础位置。
SI来源索引(Source Index)暂存器
可用来提供相对於 DS 区段之来源指标 。
DI目的索引(Destination Index)暂存器
可用来提供相对於 ES 区段之目的指标 。

IP: 已记录

 
发表新主题  发表回复 关闭主题 突出主题 移动主题 删除主题 下一个最老的主题   下一个最新的主题
 - 适于打印的主题视图
转到:
联系我们 | 20CN网络安全小组

Powered by Infopop Corporation
UBB.classic™ 6.5.0
NetDemon修改版 1.5.0, 20CN网络安全小组 版权所有。