任务:把0000:3000H开始的连续16字节空间分别赋值为00H到0FH
CODE SEGMENT;定义代码段
ASSUME CS:CODE
START:
SUB AX,AX;将AX中数据清零
MOV DS,AX;将AX中数据传给DS,即DS清零
MOV SI,3000H;将SI赋值为3000H,此时地址即为0000:3000H
MOV CX,16;将16赋值给CX
AA1:
MOV [SI],AL;AL此时为0,将AL中的值传给偏移地址为SI的存储空间
INC SI;SI自增1
INC AL;AL自增1
LOOP AA1;循环AA1片段,LOOP指令每执行一次自动将CX值减一,直到CX为零退出
MOV AH,4CH;4CH,返回DOS系统的入口参数
INT 21H;DOS功能调用
CODE ENDS;代码段结束
END START
将一个寄存器中的值清零,常用的命令有
SUB AX,AX
或者
XOR AX,AX
调用LOOP指令需要事先为CX赋值,CX中的值即为LOOP指令需要执行的次数,与C语言中的
int a = 一个数;
while(a){
...
a--;
}
功能类似
INT 21H
是DOS功能调用指令,需要把功能号放在AH中,经过测试,AL中的值不影响功能调用,也就是上面代码段