第 5 章
教学重点
在掌握基本的汇编语言程序设计方法之后,进一步学习如何提高编程效率的各种实用方法:
高级语言特性
宏结构
模块化
高级语言特性
MASM
条件控制伪指令
.IF .ELSE .ENDIF
循环控制伪指令
.WHILE .ENDW .REPEAT .UNTIL
过程声明和过程调用伪指令
.PROTO .INVOKE
条件控制伪指令
类似高级语言中IF、THEN、ELSE和ENDIF的相应功能
在汇编时要展开,自动生成相应的比较和条件转移指令序列,实现程序分支
.IF 条件表达式 ;条件为真(值为非0)
分支体 ;执行分支体
[ .ELSE ;前面IF条件为假
分支体 ;执行分支体]
.ENDIF ;分支结束
条件
条件表达式中的操作符
操作符
功能
操作符
功能
操作符
功能
==
等于
&&
逻辑与
CARRY?
CF=1?
!=
不等于
||
逻辑或
OVERFLOW?
OF=1?
>
大于
!
逻辑非
PARITY?
PF=1?
>=
大于等于
SIGN?
SF=1?
<
小于
&
位测试
ZERO?
ZF=1?
<=
小于等于
()
改变优先级
第 5 章
;单分支结构
.IF AX < 0
neg ax
.ENDIF
mov result,ax
;双分支结构
.IF ax==5
mov bx,ax
mov ax,0
.ELSE
dec ax
.ENDIF
;双分支结构
.IF ax==5
* cmp ax,05h
* jne ***@C0001
mov bx,ax
mov ax,0
.ELSE
* jmp ***@C0003
****@C0001: dec ax
.ENDIF
****@C0003:
例题
.data
_a sbyte ?
_b sbyte ?
_c sbyte ?
tag byte ?
.code
.startup
mov al,_b
imul al
mov bx,ax ;bx中为b2
mov al,_a
imul _c
mov cx,4
imul cx ;ax中为4ac
-1/2
.if sword ptr bx >= ax ;比较二者大小
mov tag,1
;第一分支体:条件满足,tag←1
.else
mov tag,0
;第二分支体:条件不满足,tag←0
.endif
.exit 0
-2/2
循环控制伪指令
WHILE结构的循环控制伪指令
.WHILE 条件表达式 ;条件为真
循环体 ;执行循环体
.ENDW ;循环体结束
UNTIL结构的循环控制伪指令
.REPEAT ;重复执行循环体
循环体
.UNTIL 条件表达式 ;直到条件为真
WHILE循环结构的流程图
第 5 章
第5章 高级汇编语言程序设计 来自淘豆网m.daumloan.com转载请标明出处.