中断这玩意,看了很久,终于发现,要写一个中断程序,要不然理解不了所以写一个中断程序,来理解中断
pushf 表示寄存器的值入栈
popf从栈中弹出数据,送入标志寄存器中
iret指令:
pop ip
pop cs
popf
DF,方向标志位。在串处理指令中,控制每次操作后si,di的增减
DF=0,每次操作后si,di递增;
DF=1,每次操作后si,di递减;
串传送指令:movsb
功能:执行movsb相当于:
1.((es)*16+(di))=((ds)*16+(si))
2.如果DF=0,则:(si)=(si)+1 (di)=(di)+1
如果DF=1,则:(si)=(si)-1 (di)=(di)-1
用汇编语法描述movsb的功能:
mov es:[di],byte ptr ds:[si]
movsb的功能是将ds:si指向的内存单元中的字节送入es:di中,然后根据标志寄存器DF的值,将si和di递增或递减
cld: clear direction 设置DF=0;
std:set direction 设置DF=1;
rep movsb
用汇编语法来描述:
s:movsb
loop s
rep的作用是根据cx的值,重复执行后面的串传送指令,由于每次执行movsb,指令si和di都会递增或递减指向后一个单元或前一个单元,
则rep movsb 就可以循环实现(cx)个字符的传送
编程:用串传送指令,将data段中的第一个字符串复制到它后面的空间上
data segment