论坛
门户
内部优惠
喜欢
话题
VIP会员
搜索
新浪微博
登录
注册
100%
100%
首页
>
软件开发
>
汇编语言
>
经典汇编语言教程:7.2.2 子程序的举例
回复
« 返回列表
111111
精灵王
注册日期
2010-12-08
发帖数
640
QQ
火币
1103枚
粉丝
120
关注
75
加关注
写私信
打招呼
阅读:
2944
回复:
0
经典汇编语言教程:7.2.2 子程序的举例
楼主
#
更多
只看楼主
倒序阅读
发布于:2013-01-25 17:57
保存
100%
100%
[]
1
例7.1 编写一个子程序UPPER,实现把寄存器AL中存放的字符变大写。
解:
;子程序功能:把AL中存放的字符变大写
;入口参数:AL
;出口参数:AL
;算法描述:判断AL中字符必须在'a'~'z'之间才能把该字符变为大写
UPPER
PROC
CMP
AL, 'a'
;书写'a'的ASCII码61H也可以
JB
over
CMP
AL, 'z'
JA
over
SUB
AL, 20H
;书写指令AND AL, 0DFH也可以
over:
RET
UPPER
ENDP
例7.2编写一个求字符串长度的子程序StrLen,该字符串以0为结束标志,其首地址存放在DS:DX,其长度保存在CX中返回。
解:
;子程序功能:求字符串的长度
;入口参数:DS:DX存放字符串的首地址,该字符串以0为结束标志
;出口参数:CX存放该字符串的长度
;算法描述:用BX来指针来扫描字符串中的字符,如果遇到其结束标志,则停止扫描字符串操作
StrLen
PROC
PUSH
AX
PUSH
BX
;用堆栈来保存子程序所用到的寄存器内容
XOR
CX, CX
XOR
AL, AL
MOV
BX, DX
again:
CMP
[BX], AL
JZ
over
INC
CX
;增加字符串的长度
INC
BX
;访问字符串的指针向后移
JMP
again
over:
POP
BX
;恢复在子程序开始时所保存的寄存器内容
POP
AX
RET
StrLen
ENDP
喜欢
0
评分
0
最新喜欢:
回复
100%
发帖
回复
« 返回列表
普通帖
您需要登录后才可以回帖,
登录
或者
注册
100%
返回顶部
关闭
最新喜欢