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    //程序结束
  • 相关阅读:
    HDU 1847
    HDU 1717
    KMP未优化模板、
    Codeforces Round #340 (Div. 2) B. Chocolate
    HDU 1042 N!
    HDU 1018 Big Number
    HDU 1031 Design T-Shirt
    解决Windows 7删除执行过的 EXE、Bat文件有延迟的问题
    修改Android手机的“虚拟机堆大小”和android:largeHeap来防止APP内存溢出问题
    Android引用百度定位API第三方组件后导致其它.so文件无法正常加载的问题
  • 原文地址:https://www.cnblogs.com/neverwinter/p/3016202.html
Copyright © 2011-2022 走看看