地址

X86汇编2.寄存器

北城余情 提交于 2020-02-26 04:12:47
最近学习了X86汇编,其实无论是古老的8086还是现在i3/5/7/9,Xeon3/5,在最基本原理上,都是相通的,只是CPU位数,寻址空间,寄存器个数,指令集的扩充等方面有所不同,对于学习,8086永不过时。 1.CPU组成 一个典型CPU由:运算器、控制器、寄存器(CPU工作原理)等部件构成,这些器件依靠内部总线连接。 运算器进行信息处理 寄存器进行信息存储,每个CPU有不同数量的寄存器 控制器控制各种器件进行工作 内部总线连接各种器件,在他们之间进行数据的传送 对于一个汇编程序员来说,寄存器是CPU中可以用指令读写的部件,程序员通过改变寄存器中的内容来实现对CPU的控制。 常用的寄存器(reg)有:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di 段寄存器(sreg)有:ds,ss,cs,es 2.通用寄存器 以8086为例,8086CPU的寄存器都是16位的,有4个通用寄存器:AX、BX、CX、DX,但是为了兼容更老的CPU,每个16位通用寄存器可以分为2个8位的独立通用寄存器,如:AX可分成:AH、AL独立使用,其他也一样。 汇编指令(不区分大小写): mov ax, 18 ;将18存入ax寄存器 mov ah, 78 ;将78存入ah寄存器,也就是ax的高8位 add ax, 8 ;将ax寄存器的值加8

X86汇编3.内存访问

老子叫甜甜 提交于 2020-02-26 04:08:25
最近学习了X86汇编,其实无论是古老的8086还是现在i3/5/7/9,Xeon3/5,在最基本原理上,都是相通的,只是CPU位数,寻址空间,寄存器个数,指令集的扩充等方面有所不同,对于学习,8086永不过时。 1.内存中字的存储 8086CPU中,用16位寄存器来存储一个字,高8位存放高字节,低8位存放低字节。在内存中存储时,由于内存单元是字节单元,一个单元存放一个字节,那么一个字(2字节,16位)应该用两个连续的存储单元(内存地址)来存储,低字节存放在低地址,高字节存放在高地址,这就是我们所说的小端序,大端序与之相反。 字单元:存放一个字型数据(16位)的内存单元,它由两个连续内存单元组成。 8086CPU不支持将数据直接存入段寄存器(DS),需要先将数据存放到通用寄存器,然后再MOV到段寄存器。 “[address]”做为一个整体表示一个内存单元,中括号中的数字表示内存单元的偏移地址。如: 假设DS中为1000H,那么: MOV Al, [0] ;将10000H内存地址中的数据存入AX MOV [0], Al ;将AX中的数据存入内存地址10000H eg.1读取10000H中内存单元的内容 mov bx, 1000H mov ds, bx mov al, [0] eg.2将al中的数据存入10000H内存地址中 mov bx, 1000H mov ds, bx mov [0

X86汇编5.高级指令详解

╄→尐↘猪︶ㄣ 提交于 2020-02-26 04:08:14
最近学习了X86汇编,其实无论是古老的8086还是现在i3/5/7/9,Xeon3/5,在最基本原理上,都是相通的,只是CPU位数,寻址空间,寄存器个数,指令集的扩充等方面有所不同,对于学习,8086永不过时。 转移指令 1.转移指令分类: (1)无条件转移指令,如: jmp (2)条件转移指令 (3)循环指令,如: loop (4)过程 (5)中断 操作符 1.offset 释义:由编译器处理的符号,功能是取得标号的偏移地址 start: mov ax,offset start ;相当于mov ax, 0 s: mov ax, offset s ;相当于mov ax, 3 高级指令 1.jmp指令 释义: 无条件转移指令,可以只修改IP,也可以同时修改CS和IP。 jmp指令要给出两种信息: (1)转移的目的地址 (2)转移的距离(段时间转移、段内短转移,段内近转移) 1)依据位移进行转移的jmp指令: jmp short 标号(转到标号处执行指令) 这种指令格式的jmp指令实现的是段内转移,它对IP的修改范围是:-128 ~ 127,也就是说,它向前转移时最多128字节,向后最多127. jmp near ptr 标号,功能为:(IP)= (IP)+ 16 2)转移的目的地址在指令中的jmp指令 jmp far ptr 标号,实现段间转移,又称远转移 (CS) =

