zoukankan      html  css  js  c++  java
  • 汇编语言学习小总结

    重要知识的总结,方便自己以后翻阅复习,在知识连贯性上穿插性较大,注意。

    1.基本知识

    内存单元:每个内存单元是  1个字节=8位=2个16进制数    “A5H” 则可以表示一个内存单元的值

    字:就是在CPU内部传输,处理,暂时存放的最大数据大小。学习的汇编都是以8086的CPU为基础,在8086的CPU当中内部都是16位来传输的。所以之后我们所说都是1字=2字节=16位

    存储:都是小端存储(LittleEndian),低位数据放在低位。

    20位:因为地址总线每次传输的是20位,但是CPU内部是16位,这样就诞生了后面很多偏移的概念了。(= =为什么不直接设计成16位传输呢)

    2.寄存器

    注意命令

    mov ds,1000H

    mov bx,0001H

    mov ax,[bx]     这句会将内存地址为 10001H和10002H的16位都赋值给ax,因为ax是16位的

    2.1通用寄存器

    ax:存放临时数据

    bx:放偏移量 使用[bx]实际上是 (bx)+(ds)

    cx:和Loop有关,循环的次数

    dx:

    2.2 段地址寄存器

    ds:[bx]  表示一个数据段

    cs:IP      表示代码段

    ss:sp     表示栈段,sp始终指向栈顶。注意push 先进行sp-2 再将寄存器的内容传送到内存单元。而pop则先将内存单元的内容给寄存器后进行sp+2

    3.debug

    u  查看CS:IP处开始的所有汇编指令(将机器指令转换成汇编指令)

    r  查看修改寄存器

    a  以汇编指令的形式在内存中写入指令

    d  查看内存中的内容

    t 执行一条指令

    4.程序基本结构

    assume cs:mycode            //assume伪指令定义一个代码段 叫mycode
    
    mycode segment
    
    start:  mov ax,2000H      //start标号定义程序开始
            mov ds,ax
            mov bx,1000H
            mov ax,[bx]
            inc bx
            inc bx
            mov [bx],ax
            inc bx
            inc bx
            mov [bx],ax
            inc bx
            mov [bx],al
            inc bx
            mov [bx],al
            
            mov ax,4c00H
            int 21H
            
    mycode ends   //代码段的结束 end segment
    
    end start    //程序结束
  • 相关阅读:
    FTPClient FTPFile 找不到符号
    1.4 Spring 依赖注入(DI)和控制反转(IOC)详解
    1.3使用marven Spring项目快速搭建
    1.1Spring历史发展和模块定义
    @Component、@Service、@Controller、@Rrepository说明
    打板炒股方法
    性能测试Jmeter扩展学习-添加自定义函数
    性能测试day07_性能瓶颈和分析
    性能测试day06_需求设计的学习(性能重中之重,思维方向永远重于工具)
    性能监控扩展篇(grafana + influxdb + telegraf)
  • 原文地址:https://www.cnblogs.com/neverwinter/p/3016202.html
Copyright © 2011-2022 走看看