汇编语言程序设计笔记_Loop

[bx]和Loop指令

[bx]是什么?实际指代内存单元中的内容。基址默认是ds中。内存单元大小可以通过上下文判断。

push ax:(sp)=(sp)-2 ((ss)*16+(sp))=ax

pop ax:(ax)=((ss)*16+(sp)) (sp)=(sp)+2

Loop指令:

执行步骤:

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

要点:

  • (cx)为实际执行循环次数。
  • loop指令中的标号所标识的地址要在前面。
  • 要循环执行的程序段,要写在标号和loop指令之间。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
assume cs:code
code segment
mov bx,0
mov cx,12
mov ax,0ffffh
mov ds,ax
mov ax,0020h
mov es,ax
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s

mov ax,4c00h
int 21h
code ends
end

汇编编译器的小问题

汇编编译器中,数据不能以字母开头,所以FFFFH需要改为0FFFFH。

有些汇编编译器不能识别[数字],故一般使用[bx].

Loop和[bx]的联合使用:

为了类型的匹配和结果的不超界,可以使用Loop和[bx]联合的方法。

一段安全的内存空间:

DOS和其他合法程序一般都不会使用0:200~0:2ff的256个字节的空间。

0%