zoukankan      html  css  js  c++  java
  • 汇编语言:第五章 [BX]和loop指令

    1.[bx]与内存单元

      [bx]是指 段地址在DS中,偏移地址在bx中的内存单元

    2.loop

      用于描述循环

    3.我们定义的描述性符号 "()"

      寄存器:  (ax/al)表示ax/al寄存器中的内容

      段寄存器:   ((ds)*16+(bx))表示段地址为ds内容,偏移地址为bx内容的内存单元的内容

      内存单元:   (20000H)表示20000H内存单元中的内容

    4.约定符号idata表示常量

    mov ax,idata  表示mov ax,1  mov ax,2  等

    mov ax,[idata]  表示mov ax,[1]   mov ax,[2]   等

    段寄存机不可用这种方式mov

    5.1[BX]

    mov ax,[bx]  把ds内容作为段地址,bx内容作为偏移地址的2个内存单元内容放到ax中

    mov [bx],ax  把ax内容放到ds内容作为段地址,bx内容作为偏移地址的2个内存单元中

    5.2 loop指令

    格式: loop 标号

    loop执行步骤:1.(cx)=(cx)-1   2.判断cx,不是0则转到标号位置执行

    例:计算2的12次方

    assume cs:code

    code segment

    mov ax,2

    mov cx,11

    s:add ax,ax

    loop s

    code ends

    end

    5.3用debug跟踪loop指令

    debug 1.exe

    -r

    -t

    -t

    ..

    -p (int 21H用p执行)

    1.如果想直接跳到CS:XX位置处执行用 -g XX

    2.如果想在循环中跳出,即结束循环后停下等待-t,  使用-p命令

    5.4 Debug和汇编编译器对指令的不同处理

      同一指令:

      mov ax,[0] 在debug中表示把DS:0和DS:1的内存单元内容放到ax中

            在masm中等于  mob ax,0

      如何解决汇编源程序问题 :

      1. mov bx,0     mov ax,[bx]

      2. mov ax,DS:[0]

    5.5 Loop和[bx]的联合应用

     计算ffff:0-ffff:b内存单元之和存入dx中:

    思考:1.结果存在dx中是否会超出范围? 一个内存单元存0-255  12个内存单元不会超出16位

       2.内存单元值8位怎么累加到dx 16位中? 将8位放到al中,然后ax累加到dx中

    程序:

    assume cs:code
    code segment

    mov ax,0ffffH
    mov ds,ax
    mov ax,0H
    mov bx,0H
    mov dx,0H
    mov cx,0CH
    s:mov al,ds:[bx]
    add dx,ax
    inc bx
    loop s

    mov ax,4c00H
    int 21H
    code ends
    end

    5.6段前缀

    mov ax,[bx]  表示将DS:bx地址字单元内容存到ax中

    在汇编代码里[bx]可以加前缀:   ds:   cs:    ss:    es: 表示段地址在哪个寄存器里,这些符号就是段前缀

    5.7一段安全的内存空间

    1.我们需要向内存中写入内容

    2.这段内存不能有数据,否则可能导致系统或其他软件出问题

    3.00200H到002ffH这段空间一般不会被使用,所以向内存写入一般就写这里 

    5.8段前缀的使用

    假设我们要把ffff:0-ffff:b的内容复制到0:200-0:20b中:

    1.取内容: mov al,[bx]

    2.存内容: mov [bx],al

    由于ffff和0 不在同一段里,所以取和存的时候ds需要来回切换 效率不高

    我们可以设置ds=ffff , es=0,   mov al,ds:[bx]  mov es:[bx],al 来提高效率

  • 相关阅读:
    ArcGIS Pro获得一个要素图层一种方法
    ArcGIS Pro layout clone
    ActiveMapViewChanged和选择变化
    ArcGIS Pro 改变栅格的数据源
    ArcGIS Pro自定义图标
    Windows Server 2016 路由和远程访问
    IIS应用程序池_缓存回收
    asp.net RSA密钥之C#格式与Java格式转换(PEM格式)
    MD5和Hash
    C# list与数组的转换
  • 原文地址:https://www.cnblogs.com/superzhao/p/4611300.html
Copyright © 2011-2022 走看看