• 第五章 [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


  • 相关阅读:
    ADB命令无法导出文件到物理机上处理办法
    mysql 分页offset过大性能问题解决思路
    0.通用编程基础
    win10去除快捷方式小箭头
    Java经典编程题
    win10家庭版打开组策略
    js常用事件列表
    计算器 输入式子计算结果 (字符串、抛异常)
    题库
    MyEclipse自动补全设置
  • 原文地址:https://www.cnblogs.com/quantumplan/p/2392215.html
Copyright © 2020-2023  润新知