BX和loop指令

一、[BX]和loop指令

1. BX

BX:数据寄存器。[bx]表示内存单元,偏移地址为bx,类似于[0],偏移地址为0。

2. loop指令

cpu执行loop指令时进行两步操作

  1. (cx)=(cx)-1;
  2. 判断cx中的值,不为0则转至标号处执行程序,如果为0则向下执行。

计算 $2^{12}$的值

assume cs:code
code segment
	mov ax,2
	mov cx,11
s:	add ax,ax
	loop s
	mov ax,4c00h
	int 21h
code ends
end

3. debug命令

r :查看寄存器的内容

t :执行当前命令

a :指定地址写入汇编指令

q :退出debug

g :从当前指令或指定地址开始运行程序

p : 类似于t,但会跳过子程序调用,可以用来执行loop指令,会重复执行直至(cx)=0

4. 段前缀

mov ax,ds:[bx]
mov ax,cs:[bx]
mov ax,ss:[bx]
mov ax,es:[bx]
mov ax,ss:[0]
mov ax,cs:[0]

访问内存单元的指令中用于显式指明内存单元的段地址ds:,cs:,ss:,es:,称为段前缀。

5. 实验4

(1)向内存0:200~0:23F依次传送数据0-63(3FH)。

assume cs:code
code segment
        mov ax,0020h
        mov ds,ax
        mov bx,0
        mov cx,64
        mov al,0
s: mov dl,al
   mov ds:[bx],dl
   inc bx
   inc al
   loop s
   mov ax,4c00h
   int 21h
code ends
end

(2)向内存0:200~0:23F依次传送数据0-63(3FH)。9条指令

assume cs:code
code segment
        mov ax,0020h
        mov ds,ax
        mov bx,0
        mov cx,64
s: mov ds:[bx],bl
   inc bx
   loop s
   mov ax,4c00h
   int 21h
code ends
end

image-20241121111337168