zoukankan      html  css  js  c++  java
  • 第五章 [bx]和loop指令

    1、用debug写命令和编译器写命令是不一样的。

    2、完整的描述一个内存单元需要两种信息:1.内存单元的地址;2.内存单元的长度(类型)。我们用[0]表示一个内存单元时,0表示单元的偏移地址,段地址默认在ds中,单元的长度(类型)可以由具体指令中的其他操作对象(比如说寄存器)指出,如前边的AX,AL。

    3、[bx]同样也表示一个内存单元,它的偏移地址在bx。

    4、描述性符号“()”表示取内容。约定符号idata表示常量。

    5、loop指令使用:1.在cx中存放循环次数;2.loop指令中的标号所标识地址要在签名;3.要执行的程序段要写在标号和loop指令中间。

    6、考虑计算会不会溢出

    7、把内存单元xxxx:xxxx向ax赋值,令(ah)=0,(al)=(xxxxx)

    8、分号“;”注释代码。

    9、汇编的源程序中,数据不能以字母开头,所以要在以字母开头的数据前加0。

    10、G命令跟踪loop(g+偏移地址),也可以是p命令!!(在将要执行loop的时候)。

    11、在汇编源程序中取内存数据可以:ds:[0]。

    12、loop和[bx]的联合应用:求连续内存的值相加

    13、段前缀:出现在访问内存单元的指令中,用于显示地指明内存单元的段地址的ds、cs、ss、es,在汇编语言中称为段前缀。

    14、学习汇编获得底层的编程体验,理解计算机底层的基本工作原理,所以我们尽量直接对硬件编程,而不去理会操作系统。

    15、一段安全的空间:在一般的PC机中,DOS方式下,DOS和其他合法的程序一般都不会使用0:200~0:2ff(0:200h~~0:2ffh)的256个字节的空间。所以,我们使用这段空间是安全的这是为什呢?

    View Code
     1 assume cs:code
    2
    3 code segment
    4 start : mov ax, 0ffffh
    5 mov ds, ax
    6 mov bx, 0
    7 mov dx, 0
    8 mov cx, 12
    9 s : mov al, [bx]
    10 mov ah, 0
    11 add dx, ax ;dx = dx + ax
    12 inc bx ;bx = bx + 1
    13 loop s

    14
    15 mov ax, 4c00H
    16 int 21H
    17
    18 code ends
    19 end start


  • 相关阅读:
    Exp9 Web安全基础
    Exp 8 Web基础 ——20175201张驰
    Exp7 网络欺诈防范 20175201张驰
    《知识付费平台》个人报告——20175201张驰
    20175201 EXP6 MSF基础应用
    Exp5 信息搜集与漏洞扫描——20175201张驰
    Exp4 恶意代码分析—20175201张驰
    20175201张驰exp3——免杀原理与实践
    #20175201张驰 网络对抗exp2——后门原理与实践
    20175201张驰 网络对抗exp1—PC平台逆向破解
  • 原文地址:https://www.cnblogs.com/quantumplan/p/2392215.html
Copyright © 2011-2022 走看看