目录
[bx]
之前我们介绍寄存器的时候,已经很详细的说明过了,bx是偏移寄存器用来索引,那么加上[]表示他是一个内存单元,段地址在ds寄存器中,偏移地址在bx中,计算方式:ds*16 + bx
loop
loop指令是一个循环指令,他的指令格式是loop 标号,CPU执行loop指令的之后,要进行两个步骤:
计算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
参考文献:
手机扫一扫
移动阅读更方便
你可能感兴趣的文章