汇编语言第3章 寄存器(内存访问)

news/2024/7/5 19:22:15

*****本章学习*****

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:我其实对黑客还挺感兴趣的,所以我去看了一下中国黑客的简史

中国黑客的发展可以分为三个阶段:启蒙时代、黄金时代、黑暗时代

在黄金时代,黑客圈子里出现贩卖漏洞、恶意软件等问题,同时因为黑客群体的良莠不齐,也开始出现以赢利为目的的攻击行为,黑色产业链逐渐成型

我曾经以为黑客只的是利用计算机技术做不好的事情的人,直到我看到这本书,我发现我错了

到了现在,黑色产业链基本成熟,,而这个地下产业每年都会给互联网造成数十亿的损失

也许是生活在这个时代,看到的黑客都是不好的,却不曾想,曾经的黑客崇尚分享、自由、免费的互联网精神

转载于:https://www.cnblogs.com/yinghuapiaoluo/p/9932906.html


http://www.niftyadmin.cn/n/1376599.html

相关文章

struts2整合JFreechart 饼图、折线图、柱形图

struts2整合JFreechart 饼图、折线图、柱形图 上效果图: 当然可以将数据导出图片格式存储。具体下的链接里的文件有保存成图片的操作。 因为是strust2整合JFreechart,所以strust2框架一定得搭建好。 1.导入三个包:http://download.csdn.net/detail/x4646…

转化图片格式

import os from PIL import Imageos.chdir(r"D:\jupyter\image_convert") os.getcwd() file os.listdir(r"D:\jupyter\image_convert")for f in file:img Image.open(f)img.load()f f.split(".")[0]img.save(f".jpg")

分布式优化名人堂

刘青山 http://web2.nuist.edu.cn/xky/2013-10/20131022215516.html http://web2.nuist.edu.cn:8080/jszy/Professor.aspx?id1754 杨绍富 http://cse.seu.edu.cn/personalpage/ysf/publications.html?tdsourcetags_pctim_aiomsg 凌青 http://home.ustc.edu.cn/~qingling/home…

用mysql实现类似于oracle dblink的功能

为什么80%的码农都做不了架构师?>>> 用mysql实现类似于oracle dblink的功能 首先看看有没有federated 引擎: mysql> show engines; -----------------------------------------------------------------------------------------------…

核心基础(一)--设置搜索路径和字符串连接方式

设置Python模块的搜索路径有几种方式 设置PYTHONPATH环境变量添加.pth文件(先在txt文件中写入需要添加为永久路径的项目路径,然后更改文件后缀名为.pth,再次查看sys.path会发现路径已添加至环境变量)通过sys.path.append()设置路…

STL 1–迭代器std::begin()和std::end()使用

迭代器是一个行为类似于指针的模板类对象。只需要迭代器iter指向一个有效对象,就可以通过使用*iter解引用的方式来获取一个对象的引用。通常会使用一对迭代器来定义一段元素,可以是任意支持迭代器对象的元素,一段元素是一个通过起始迭代器指向…

C# 实现UPD 协议

2019独角兽企业重金招聘Python工程师标准>>> 本文由ligong528贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 C#实现 UDP 协议 实现 一. 走进 UDP 协议: UDP(UserDatagramProtocol&am…

Python变量类型

变量类型 关键字严格意义上来讲python只有一个类型标准数据类型6种 数字 整数浮点数科学计数法复数 字符串 三引号可以表示多行,单双引号默认一行 None类型 None表示没有,通常用来占位 运算符 加减乘跟数学一致普通除(/)整除&…