美文网首页汇编
汇编笔记1(基础知识)

汇编笔记1(基础知识)

作者: AlunX | 来源:发表于2018-05-31 01:04 被阅读11次

主要跟小甲鱼老师的视频和王爽老师的书学习汇编,膜拜小甲鱼老师。

第一章 基础:

寄存器:cup里的存储器,存放指令和数据。

存储器:存放指令和数据。硬盘和内存都是存储器。

存储单元(从0开始)

总线:

     地址总线:寻址能力,(64位与32位区别)n根地址(一根1个字节=1个内存单元)

     控制总线:cpu对外界器件的控制

     数据总线:决定cpu和外界数据传送速度

主板:核心器件

接口:cpu不直接控制外部器件,通过接口卡控制

存储器:

      随机存储器(ram):

      只读储存器(rom):每种硬件有自己的rom

另:1.不同cpu有不同指令集

       2.不同总线来区别二进制数据是什么

       3.cpu看到的是逻辑存储器

检测点暴露的问题:

    1.B:字节=8b:位

     2.一根地址总线对应1B的寻址能力,一根数据总线对应1bit的数据

第二章 寄存器:(8086cpu)

cpu:内部总线连接

   运算器:一次最多处理16位

   控制器:

   寄存器: 最大宽度16位(数据最大值2的16次方-1)

通用寄存器:4个寄存器(AX,BX,CX,DX)可以分为两个独立的8位寄存器。

       高位:H,低位:L

字(word)=2个字节(16位兼容两个8位)

例:mov  ax,bx      把bx移进ax(支持寄存器,段寄存器,数据,内存到寄存器,寄存器到段寄存器,寄存器到内存)(数据到寄存器sp等)

      add   ax,bx      把bx加进ax

物理地址:内存单元的唯一地址

8086内部16位与外部20位冲突解决方法:内部用两个16位合成一个20位(段地址+偏移地址)物理地址=段地址*16(二进制左移4位,16进制左移1位)+偏移地址

段:段的划分来自cpu,内存并没有分段,看需要自己看成不同段

段寄存器(不要忘记*16):

     CS(代码段地址):CS*16+IP(代码偏移地址)    ip=ip+读取的指令长度

修改CS:ip方法:jmp   段地址:偏移地址        jmp ax是令ip=ax

cs+ip决定执行与否,指向则执行,不指向则不执行。

     DS(数据段地址):当前操作的数据可以[偏移地址]的方式引用

     SS(栈寄存器):SS:sp指向栈顶元素(压入sp-,推出sp+)(先动数据)

sp指向栈的最高地址上一位。(格式化只是移指针)(栈空时指到栈外(+2))

     ES:(备用段寄存器)

另:1.汇编指令不区分大小写

        2.从后向前运算

        3.超出位进到其他寄存器(分高低位时高低位之间也无法直接进位:add al,88)

        4.cpu访问内存必须要物理地址

        5.段地址和偏移地址可以指示2的16次方个内存单元

检测点暴露的问题:

       1.不加H表示10进制,需要先转换为16进制;

       2.注意区分mov 和add;

       3.sub ax,bx    把ax减去bx;

dosbox的一些操作: (加不加空格都行)

       1.r  查看、改变cpu寄存器内容   r 寄存器(改变寄存器的值为指定值)

        2.d 查看内存中的内容   d 段地址:偏移地址   n-1(查看该地址开始的n(默认128)个内存单元)

        3.e  改写内存中的内容   e 起始地址 数据 数据。。。

        4.u  将机器指令翻译为汇编指令

        5.t  执行一条机器指令

        6.a  以汇编格式写入机器指令(执行汇编)   a 起始地址(从起始地址开始写入)

        7.p 执行到当前行,有循环则全部执行

        8.q退出dubug

        9.g 执行到某地址;like 断点

第三章 寄存器(内存):

字的存储:分进高字节中(低字节中存不下的存进高字节)

栈:后入先出

push ax:把ax元素压进栈中 push [0]把0的数据压入栈

pop ax:把栈顶推到ax中       pop [0]把数据推到0

push和pop指令可以修改寄存器和内存

栈顶越界问题:向上越界和向下越界

另:1.mov指令访问内存时可以只给出偏移地址(默认ds)

       2.可以用段寄存器表示段地址

       3.debug的t命令在执行修改SS的指令时,下一条指令也紧接着被执行

检测点暴露的问题:

      1.movadd操作的数据量和使用的寄存器有关,相应大小的寄存器调动相应的数据。

      2.e  d a命令都是操作内存的,r是直接操作寄存器的。

      3.使用栈时先设定SS:sp(最高位)

相关文章

  • 汇编语言 Ch1-基础知识 笔记

    汇编语言 Ch1-基础知识 笔记 ![](http://picture-repository-of-heamon7...

  • 汇编笔记1(基础知识)

    主要跟小甲鱼老师的视频和王爽老师的书学习汇编,膜拜小甲鱼老师。 第一章 基础: 寄存器:cup里的存储器,存放指令...

  • 笔记——第一章

    @(读书笔记)[汇编语言,计算机] 基础知识 为什么要有汇编语言 CPU——电平脉冲(高低平)——二进制数字——机...

  • 【笔记】《Linux C编程一站式学习》第17章 x86汇编程序

    第17章 x86汇编程序基础 本文是看17章的笔记。方便自己回顾。汇编基础知识可以看王爽的《汇编语言》本文环境我用...

  • 《汇编语言》王爽,学习笔记(基础知识)

    这是关于王爽老师写的第二版《汇编语言》的学习笔记,因为汇编不是常常用到,所以在这里列举一下汇编的基础知识,常用语法...

  • 汇编1基础知识

    1、汇编语言的组成 1、 汇编指令:机器码的助记符,有对应的机器码 2、 伪指令:没有对应的机器码...

  • 第二章 汇编基础

    第二章汇编基础 汇编部分讲解了汇编基础知识,为了帮助大家理解,书中使用了大量的图文和例题。 汇编是通往编程的大门,...

  • ARM64汇编学习笔记一(初始汇编)

    ARM64汇编学习笔记一(初始汇编)

  • iOS OC反汇编

    OC的反汇编 笔记暂时提交, 日后修正 1. OC方法本质 objc_msgSend(id , sel), 汇编打...

  • 汇编语言

    基础知识: 汇编语言的主体是汇编指令,它决定了汇编语言特性 程序员用汇编语言写出源程序,再用汇编编译器将其编译成机...

网友评论

    本文标题:汇编笔记1(基础知识)

    本文链接:https://www.haomeiwen.com/subject/hgaxsftx.html