汇编笔记一【计算机数据宽度与逻辑运算】

一、进制的定义

  由N个符号组成,满N则向上进位1.

二、常用的数据类型

  1BYTE(字节)=8BIT(位)

  1WORD(字)=2BYTE(字节)=16BIT(位)

  1DWORD(双字)=2WORD(字)=4BYTE(字节)=32BIT(位)

三、二进制的逻辑运算符

  A、逻辑运算符or(中文名:或运算 C对应符号:|)

    定义:两个数只要有一个为1,结果就是1.

    例子:

  

  B、逻辑运算符and(中文名:与运算 c对应符号:&)

    定义:两个数都是1,结果才是1

    例子:

  

  C、异或运算符xor(中文名:异或运算 c对应符号:^)

    定义:两个数不相同,结果才是1

    例子:

  

  D、非运算符not(中文名:非运算 c对应符号:!)

    定义:当被此运算符修饰时,每位取反

    例子:

  

四、CPU如何计算2+3的结果?

  1.第一步,先将十进制转二进制(2=0010,3=0011)

  2.第二步,将上面两个二进制进行异或运算,并将计算结果存放到寄存器中。

  

  3.第三步,计算机为了判断第二步是否已经计算完毕,他会将上面两个二进制数做与运算,也就是0010和0011,并将将计算结果左移一位,如果左移后结果每位都是0,证明计算完成。

  

  4.第四步,由于刚才0100每位不全是0,证明计算并未完成。计算机继续拿第二步的结果和第三步的结果做异或运算,并把结果存放到寄存器中。

  

  5.第五步,继续拿0001和0100做与运算。并将结果左移一位,如果左移后结果每位都是0,证明计算完成。

  

  6.第六步,由于第五步的结果每位都是0,证明计算完毕。计算机就会将第四步的结果作为本次运算的最终结果,也就是0101=5,所以2+3=5

五、如果想获取某个值二进制中第N位是0还是1,该如何计算?

  例子:求8F,第5位是0还是1

  1.首先将8F转为二进制:10001111

  2.创建一个和上面一样长度,全是0的二进制数据:00000000

  3.因为求第5位,我们将上一步的第5位变成1:00001000

  4.将第一步的二进制,第三步的二进制做与运算,取运算结果第五位,如果是1,证明8F第五位是1,如果是0,证明8F第五位是0

  

六、最简单的加密算法(原理就是利用xor指令,当对某个数用指定的密钥异或后,再将异或的结果与密钥做异或运算,最后的结果是其本身。就好比1+5=6,再用6-5,那么就能知道加密前的数是1)

  要加密的数据:2015

  密钥:54

  因为密钥是两位数,我们就要把2015以两位为一组拆分来加密

  1.第一步:首先求得2015前两位的二进制 20=00100000

  2.第二步:54=01010100

  3.第三步:将一、二步的值异或,结果为01110100=74

  

  4.第四步:求得2015后两位的二进制 15=00010101

  5.第五步:将第二、四步的值异或,结果为01000001=41

  

  6.第六步:最后就是将7441发送给对方。对方接收到7441这串密文后,利用预先定义好的密钥54=01010100,分两位为一组,对7441进行异或解密

  

  7.第七步:解密结果为00100000=20  00010101=15,所以明文数据为:2015

时间: 2024-10-15 10:23:42

汇编笔记一【计算机数据宽度与逻辑运算】的相关文章

《深入Java虚拟机学习笔记》- 第13章 逻辑运算

<深入Java虚拟机学习笔记>- 第13章 浮点运算 <深入Java虚拟机学习笔记>- 第13章 逻辑运算,布布扣,bubuko.com

汇编笔记二【32位通用寄存器 以及 常用汇编指令】

一.32位通用寄存器(EAX,ECX,EDX,EBP,ESP,EBP,ESI,EDI) 二.十六位通用寄存器(AX,CX,DX,BX,SP,BP,SI,DI) 三.八位通用寄存器(AH,AL,CH,CL,DH,DL,BH,BL) 四.32位,16位,8位寄存器之间的关系 1.寄存器都是高位在前,低位在后. 2.都是包含关系,32位寄存器之中包含了16位寄存器,16位寄存器之中包含了8位寄存器. 关系如下: 五.32位的含义 一位只能放0或1,32位就意味着能放32个0或1. 所以32位最小取值为

