王爽汇编第五章,[bx]和loop指令
阅读原文时间:2023年07月09日阅读:2

目录

王爽汇编第五章,[bx]和loop指令

[bx]之前我们介绍寄存器的时候,已经很详细的说明过了,bx是偏移寄存器用来索引,那么加上[]表示他是一个内存单元,段地址在ds寄存器中,偏移地址在bx中,计算方式:ds*16 + bx

looploop指令是一个循环指令,他的指令格式是loop 标号,CPU执行loop指令的之后,要进行两个步骤:

  • (cx) = (cx) - 1
  • 判断cx的值,不为0则转到标号出继续执行程序,直到cx为0才停止。

计算2的12次方

assume cs:code

code segment
start:
      mov ax,2
      mov cx,11;循环的次数
    s:add ax,ax;在汇编中标号其实代表一个地址.
      loop s

      ;程序退出
      mov ax,4c00h
      int 21h
code ends
end start

loop和[bx]的联合应用

问题:计算ffff:0 ~ ffff:b单元中的数据的和,结果存放在dx中。

解题思路:

  • 这些内存单元都是字节型数据范围在(0~255)中,12个字节的数据不会超过0xFFFF, 所以dx寄存器可以存下。

  • 对于8位的数据不能直接加到dx中,所以我们应当采用[bx]寻址。

    assume cs:code

    code segment
    start:;1
    mov ax,0ffffh ;设置段寄存器
    mov ds,ax
    ;2
    mov bx,0;从ffff:0开始寻址
    mov ax,0;sum
    ;3
    mov cx,0bh;循环次数
    s: mov al,ds:[bx]
    mov ah,0
    add dx,ax
    inc bx
    loop s

      ;程序退出
      mov ax,4c00h
      int 21h

    code ends
    end start

参考文献:

https://blog.csdn.net/qq_39654127/article/details/88698911

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章