1、标号的含义
在源程序的编译阶段,编译器会把源程序做为一个独立的段来处理,并从0开始计算每一条指令的地址,每条指令的地址是相对于程序开头的偏移量,以字节计算,这个地址叫汇编地址,汇编地址和装入内存后的段内偏移地址是一样的。NASM中的标号就是表示该指令的汇编地址。
2、指令DB、DW、DD、DQ用来声明字节、字、双字、四字,它们不是处理器指令,而是编译器提供的汇编指令,被称为伪指令。
3、div除法指令:若被除数是16位,被除数放到AX中,指令执行后,商保存在AL中,余数在AH中;
若被除数是32位,被除数的高16位放到DX中,低16位放到AX中,指令执行后,商保存在AX 中,余数在DX中。
4、xor异或指令:相对应的位相同为0,不同为1.
5、times伪指令:用于重复它后面的指令,例:times 10 mov ax, bx
6、movsb、movsw指令:通常用于把数据从内存中的一个地方批量复制到另一个地方,movsb传送以字节为单位,movsw以字为单位;movsb或movsw指令源地址由DS:SI指定,目的地址由ES:DI指定,传送的数目由CX指定,由FLAGS标志寄存器中的第10位DF来决定是正向传送还是反向传送(正向是从内存的低地址到高地址),正向传送时,每传送一个字节或字,SI和DI都要加上1或2,反向则减去1或2。
7、rep指令:重复执行它后面的指令,直到CX为0为止。
8、loop指令:首先将CX减一,若CX不为零,转移到指定位置执行,否则顺序执行后面的指令;
9、neg指令:把后面的操作数正数变负数,负数变正数;
10、cbw、cwd指令:cbw把8位扩展为16位,cwd把16位扩展为32位;
11、cld、std指令:cld将FLAGS中的DF清零,表示传送是正向的,std表示是反向的;
阅读(4411) | 评论(0) | 转发(0) |