void matrix(int *m1,int *m2,int *r,int x,int y,int z){ register int *m1p; register int *m2p; register int k; int row; int column; for(row=0;row<=x;b++) { for(column=0;column<=z;c++){ m1p=m1+row*y; m2p=m2+column; ...
(1)条件语句被执行前需要进行两个步骤:首先,使用CMP,AND,SUB之类的指令修改CPU标志;其次,使用条件跳转指令测试标志值并导致向新地址的分支转移。
(2)Jcond指令
Jcond 目标地址
格式中的cond指的是一个标志条件.用来表示一个或多个标志的状态。
默认情况下,MASM要求跳转的目标在当前过程之内,为了突破这种限制,可以声明一个全局变量(变量后面跟“::”)。而且跳转目标和跳转指令的下一条指令之间的偏移地址差必须在-128到+127字节范围之内。这是因为当条件跳转指令被转换成机器指令时,目的操作数是用一个8位的偏移值来表示的。
(3)条件...
1. AND指令
AND指令在每对操作数的对应数据位之间执行布尔(位)“与”操作,并将结果存放在
目的操作数中。
AND 目的操作数,源操作数
AND指令总是清除溢出标志和进位标志,它依据目的操作数的值修改符号标志、零标
志和奇偶标志。
2. OR指令
OR指令在每对操作数的对应数据位之间执行布尔“或”操作,并将结果存放在目的操
作数个
OR 目的操作数,源操作数
OR指令总是清除溢出标志和进位标志。它根据目的操作数的值修改符号标志、零标志、
奇偶标志。
3. XOR指令
XOR指令在每对操作数的对应数据位之间执行布尔“异或”操作.并将结果存放在...
1. PROC伪指令
可以将过程(procedure)非正式地定义为以RET语句结束的命名语句块。过程使用PROC和ENDP伪指令来声明.另外还必须给过程起一个名字(一个有效的标识符)。
创建除了程序启动过程之外的其他过程时应以RET指令结束,以强制CPU返回到过程被调目的地方,同时最后ENDP结束过程。
2. CALL和RET指令
CALL指令指示处理器在新的内存地址执行指令,以实现对过程的调用。在过程中使用RET(return from procedure )指令使处理器返回到程序中调用过程的地方继续执行。从底层细节角度来讲,CALL指令将返...
1. JMP指令
JMP 目标标号
JMP指令导致向代码段内的目标地址做无条件转移。目标地址必须由代码标号(编译
器翻译成地址)标识。
2. LOOP指令
LOOP指令提供了一种将程序块重复执行特定次数的简单方法:
LOOP 目的地址
LOOP指令的执行包括2步:首先ECX减1后与0比较,若ECX不等于0则跳转到
目的地址指定的标号处;若ECX等于0则不发生跳转,这时控制权将转移到紧跟在LOOP
后面的指令处。
实地址模式下,做默认循环计数器的是CX;任何模式情况下,LOOPD指令都使用ECX作为循环计数器,而LOOPW都使用...
1. 间接操作数
间接操作数可以是任何用方括号括起来的32位通用寄存器(EAX,EBX,ECX,EDX,
ESI,EDI,EBP和ESP),寄存器里面存放数据的偏移。
PTR与间接操作数的联合使用:操作数的大小通常不明确,如:inc [esi]编译器在编译时会产生“operand must have size”的错误信息,可以使用PTR操作符明确地表示操作数的尺寸:inc BYTE PTR [esi]
2. 变址操作数
变址操作数将常量加到寄存器上以产生一个有效的地址,任何32位通用寄存器都可以
作为指针寄存器,MASM中允许使用两种...
1. OFFSET操作符、
OFFSET操作符返回数据标号的偏移地址,偏移地址代表标号距数据段开始的距离,单
位是以字节计算的,保护模式下偏移总是32位长的,实模式下偏移只有16位。
2. ALIGN伪指令
ALIGN伪指令将变量的位置按字节、字和双字边界对齐,格式:
ALIGN 边界值
边界值可以是1,2或4。
3. PTR操作符
PTR操作符重载操作数的默认尺寸。PTR必须和标准数据类型联合使用:BYTE、SBYTE、
WORD、SWORD、DWORD、SDWORD、FWORD、QWORD或TBYTE。
如假设将双字节变量的低16位送至AX...
1. INC和DEC指令
INC和DEC指令从操作数中加1或减1。
2. ADD指令
ADD 目的操作数,源操作数
加法操作不改变源操作数,相加的结果在目的操作数中。
3. SUB指令
SUB 目的操作数,源操作数
4. NEG指令 通过数字转换伟对应的二进制补码而求得其相反数。
NEG reg
NEG mem
5. 算术运算影响的标志
(1) 零标志和符号标志
算术指令的目的操作数赋予零值时,零标志就被相应设置
算术运算结果为负值时,符号标志就被设置
(2) 进位标志(无符号算术运算)
如果无符号加减法运算的结...