文档介绍:封面
第五章
高级汇编语言程序设计
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
MASM 新特性
1
第五章高级汇编语言程序设计
第五章高级汇编语言程序设计
高级语言特性
宏结构程序设计
模块化程序设计
输入输出程序设计
本章重点及习题分析
MASM 新特性
2
高级语言特性
高级语言特性
通过引入一些伪指令,使汇编语言程序设计具有高
级语言程序设计的特性,即可以采用类似高级语言的形
式设计分支、循环和子程序结构,大大减轻了使用汇编
语言编程的工作量。
条件控制伪指令
循环控制伪指令
过程声明和调用伪指令
返回第五章
3
条件控制伪指令
条件控制伪指令
.IF/.ELSEIF/.ELSE/.ENDIF:类似高级语言的
IF/THIN,ELSE和ENDIF的相应功能。汇编时展开,自动
生成相应的比较和条件转移指令,实现分支结构。
.IF 条件表达式;条件为真,执行分支体1
分支体1
[.ELSEIF 条件表达式;前面IF[及前面ELSEIF]为假,
分支体2 ] ;当前条件为真,执行分支体2
[.ELSE ;前面IF[及前面ELSEIF]为假,
分支体3 ] ;执行分支体3
.ENDIF ;分支结束
4
条件控制伪指令
不考虑多层嵌套,有4种基本格式
.IF 条件表达式;条件表达式为真,执行
分支体;分支体,否则执行后面
.ENDIF ;语句
.IF 条件表达式
分支体1
.ELSE
分支体2
.ENDIF ;分支体1、2必做其一
1.
2.
5
条件控制伪指令
.IF 条件表达式
分支体1
.ELSEIF 条件表达式
分支体2 ;分支体1和分支体2可能
.ENDIF ;都不做
.IF 条件表达式;条件为真,执行分支体1
分支体1
.ELSEIF 条件表达式;前面IF[及前面ELSEIF],
分支体2 ;为假当前条件为真,执行分支体2
.ELSE ;前面IF[及前面ELSEIF]为假,
分支体3 ;执行分支体3
.ENDIF ;分支结束
3.
4.
6
条件表达式的三个问题
三个问题:
7
1),
第三章介绍的操作符用于数值表达式和地址表达式
(构成指令的操作数),两类操作符不可混淆。例如
表示相等,条件表达式用“==”,数值表达式用“EQ”;
表示逻辑与,条件表达式用“&&”,数值表达式用AND。
2)操作符可分为:比较、逻辑运算和测试三类,
其中测试又可分为:标志测试、位测试、寄存器测试、
存储单元测试(reg\mem)。
3)操作符中,单目操作符为!、标志测试、寄存器
测试和存储单元测试,其他都是双目操作符。
4)操作符的优先级可用圆括号规定。
8
reg ;寄存器不为0,条件为真;为0,条件为假
.if al
dec al
.endif
mem ;存储器不为0,条件为真;为0,条件为假
.if byte ptr[bx]
dec al
.endif
carry? / overflow? …
位测试操作符使用格式:
数值表达式& 位数
如“AL & 5”,测试AL寄存器的 D5。
9
/2
reg OP reg ;
ax==bx / al>=bl / al && bl
reg OP mem
reg OP 立即数
mem OP 立即数
单目操作符‘!’:可以放在前述任意表达式前面,测
试相反条件
!reg ;寄存器不为0,条件为假;为0,条件为真
注释:1)条件控制伪指令不支持数值表达式,如
.if (x+1)<=5,“+”并不是有效的操作符。
2)前述基本表达式可用“&&”、“||”连接构成复杂
表达式,如(ax==bx)&&(cx>=dx)。
10