前言
本文是一篇对在学习中一些易错和难理解知识点的解释和汇总的博文,因此不会将所有的知识点列出(如易理解的知识点)
第二章计算机运算基础
为什么补码范围是-128~127
课本上肯定和我们说过补码在正数上与原码相同,对于负数,是对原码除了符号位以外,其余位取反之后的值加一。而这本质上就是用0 减去其绝对值的原码就得到其负数的补码了。如
5 : 00000101
-5 : 0000 0000 - 00000101 = 11011 与 10001011 按照定义操作得到的结果是一样的
那么对于-128 我们得到128的原码为:10000000
(在原码中是-0的原码) 那么我们用0 减去 原码得到:10000000
我们惊人的发现和原来的原码是一样的。(我们无法用定义的方式得到),因此可以说这个比原码多出的一个范围,是将原码中0的两种形式中负数的形式的意义变成了-128.好了到了这里你应该明白了把。
为什么减法可以看出是对减数取负之后的加法
我们对于一个减式 X - Y
,我们等价变成X + 0 - Y
,由于具有结合性,那么0 - Y
不就是我们上面所说的Y的取负操作后的值嘛。因此这就得到了解释。
第三章微型计算机结构
寻址方式中哪几种是存储器操作数
分别是
存储器寻址方式:( 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式)。它们有一个共同的特点就是操作数中含有[]
符号。了解好这个在后面的章节能更好的理解指令运用的限制。
段寄存器都能存放指令和数据嘛?
- (段寄存器)程序指令的所有指令都在代码段中(CS),其余的不能存放指令。
- 段寄存器)程序运行所使用的数据都可以放在四个代码段的任意一个。存数据一般在隐含段(若不是,则需要显示指明)
为什么说SP中所含的偏移地址是堆栈段中的偏移地址
虽然寻址方式中(不涉及夸段)没有用到SP,但是SP是堆栈指针
。它的内容是PUSH和POP指令或调用等指令从堆栈段中存取栈顶单元信息的
偏移量。因此可以说SP中所含的地址是堆栈中的偏移地址。
在求解存储器操作数的有效地址和实际地址有哪些注意事项
一般的步骤如下,
- 判断出隐含寻址段的类型。(段的基址)。一般除使用BP做基址寄存器的指令是堆栈段(SS)外,其余情况下,均为DS。这个在没有涉及段跨越的时候,如果有,就是跨越段。
- 判断寻址的方式。
- 求出有效地址(偏移量)
- 通过段基址 + 偏移量 得到实际地址。在这一步注意,段基址要先向左移4个二进制位再相加。
第四章汇编语言
判断哪些数据是非法的(重要)
- 第一个是不能出现不是该进制下出现的字符。如8进制,数字只能是0–7,那么就不能出现8,9这两个数字。
- 对于16进制来说,如果首部是字母,则需要在前边添加一个0.这是为了避免与标识符冲突。如
A45H
要写成0A45H
- 最关键的是在表达式中,在书本上的定义为:用运算符号将常数,标识符号等连接起来且有正