汇编语言程序设计(第二版)第五章PPT课件

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

mov al,_a
imul _c
mov cx,4
imul cx
例5.1-1/2
;bx中为b2 ;ax中为4ac
例5.1-2/2
.if sword ptr bx >= ax ;比较二者大小 mov tag,1
;第一分支体:条件满足,tag←1 .else
mov tag,0 ;第二分支体:条件不满足,tag←0 .endif .exit 0
;执行分支体
;前面IF条件为假
;执行分支体 ]
;分支结束
条件
;单分支结构
例题
.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
.else .break
.endif inc bx inc bx .untilcxz mov result,ax
例5.2
第5 章
5.1.3 过程声明和过程调用伪指令
过程名 PROC 调用距离 语言类型 作用范围 <起始参数>
USES 寄存器列表, 参数:类型
LOCAL 参数表 …
;汇编语言语句
如何调 用
——宏汇编时实现
宏的参数功能强大,颇具特色 配合宏,还有宏操作符和有关伪指令
-
宏定义
宏名 macro [形参表] 宏定义体 endm
mainbegin
MACRO ;;定义名为mainbegin的宏,无参数
mov ax,@data
;;宏定义体
mov ds,ax ENDM
宏注释符 ;;宏定义结束
mainend
宏汇编 重复汇编 条件汇编 ——统称宏结构
宏(Macro)是汇编语言的一个特 点,它是与子程序类似又独具特色的 另一种简化源程序的方法
-
第5 章
5.2.1 宏汇编
宏——具有宏名的一段汇编语句序列 ——宏定义时书写
宏指令——这段汇编语句序列的缩写 ——宏调用时书写
宏展开——宏指令处用这段宏代替的过 程
第5 章
5.1.2 循环控制伪指令
➢WHILE结构的循环控制伪指令
.WHILE 条件表达式 ;条件为真 循环体 ;执行循环体
.ENDW ;循环体结束
➢UNTIL结构的循环控制伪指令
.REPEAT ;重复执行循环体 循环体
.UNTIL 条件表达式 ;直到条件为真
-
求1~100之和
;WHILE结构 xor ax, ax mov cx,100 .while cx!=0 add ax,cx dec cx .endw mov sum,ax
过程名 ENDP
➢要 调 用 带➢参过数程声过明程伪定指义令:的用过于程事,先声不明应过采程用的结构 CALL指令过,程因名为比较PR烦O琐TO 调用距离 语言类型, 参数:类型 ➢应该采用过程调用伪指令INVOKE ➢使 用 INV➢O过K程E调伪用伪指指令令的 前 提 是 需 要 用 PROTO伪指令对过程IN进VO行K声E 明过程名,参数,...
第5 章
教学重点
在掌握基本的汇编语言程序 设计方法之后,进一步学习 如何提高编程效率的各种实 用方法: ✓高级语言特性 ✓宏结构 ✓模块化
-
第5 章
5.1 高级语言特性
➢MASM 6.0引入高级语言的程序设计 特性
条件控制伪指令
.IF .ELSE .ENDIF
循环控制伪指令
.WHILE .ENDW .REPEAT .UNTIL
;数组的元素个数
result db ?
;校验和
.code
.startup
INVOKE checksumd,count,offset array
;调用过程
mov result,al
;保存校验和
.exit 0
列表文件
例5.3-2/2
checksumd PROC c USES bx cx,\
countp:word,arrayp:word
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
➢ 宏调用的实质是在汇编过程中进行宏展开
➢ 宏展开的具体过程是:当汇编程序扫描源程序遇 到已有定义的宏调用时,即用相应的宏定义体取代 源程序的宏指令,同时用位置匹配的实参对形参进 行取代
MACRO retnum mov al,retnum mov ah,4ch int 21h ENDM
;;带有形参retnum ;;宏定义中使用参数
宏调用
宏名 [实参表]
start: mainbegin dispmsg string mainend 0 end start
;宏调用,建立DS内容 ;宏调用,显示字符串 ;宏调用,返回DOS
过程声明和过程调用伪指令
.PROTO .INVOKE
-
第5 章
5.1.1 条件控制伪指令
➢ 类似高级语言中IF、THEN、ELSE和ENDIF 的相应功能
➢ 在汇编时要展开,自动生成相应的比较和条 件转移指令序列,实现程序分支
.IF 条件表达式 分支体
[ .ELSE 分支体
.ENDIF
-Fra Baidu bibliotek
;条件为真(值为非0)
;UNTIL结构 xor ax, ax mov cx,100 .repeat add ax,cx dec cx .until cx==0 mov sum,ax
mov cx,100 xor ax,ax lea bx,array .repeat
.if sword ptr [bx] >= 0 add ax,[bx]
-
;汇编语言程序:lt503.asm
例5.3-1/2
.model small
checksumd PROTO c,:word,:word
;声明过程
.stack
.data
array db 12h,25h,0f0h,0a3h,3
db 68h,71h,0cah,0ffh,90h
count equ $-array
mov bx,arrayp ;BX←数组的偏移地址
mov cx,countp ;CX←数组的元素个数
xor al,al
sumd: add al,[bx] ;求和:AL←AL+DS:[BX]
inc bx
loop sumd
ret
checksumd endp end
列表文件
第5 章
5.2 宏结构程序设计
相关文档
最新文档