[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 | assume cs:code |
汇编编译器的小问题:
汇编编译器中,数据不能以字母开头,所以FFFFH需要改为0FFFFH。
有些汇编编译器不能识别[数字],故一般使用[bx].
Loop和[bx]的联合使用:
为了类型的匹配和结果的不超界,可以使用Loop和[bx]联合的方法。
一段安全的内存空间:
DOS和其他合法程序一般都不会使用0:200~0:2ff的256个字节的空间。