首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

学 Win32 汇编[八]: 算术运算符、关系操作符、逻辑操作符、高低分离符和移位运算符

2012-10-10 
学 Win32 汇编[8]: 算术运算符、关系操作符、逻辑操作符、高低分离符和移位运算符算术运算符名称优先级()圆括

学 Win32 汇编[8]: 算术运算符、关系操作符、逻辑操作符、高低分离符和移位运算符
算术运算符名称优先级()圆括号1+,-正、负2*,/乘、除3MOD取模3+,-加、减4


算术运算符示例:

; Test8_1.asm.386.model flat, stdcallinclude    windows.incinclude    kernel32.incinclude    masm32.incinclude    debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codestart:?   PrintDec 7 + 3   ;10?   PrintDec 7 - 3   ;4?   PrintDec 7 * 3   ;21?   PrintDec 7 / 3   ;2?   PrintDec 7 mod 3  ;1?   PrintDec 7 / 3 + 4  ;6?   PrintDec 7 / (3 + 4) ;1?   retend start


关系操作符(EQ、NE、LT、LE、GT、GE)示例:

;EQ: 等于;NE: 不等于;LT: 小于;LE: 小于等于;GT: 大于;GE: 大于等于; Test8_2.asm.386.model flat, stdcallinclude    windows.incinclude    kernel32.incinclude    masm32.incinclude    debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codestart:    ;EQ : =?   PrintDec 2 eq 1  ;0?   PrintDec 2 eq 2  ;-1?   PrintDec 2 eq 3  ;0?       ;NE : <>?   PrintDec 2 ne 1  ;-1?   PrintDec 2 ne 2  ;0?   PrintDec 2 ne 3  ;-1?       ;LT : <?   PrintDec 2 lt 1  ;0?   PrintDec 2 lt 2  ;0?   PrintDec 2 lt 3  ;-1?       ;LE : <=?   PrintDec 2 le 1  ;0?   PrintDec 2 le 2  ;-1?   PrintDec 2 le 3  ;-1?       ;GT : >?   PrintDec 2 gt 1  ;-1?   PrintDec 2 gt 2  ;0?   PrintDec 2 gt 3  ;0?       ;GE : >=?   PrintDec 2 ge 1  ;-1?   PrintDec 2 ge 2  ;-1?   PrintDec 2 ge 3  ;0?   retend start


逻辑操作符(AND、OR、XOR、NOT)示例:

; Test8_3.asm.386.model flat, stdcallinclude    windows.incinclude    kernel32.incinclude    masm32.incinclude    debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codestart:?   PrintHex 0FFFFFFFFh and 0FFFF0000h  ;FFFF0000?   PrintHex 0FFFFFFFFh or  0FFFF0000h  ;FFFFFFFF?   PrintHex 0FFFFFFFFh xor 0FFFF0000h  ;0000FFFF?   PrintHex not 0FFFF0000h?   ?   ?    ;0000FFFF?   retend start


高低分离符(HIGH、LOW、HIGHWORD、LOWWORD)示例:

; Test8_4.asm.386.model flat, stdcallinclude    windows.incinclude    kernel32.incinclude    masm32.incinclude    debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codestart:?   PrintHex high?   ?    1122h  ;11?   PrintHex low?   ?     1122h  ;22?   PrintHex high?    11223344h  ;33?   PrintHex low?     11223344h  ;44?   PrintHex highword 11223344h  ;1122?   PrintHex lowword  11223344h  ;3344?   retend start


移位运算符(SHL、SHR)示例:

; Test8_5.asm.386.model flat, stdcallinclude    windows.incinclude    kernel32.incinclude    masm32.incinclude    debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codestart:?   PrintHex 12345678h shl 4  ;23456780?   PrintHex 12345678h shl 8  ;34567800?   PrintHex 12345678h shr 4  ;01234567?   PrintHex 12345678h shr 8  ;00123456?   retend start


以上运算符(或伪指令)有些和汇编(硬)指令重名, 区别在于它们只用于常数表达式, 并在编译期出结果.

伪指令? (硬)指令?
MASM 的伪指令是 MASM 提供的, 它们告诉编译期如何编译, 其作用在生成 obj 文件之前;
(硬)指令是 CPU 提供的, 都有对应的二进制码, 它们作用在程序运行时.

热点排行