MOV X Y //copy the value of Y to X
//where X equals to EAX, EBX
//ECX, EDX or 0x14(copy head_buf[Y]
//to EAX)
复制Y的值给X,X可以是EAX, EBX, ECX, EDX,或者0x14,此时是复制buffer[Y]的值给X
ADD X Y //add the value of Y to X
//where X equals to EAX, EBX
//ECX, EDX or 0x14(add head_buf[Y]
//to EAX)
增加Y的值到X上,X可以是EAX, EBX, ECX, EDX,或者0x14,此时是增加buffer[Y]的值到X
DEC X Y //decline the value of Y to X
//where X equals to EAX, EBX
//ECX, EDX or 0x14(decline head_buf[Y]
//to EAX)
减去Y的值到X上,X可以是EAX, EBX, ECX, EDX,或者0x14,此时是减去buffer[Y]的值到X
XOR //do an xor operation of EAX and
//EBX, the result saves in EAX
将EAX和EBX按位异或,结果存在EAX
CMP //compare EAX and EBX, if equals
//zero flag(ZF) will be set to 1
//else, ZF will be set to 0
比较EAX和EBX的值,相等ZF置0,否则置1
SYS_READ //read a string S from screen
//whose length is EBX and starting
//address is head_buf + EAX
从屏幕读取EBX长度的字符串并保存到buffer[EAX]的位置
SYS_WRITE //write a string S to screen
//whose length is EBX and starting
//address is head_buf + EAX
向屏幕写入EBX长度的字符串,起始位置是buffer[EAX]
JNZ X //if ZF is 0, the EIP curse will add X
//CAUTION: X is NOT abosolute address
如果ZF是0,实现跳转(注意所有的跳转是相对位置,就是数组下标差而不是绝对位置)
JZ X //if ZF is 1, the EIP curse will add X
//CAUTION: X is NOT abosolute address
如果ZF是1,实现跳转
JMP X //EIP curse will add X
无条件跳转
NOP //do nothing
空指令