*****本章学习*****
3.1 字数据在内存中的存储
(1)字单元,即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成
(2)高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节
ps:这个知识点让我想起了寄存器当中的高8位字节和低8位字节
(3)字数据的存——取原则:高——高,低——低,实际上就是小端法
ps:这个知识点在之前已经提过两次了,我一直搞不太清这个点,直到做了实验二才彻底明白
3.2 数据在内存和CPU之间的传送
(1)“[···]”表示一个内存单元,“[···]”中的0表示偏移地址
ps:之前一直不清楚“[ ]”是什么,只知道怎么用,到这儿才知道
(2)要在CPU和内存单元之间传送数据,就必须知道内存单元的地址
(3)执行指令时,默认情况下,DS中的值为内存单元的段地址
ps:这个知识点也和后面的实验有关,做实验的时候还没有整理知识点,忽略了这一点
(4)DS:数据段寄存器,用于存放数据段的段地址
3.3 汇编指令mov,add,sub
(1)add指令的操作数不能同时是内存单元
(2)add指令的操作数不能是段寄存器
(3)两个内存单元不能直接使用sub指令相减
(4)sub指令的操作数不能是段寄存器
ps:个人感觉,与其记那么多的可以不如记那些不能来的直接,所以我写的都是不能
(5)常数作第二个操作数时,如果最高位是十六位进制的a~f或A~F,前面要加0
3.4 栈
ps:栈其实我接触的还蛮多的,基础的那些也都知道,所以主要是整理寄存器方面的知识
(1)栈顶的段地址存放在SS中,偏移地址存放在SP中,任意时刻,SS:SP指向栈顶元素
(2)当栈满的时候再使用push指令入栈,或栈空的时候再使用pop指令出栈,都将发生栈顶超界问题
(3)入栈和出栈均以字为单元,操作对象不能是常数
(4)pop段寄存器中,段寄存器不能是CS和SS
(5)push,pop等栈操作指令,修改的只是SP,所以栈顶的变化范围最大为:0~FFFFH
(6)(SS)× 16 +(SP)-> 栈顶的物理地址
(7)不同的栈,栈顶越界产生的效果是不同的,但是程序编译时不会报错,需要自己检查
(8)利用栈可以保持原有的数据不被改变
*****延伸学习*****
ps:我其实对黑客还挺感兴趣的,所以我去看了一下中国黑客的简史
中国黑客的发展可以分为三个阶段:启蒙时代、黄金时代、黑暗时代
在黄金时代,黑客圈子里出现贩卖漏洞、恶意软件等问题,同时因为黑客群体的良莠不齐,也开始出现以赢利为目的的攻击行为,黑色产业链逐渐成型
我曾经以为黑客只的是利用计算机技术做不好的事情的人,直到我看到这本书,我发现我错了
到了现在,黑色产业链基本成熟,,而这个地下产业每年都会给互联网造成数十亿的损失
也许是生活在这个时代,看到的黑客都是不好的,却不曾想,曾经的黑客崇尚分享、*、免费的互联网精神