• 汇编语言学习


    介绍

    机器语言是机器指令的集合
    机器指令展开来讲就是一台机器可以执行的命令
    电瓶脉冲 低位是0 高位时1 
    在内存或者硬盘中。数据都是一样的  都是二进制的
    

    存储器

    CPU 是计算机的核心部件 控制计算机所有运作 内存呢 就是存储指令
    
    每个存储单元从0开始编号
    	一个存储器有 128个存储单元  0 - 127  
    
    	一个存储单元 八个二进制位。等于一个字节的量 
    		1 KB = 1024 B
    		1 MB = 1024 KB
    		1GB = 1024 MB
    		1 TB = 1024 GB
    
    CPU 对数据读写 三种必须信息
    	地址信息 存储单元的地址
    	器件的原则读或者写。控制信息
    	读或写的数据  数据信息   
    	地址和数据怎么传输到存储芯片中的 是已电信号 或者 导线	
    		 地址线
    		 数据线
    		 控制线
    

    内存地址空间

    随机存储器
    只读存储器 
    

    8086 CPU

    寄存器都是十六位的。可以存放两个字节
      AX。 通用寄存器
      BX     通用寄存器
      CX   通用寄存器
      DX   通用寄存器
      SI
      DI
      SP
      BP
      IP		指令指针寄存器 
      CS 	 代码段寄存器
      SS	段寄存器
      DS	段寄存器 数据段寄存器
      ES	段寄存器
      PSW
    

    AX BX CX DX

    比如存储 18
    二进制表示为 10010   
    存储形式 从高位到低位
    
    151413121110987654321
    000000000010010
    比如存储 20000
    二进制表示  0100111000100000
    从高位到低位
    
    151413121110987654321
    010011100010000
    一个十六位寄存器 所能存储的最大数据是
    16 位的1 最大数据就是 2的十六次方 -1 
    8086 上一代的寄存器是八位的 为了能保证兼容性 这四个寄存器可以分为两个独立的八位寄存器
    AX 可以分为 AH AL
    BX 可以分为 BH BL
    CX 可以分为 CH CL
    DX 可以分为 DH DL
    high 高 八位
    low 低 八位
    可整体存储 也可单独存储  
    
    15141312111098左边 AX 右边 AL7654321
    000000000000000

    汇编指令 (重点)

    汇编指令控制CPU操作高级语言的描述
    mov ax,18将18送入AXAX= 18
    mov ah,78将 78 送入 AHAH = 78
    add ax,8将寄存器AX中的数值加上8AX = AX + 8
    mov ax,bx将寄存器BX中的数据送入寄存器AXAX = BX
    addd ax,bx将AX BX 中的内容想家 结果存放在AX 中AX = AX + BX
    mov move 传送 移动
    	第一个参数 目标位置 第二个参数原位置  
    
    程序中的指令指令执行后AX中的数据指令执行后BX中的数据
    mov ax, 4E20H4E20H0000H
    add ah,1406H6226H0000H
    mov bx,2000H6226H2000H
    add ax,bx8226H2000H
    mov bx,ax8226H8226H
    add ax,bx?8226H
    044CH
    
    程序中的指令指令执行后AX中的数据指令执行后BX中的数据
    mov ax, 001AH001AH0000H
    mov bx, 0026H001AH0026H
    add al,b10040H0026H
    add ah,b12604H0026H
    add bh,al2604H4026H
    mov ah,00040H4026H
    add al,85H00C54026H
    add al,93H?4026H

    物理地址

    CPU访问内存单元是要给出内存单元的地址 所有内存单元构成的存储空间是一个一维的线性空间
    每个内存单元在这空间中都有唯一的地址 这个唯一的地址就叫做物理地址
    

    8086 如何生成内存地址

    运算器一次最多可以处理16位的数据
    寄存器最大的宽度为16位
    寄存器和运算器之间的通路是16位
    8086 有20位地址总线 可传送20位地址 寻址能力为1M
    	物理地址 = 段地址 * 16 + 偏移地址
    
    	物理地址 = 基础地址 + 偏移地址
    	 
    	 段地址 * 16 必然是 16的倍数 所以一个段的其实地址也一定是16的倍数
    	 偏移地址是16位 16位地址的寻址能力位64k 所以一 个段的长度最大为64k
    
    	相对于基础地址 可以偏移多少地址 
    

    段寄存器

    CS DS SS ES
    段寄存器 就是提供段地址
    

    mov move 传送 移动

    	第一个参数 目标位置 第二个参数原位置
    	将数据直接送入寄存器
    	将一个寄存器中的内容送入另一个寄存器中
    	一个内存单元中的内容送入一个寄存器 
    		8086 CPU 不支持将数据直接送入段寄存器的操作 ds 是个段寄存器 只能通过一般寄存器放入段寄存器
    		mov ds,1000 是非法的 
    		mov al,[0]	
    	mov。寄存器 ,数据
    	mov。寄存器,寄存器
    	mov。寄存器,内存单元 
    

    jmp

    段地址 :偏移地址。用指令中给出段地址修改CS 偏移地址修改IP 
     jmp 2AE3 : 3
     jmp 3:0B16 
     仅仅修改 IP
     jmp。ax。类似于 mov。IP,ax
    

    sub

    汇编减法
    sub 寄存器,数据
    sub 寄存器, 寄存器
    sub 寄存器, 内存单元
    sub 内存单元,寄存器
    

    add

    汇编加法
    add 段寄存器, 数据
    add 寄存器 ,寄存器
    add 寄存器,内存单元
    add 内存单元,寄存器
    

    rom

    在pc的主板上 ROM 又一个生产日期。在FFFF:0
    FFF00 - FFFFF
    

    push

    送入栈内容
    

    pop

    取出栈内容
    

    栈是一个具有特殊方式访问的存储空间。特殊之处在于 最后进去的这个空间数据 最先出去
    
  • 相关阅读:
    24考研王道408数据结构-第三章“栈、队列、数组”-p96课后算法题
    电压源与电流源简介
    腾讯云学生专享云服务器介绍及购买攻略
    nginx + tomcat 搭建负载均衡、动静分离(tomcat多实例)
    Java8 新特性 函数式接口
    Cesium-动态绘制面
    【图像识别系统】表情识别Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
    perl 下判断文件和目录是否为空?
    济南申请ISO认证的条件和要求
    我们简单的new了一个对象,JVM都做了哪些贡献?
  • 原文地址:https://blog.csdn.net/JiuWeiYaoHo/article/details/126948653