汇编Win32 汇编[34] – 宏汇编(1) 从接触 C 语言时, 我就不大喜欢宏; 但为了看懂别人的代码也不得不去了解. 宏可定义在源程序的任意位置, 但一般放在 .data 前面. 有些简单的宏可以用 equ、textequ 或 = 来代替, 但宏有更复杂的功能. “宏” 的本质是 “替换”, 但又像极了 “子过程”; 所以即有... 懒人 1416℃ 0评论 0喜欢
汇编Win32 汇编[32] – 子程序进阶 这是以前的一个求和函数的例子 ; Test32_1.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib ... 懒人 1320℃ 0评论 0喜欢
汇编Win32 汇编[31] – 结构与联合 结构和联合分别用 struct、union 定义, 都是 ends 结束定义. 它们使用方法相同, 并可以互相嵌套; 主要区别是后者的各成员共用同一个地址. 结构示例: ; Test31_1.asm .386 .model flat, stdcall include windows.inc include kernel32.inc... 懒人 1194℃ 0评论 0喜欢
汇编Win32 汇编[30] – 条件及循环伪指令: .IF、.WHILE、.REPEAT 等 .IF、.ELSEIF、.ELSE、.ENDIF: 条件伪指令 ;可以使用和 C 语言类似的条判断: a == b a != b a > b a >= b a < b a <= b a && b a & b a || b !a ;还可以直接判断几个常用的标志位: CARR... 懒人 1266℃ 0评论 0喜欢
汇编Win32 汇编[29] – 串指令: MOVS*、CMPS*、SCAS*、LODS*、REP、REPE、REPNE 等 这里的 “串” 并不单指字符串, 包括所有连续的数据(如数组); 串指令只用于内存操作. 移动串指令: MOVSB、MOVSW、MOVSD ;从 ESI -> EDI; 执行后, ESI 与 EDI 的地址移动相应的单位 比较串指令: CMPSB、CMPSW、CMPSD ;比较 ESI、EDI; 执行后, ES... 懒人 1074℃ 0评论 0喜欢
汇编Win32 汇编[28] – 跳转指令: JMP、JECXZ、JP 等 跳转指令分三类: 一、无条件跳转: JMP; 二、根据 CX、ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转)、JECXZ(ECX 为 0 则跳转); 三、根据 EFLAGS 寄存器的标志位跳转, 这个太多了. 根据标志位跳转的指令: JE ;等于则跳转 JNE ;不等于则跳转 JZ ;为 0 则跳转 JNZ ;不为 0... 懒人 1009℃ 0评论 0喜欢
汇编Win32 汇编[27] – 乘除指令: MUL、IMUL、DIV、IDIV MUL: 无符号乘 ;影响 OF、CF 标志位 ;指令格式: ;MUL r/m ;参数是乘数 ;如果参数是 r8/m8, 将把 AL 做乘数, 结果放在 AX ;如果参数是 r16/m16, 将把 AX 做乘数, 结果放在 EAX ;如果参数是 r32/m32, 将把 EAX 做乘数, 结果放在 EDX:EAX ; Tes... 懒人 1019℃ 0评论 0喜欢
汇编Win32 汇编[26] – 加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP ;INC(Increment): 加一 ;DEC(Decrement): 减一 ;NEG(Negate): 求补(求反) ;ADD(Add): 加 ;ADC(Add Carry): 带进位加 ;SUB(Subtract): 减 ;SBB(Subtract With Borrow): 带进位减 ;CMP(Compare): ... 懒人 1022℃ 0评论 0喜欢
汇编Win32 汇编[25] – 符号扩展指令: CBW、CWDE、CDQ、CWD CBW、CWDE、CDQ、CWD: 扩展指令 ;CBW(Convert Byte to Word): 将 AL 扩展为 AX ;CWDE(Convert Word to Extended Double): 将 AX 扩展为 EAX ;CDQ(Convert Doubleword to Quadword): 将 EAX 扩... 懒人 1464℃ 0评论 0喜欢
汇编Win32 汇编[24] – 移位: SHL、SHR SHL、SHR、SAL、SAR: 移位指令 ;SHL(Shift Left): 逻辑左移 ;SHR(Shift Right): 逻辑右移 ;SAL(Shift Arithmetic Left): 算术左移 ;SAR(Shift Arithmetic Right): 算术右移 ;其中的 SHL ... 懒人 1070℃ 0评论 0喜欢