汇编笔记_1

-------1.1 机器语言--------- 机器语言是机器指令的集合进制转换十位,八位,十六位(H) ------1.2 汇编语言的产生------ 汇编语言的主体是汇编指令汇编指令和机器指令的差别在于指令的表示方法上.汇编指令是机器指令便于记忆的书写格式.汇编指令是机器指令的助记符 例如:   机器指令:1000100111011000   操作:寄存器BX的内容送到AX中   汇编指令:MOV AX,BX 寄存器:简单的讲是CPU中可以存储数据的器件,一个CPU中有多个寄存器(寄存器更

汇编笔记 RET

assume cs:code,ss:stack stack segment db 16 dup(0) stack ends code segment mov ax,4c00h int 21h start: mov ax,stack mov ss,ax mov sp,16 mov ax,0 push ax mov bx,0 ret code ends end start 以上指令,让IP指向0000,程序正常退出. 执行PUSH AX的时候,将AX中的数据放入桟中,SP=SP-2. 执行ret指令

王爽汇编笔记

  第一章 内存地址空间的地址段分配 地址:0~7FFFH的32kb空间为主随机存储器的地址空间 地址:8000~9FFFH的8kb空间为显存地址空间 地址:A000~FFFFH的24kb空间为各个rom的地址空间   第二章 进入DOS模式 重新启动计算机,进入DOS模式,此时进入的是实模式的DOS 在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS   使用命令 -R 查看寄存器内容 -R 寄存器 可以修改寄存器的内容 -D查看内存中的内容 –D 段地址:偏移地址 输入后

web前端学习笔记(CSS变化宽度布局)

Posted on 2013-09-30 09:03 Stephen_Liu 阅读(2406) 评论(6) 编辑 收藏 一.“1-2-1”单列变宽布局: 对于变宽度的布局,首先要使内容的整体宽度随浏览器窗口宽度的变化而变化.因此中间的container容器中的左右两列的总宽度也会变化,这样就会产生不同的情况.这两列是按照一定的比例同时变化,还是一列固定,另一列变化.这两种都是很常用的布局方式.然而对于等比方式而言,相对比较简单,和我上一篇博客中1-2-1的布局方式非常类似,因此这里只是介绍一列固

汇编笔记(1)

最近看王爽的汇编语言,同时配合小甲鱼的视频看了一些章节,对于一些知识点还有一些容易混淆的地方在这里总结一下,希望大家来指正. 第一章: 基础知识 一.汇编语言 计算机只识别机器码(0和1组成),非常难认,因此产生了汇编. 三类指令:汇编指令,伪指令,其他符号(由编译器识别). 二.存储器 数据和指令存放的地方.其实就是所说的内存. CPU的正常工作,就必须向它提供数据和指令. 指令和数据没有任何区别,都是二进制.CPU在工作时候,有的信息看作指令,有的信息看作数据. 每个存储单元从0开始顺序编号

汇编笔记四【标识寄存器】 by:凉游浅笔深画眉 / Net7Cracker

一.push xxxxx指令和ESP的关系 ESP的值,是由Push指令后面的操作数的宽度决定的.也就是xxxxx的宽度,假如Puh后面跟的是一个立即数,由于整数是四字节,所以esp-4. 假如Push 后面跟的是容器,那么就看这个容器的宽度. 例:假如目前ESP的值是FFFFFFFF 当PUSH 1 这条指令执行后,ESP=FFFFFFFB,因为1是个立即数,只要Push后面是立即数,那么ESP的值就会减4 例:假如目前ESP的值是FFFFFFFF 当PUSH ax 这条指令执行后,ESP=F

汇编笔记 RETF

assume cs:code stack segment db 16 dup(0) stack ends code segment start: mov ax,stack;将定义字形数据送入AX mov ss,ax;送入桟空间 mov sp,16;定义桟长度 mov ax,1000h ;将1000H送入AX中 push ax;将AX送入桟中,保护数据 mov ax,0;将AX设置为0 push ax;然后再继续送入桟中,保护数据 retf ;转移指令,依次POP 桟中数据. POP IP, PO