X86汇编1.汇编语言基础

我与影子孤独终老i 提交于 2020-02-26 02:32:25
最近学习了X86汇编,其实无论是古老的8086还是现在i3/5/7/9,Xeon3/5,在最基本原理上,都是相通的,只是CPU位数,寻址空间,寄存器个数,指令集的扩充等方面有所不同,对于学习,8086永不过时。 1.比特、字节、字、双字 在计算机中: 1比特:1位 1字节:8位 1字:16位 ,15-8(高字节)---> 7-0(低字节) 1双字:31-16(高字)---> 15-0(低字) 2.指令和指令集 机器指令就是一列二进制数字,计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行运算。 机器语言就是机器指令的集合。 指令一般由操作码和操作数构成,也有些指令只有操作码,没有操作数。 小端序:或叫低端字节序,内存高字节存放在高地址,内存的低字节保存在低地址 大端序:与小端序相反 指令和数据为什么要分开存放: 因为指令和数据都是二进制数,是一模一样的,即:都是一些由高低电平组和,而处理器是自动按顺序提取指令并加以执行的,在指令中混杂数据会导致处理器不能正常工作,因此,指令和数据要分开存放。存放代码的区域叫代码区,存放数据的区叫数据区,联想一下:一个二进制程序的代码段和数据段也是分开存放的。 3.汇编语言 处理器都是依靠机器指令来工作的,但是机器指令是一些没有规律的数字,编写机器指令的程序,难以书写,难以阅读,难以理解,这样就发明了汇编语言。

0.0.0.0 与 127.0.0.1的区别

无人久伴 提交于 2020-02-26 02:28:26
一、0.0.0.0 严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。 二、255.255.255.255 限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。如果翻译成人类的语言,应该是这样:“这个房间里的所有人都注意了!”这个地址不能被路由器转发。 三、127.0.0.1 本机地址,主要用于测试。用汉语表示,就是“我自己”。在Windows系统中,这个地址有一个别名“Localhost”。寻址这样一个地址,是不能把它发到网络接口的。除非出错,否则在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包。 from: https://www.cnblogs.com/dwnblogs/archive/2012/09/03/2668492.html 来源: CSDN 作者: qq1225095213 链接: https://blog.csdn.net/qq_37769323/article/details/104424321

YESLAB学霸日记—华为数通之IPv6 DAD和地址解析实验

坚强是说给别人听的谎言 提交于 2020-02-26 00:35:25
实验名称:IPv6 DAD和地址解析实验 YESLAB数通学员:张成才 实验目的 1、观察并分析IPv6 DAD过程 2、观察并分析IPv6地址解析过程 实验拓扑 实验步骤 1:观察并分析IPv6地址解析过程 在AR1的G0/0/0开启抓包。AR1的G0/0/0接口配置ipv6地址2012::1/64。在接口配置ipv6地址后,ipv6有一段称为Tentative生命期,在该阶段要进行DAD,即重复地址检测,确认没有其他设备在使用该地址,该地址才能正常用于数据通信。 通过抓包可以发现有两个NS报文,这是因为除了手动配置的2012::1/64地址外,接口还通过EUI-64规范自动生成了一个link-local地址。下面以手工配置的2012::1/64来分析DAD过程。 在Cisco设备上如果接口发出DAD的NS报文,在1S后未收到NA报文的话,接口会主动再发送一个Solicited bit=0的NA报文,然后该地址即进入正式可用的状态。华为设备在发出NS报文后如果没有收到NA报文,不再主动发送NA报文,在经过Tentative阶段后(具体时间未知)即进入正式可用阶段。 如果其他设备(这里就以R2为例)在收到该NS报文后,发现2012::1/12是自身的一个Tentative地址,则R2放弃使用该地址,并且不会发送NA报文。 如果R2收到NS报文后,发现发现2012::1

接口设计

跟風遠走 提交于 2020-02-25 19:58:24
智能合约 地址 1》个人信息 0 988000锁仓数量 不限额 查询数量 getbalance(address) 临时地址 有没有 个人名字 2》1.收款接口 提交信息 地址给前台 保存一下地址 前台需要做的转换 3》2.充值手续费 返回当前最大可购买数量 0.5 小于1000 地址 数量 创建一个交易 数据库里面写着 没有付款 正常付款 付款----转币 将数据库的字段改成已付款 卖家 转账到账户 不付款 提醒 不付款不要转币 没有付款 超过时间 轮询所有订单 取消 4》 查询当前的订单 系统 所有的买单 所有的卖单 数量总额 单价 成交单数 挂单 账本:存储 卖单 卖单 订单表1 订单类型2 价格数量 实际成交 可以撤销 删除订单 5》支付完成 支付完了 给我一个付款结果 讲订单改为已付款 读取数据库 接口数量: nodeJs 查询余额 地址 转账 AB的地址 将AB的账户一个加上一个减去 提现 地址 生成地址 参数 姓名 参数 数量 订单 数量 地址 订单状态 是否支付 订单评论 接单用户id 订单打分 订单数量 列表 集合形式返回 单页数量 评论内容 评论订单编号 撤销订单(修改订单) 不需要参数 查询当前的订单列表 查询当前的个人信息 来源: https://www.cnblogs.com/xiaocongcong888/p/9576594.html

端口安全的配置

荒凉一梦 提交于 2020-02-25 15:06:04
交换机端口安全,主要是针对mac地址进行安全访问的。 交换机 最常用的对 端口安全 的理解就是可根据MAC地址来做对网络流量的控制和管理。 根据mac地址与端口来绑定 int f0/1 -进入接口 switch mode access -打开访问模式,用于接入计算机(必不可少) switch port-security -打开端口安全 switch port-security maximum 1 -设置该端口mac数量最大为1 switch port-security violation shutdown -当有新的计算机接入该端口时,交换机会将该端口关闭(以前有三种情况) shutdown:交换机关闭该端口,所以原有的计算机也无法访问 protect:保护机制,交换机会限制新的计算机接入端口,原有计算机不受影响 restrict:新计算机可以接入,交换机会向其发出警告信息 switch port-security mac-add 0003.e469.5b01 --添加静态mac地址 上面代码解释了:在该交换机的mac地址表里面添加一个静态的mac地址,当有新的mac地址接入该端口时,则会关闭。 shutdown:交换机关闭该端口,所以原有的计算机也无法访问 protect:保护机制,交换机会限制新的计算机接入端口,原有计算机不受影响 restrict:新计算机可以接入

IP分类:A,B,C,D,E五类

孤者浪人 提交于 2020-02-25 00:44:19
IP地址分为五类: IP地址分为五类:A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验。    常用的三类IP地址 IP = 网路地址(网络号)+主机地址(主机号) 网络号:表示当前所在的网络段; 主机号:表示当前网络中的主机号; 子网掩码:使用二进制表示子网掩码,其中为1的位,表示的是所在的网络地址;      例如255.255.255.0 转化为二进制为:1111 1111. 1111 1111.1111 1111.0000 0000,那么IP地址中的 前24位 表示网络地址; 1. A类IP地址:IP地址可选用范围(0.0.0.0 - 127.255.255.255) 1.1 网络号——占1个字节 A类地址的网络号字段 占1个字节 ,但这个 字节中的最高位为 0 已经固定,只剩下7位可以进行分配。 网络号字段为全0的IP地址是个保留地址,意思是“本网络”。 网络号为127(即01111111)保留作为本地软件环回测试(loopback test)本主机的进程之间的通信只用。   则,A类IP地址可以指派的网络号是126个(即2^7-2)。网络号可使用范围:0000 0001.0000 0000.0000 0000.0000 0000 —— 0111 1110.0000 0000.0000 0000.0000 0000 1.2

指针的越界崩溃

谁都会走 提交于 2020-02-24 22:00:19
#include <stdio.h> void test() { printf("输出了内容\n"); } int main(void) { test(); int number = 10; // 定义指针的方式: 需要指向的类型 *指针的名称 = 0; int* point = 0; // 这个写法是定义指针并且指向地址 0(空指针) // 为指针赋值: [应该]使用对应指针类型的变量地址赋值给指针 point = &number; // 使用指针: 自己的地址&point + 指向的地址 point + 指向的地址上保存的内容 *point printf("%p %p %d\n", &point, point, *point); char chr = 'a'; // 97 0x61 point = (int*)&chr; // 访问到的数据是字符所占的1字节 + 紧随的后3字节 printf("*point = %x\n", *point); // 修改到的数据是字符所占的1字节 + 紧随的后3字节 // 产生了越界的修改,会导致程序的崩溃 *point = 200; printf("*point = %x\n", *point); return 0; } 来源: https://www.cnblogs.com/lianfeng132/p/12358672.html